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

WordPress主题home.php做博客页时无法正确获取页面标题与特色图

问题原因

当你在WordPress后台完成静态首页配置、单独指定博客页面作为文章列表页后,WordPress会自动改写该页面对应的全局主查询规则:原本查询单页面数据的逻辑会被替换为查询最新文章列表的逻辑。此时全局$post对象默认指向文章列表的第一篇文章,直接调用the_title()、the_post_thumbnail()这类默认读取全局$post的模板标签时,自然会输出第一篇文章的内容,而非你创建的博客页面本身的属性。
page.php、front-page.php没有该问题的原因是:page.php对应普通单页面的模板,主查询始终查询当前页面本身的数据;front-page.php是静态首页专属模板,主查询也对应静态首页的页面数据,不会被替换为文章列表查询。

解决方法

通过WordPress内置选项读取博客页面的ID,直接基于ID获取页面的标题和特色图即可,该方案不会影响后续正常的文章列表循环输出,是兼容性最高的处理方式。

修改后的home.php参考代码如下:

<?php get_header(); ?>
<?php 
// 读取后台设置的博客页面ID
$blog_page_id = get_option( 'page_for_posts' );
?>
<section class="header--page">
    <div class="header--img">
        <?php echo get_the_post_thumbnail( $blog_page_id ); ?>
    </div>
    <div class="container">
        <h1><?php echo get_the_title( $blog_page_id ); ?></h1>
    </div>
</section>

<!-- 下方可以正常编写博客列表的循环逻辑 -->
<?php if ( have_posts() ) : ?>
    <?php while ( have_posts() ) : the_post(); ?>
        <!-- 此处编写单篇文章的输出代码 -->
    <?php endwhile; ?>
    <!-- 分页代码可放在此处 -->
<?php endif; ?>

<?php get_footer(); ?>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 01:39:00