You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

单页网站Page内容嵌入求助:替代Posts使用Pages的实现问题

如何在WordPress区块中嵌入指定Page的内容

我来帮你搞定这个问题!你之前的代码其实已经找对了方向,但有几个关键细节没处理到位,导致没达到预期效果。咱们一步步来修正:

先拆解你现有代码的问题

你写的这段代码里:

<?php $page = get_post( 58 ); echo '<h2>'; $title = $page->post_title; echo '</h2>'; $content = apply_filters( 'the_content', $page->post_content ); ?>

存在三个核心问题:

  • 你给$title变量赋了值,但没有输出它,所以页面上只会显示空的<h2></h2>标签
  • 处理后的$content变量也没有echo输出,导致内容完全不会显示
  • 缺少对$page是否存在的判断,如果ID为58的页面被删除/不存在,会直接抛出PHP错误

修正后的基础可用代码

下面是能正常工作的基础版本,补上了输出逻辑和安全判断:

<?php
// 获取指定ID的页面(这里ID是58)
$page = get_post(58);

// 确保页面存在再执行后续逻辑,避免报错
if ($page) {
    // 输出页面标题,用esc_html转义避免XSS安全问题
    echo '<h2>' . esc_html($page->post_title) . '</h2>';
    
    // 处理并输出页面内容:apply_filters会自动解析短代码、转换格式
    $content = apply_filters('the_content', $page->post_content);
    echo $content;
}
?>

更灵活的进阶实现(可选)

如果你想通过页面标题而非ID获取内容(避免ID变动导致失效),可以用get_page_by_title():

<?php
// 通过页面标题精准获取页面,第二个参数指定为OBJECT,第三个参数限定为page类型
$page = get_page_by_title('你的目标页面标题', OBJECT, 'page');

if ($page) {
    echo '<h2>' . esc_html($page->post_title) . '</h2>';
    echo apply_filters('the_content', $page->post_content);
} else {
    // 页面不存在时的提示(可选)
    echo '<p>指定的页面未找到,请检查标题是否正确</p>';
}
?>

为什么一定要用apply_filters('the_content')?

直接输出$page->post_content会得到数据库里的原始内容(比如带未解析的短代码、纯文本换行),而通过apply_filters('the_content')可以让WordPress自动处理:

  • 解析短代码为实际内容
  • 把换行转换为<p>标签
  • 应用主题设置的内容格式
  • 执行插件或主题添加的其他内容过滤逻辑

这样嵌入的内容就和你在页面编辑器里看到的效果完全一致了。

内容的提问来源于stack exchange,提问作者ABoooo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:24:35