本文约 4,902 字,预计阅读 13 分钟。文中命令与配置均经过实测,可直接参考执行。
引言:默认设置不一定是最佳选择
WordPress 装好之后,首页默认显示「最新文章」。对博客来说这挺合理:新内容一发布就出现在首页,抓取器来访时能第一时间发现。但对更多场景——外贸落地页、SaaS 产品站、本地服务站点——首页需要的是精心编排的转化路径,而不是按时间倒序的流水账。
问题在于两端都有反面案例:有人的首页做成静态页后,新文章失去了首页这个最容易被抓取的入口,收录速度明显变慢;也有人的首页坚持显示最新文章,结果首页堆满列表,访客找不到联系方式和核心卖点。选择的关键不是「哪个更好」,而是站点的核心目标是什么。本文把这个决策拆成可判断的条件,并说明切换过程中的技术细节。
原理分析:show_on_front 决定了两个页面和两套模板
WordPress 的「设置 → 阅读」里那个选项,实际写的是 show_on_front 这个 option,取值 posts 或 page:
| show_on_front | 首页渲染的模板 | is_front_page() |
is_home() |
|---|---|---|---|
posts |
home.php → index.php |
true | true |
page(指定静态页) |
front-page.php → page.php → index.php |
true | false |
page(文章页 page_for_posts) |
home.php → index.php |
false | true |
注意 is_home() 的语义很反直觉:它判断的是「文章列表页」,不是「站点首页」。设为静态首页后,is_home() 只在那个被指定为「文章页」的页面上为真。很多主题在 functions.php 里用 is_home() 判断首页加载资源,切换模式后这些判断会集体失效——这是切换后最常见的「样式不对了」的原因。
front-page.php 是优先级最高的首页模板,只要它存在,无论阅读设置如何,首页都会用它。这也意味着:如果你想让首页显示最新文章,就别放 front-page.php,否则设置会失效。
收录层面的差异来自两点:一是抓取频率,首页通常是抓取器来访最频繁的页面,静态首页意味着新文章失去了这个入口;二是内链深度,静态首页如果没放文章列表模块,文章离首页的点击距离会变远。解决办法很简单:在静态首页里留一个「最新文章」区块,把入口补回来。
保姆级实操
- 明确站点目标:以内容订阅、SEO 流量为主的博客倾向最新文章;以获取询盘、销售为主的业务站倾向静态首页。
- 混合方案优先:静态首页 + 首页底部放最新文章/热门文章区块,两头都要。
- 建两个页面:新建「首页」和「博客」两个页面,在「设置 → 阅读」里分别指定。
- 处理模板:按需建
front-page.php;保留home.php给文章列表页。 - 修正条件判断:把主题里所有
is_home()的误用改成is_front_page()或is_home()的正确组合。 - 补入口与新内容信号:首页加最新文章区块;确保 sitemap 与 RSS 正常。
- 验证:切换后检查首页标题、canonical、文章列表页 URL 是否符合预期。
<?php
// 子主题 functions.php:只在真正的首页加载首页专有样式,文章列表页另有样式
add_action( 'wp_enqueue_scripts', 'mimangfei_front_page_assets' );
function mimangfei_front_page_assets() {
if ( is_front_page() && ! is_home() ) {
// 静态首页:加载落地页样式
wp_enqueue_style(
'mimangfei-landing',
get_stylesheet_directory_uri() . '/assets/css/landing.css',
array(),
wp_get_theme()->get( 'Version' )
);
}
if ( is_home() ) {
// 文章列表页(可能是首页,也可能是 /blog/)
wp_enqueue_style(
'mimangfei-blog-list',
get_stylesheet_directory_uri() . '/assets/css/blog-list.css',
array(),
wp_get_theme()->get( 'Version' )
);
}
}
<?php
// 静态首页底部保留「最新文章」区块,补回抓取入口与内链
add_action( 'mimangfei_front_page_sections', 'mimangfei_front_latest_posts' );
function mimangfei_front_latest_posts() {
$q = new WP_Query( array(
'posts_per_page' => 6,
'no_found_rows' => true,
'ignore_sticky_posts' => true,
) );
if ( ! $q->have_posts() ) {
return;
}
?>
<section class="front-latest" aria-labelledby="front-latest-title">
<h2 id="front-latest-title">最新文章</h2>
<ul class="front-latest__list">
<?php
while ( $q->have_posts() ) :
$q->the_post();
?>
<li>
<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
<time datetime="<?php echo esc_attr( get_the_date( DATE_W3C ) ); ?>">
<?php echo esc_html( get_the_date() ); ?>
</time>
</li>
<?php
endwhile;
wp_reset_postdata();
?>
</ul>
<a class="front-latest__more" href="<?php echo esc_url( get_permalink( get_option( 'page_for_posts' ) ) ); ?>">
查看全部文章
</a>
</section>
<?php
}
<?php
// front-page.php:静态首页模板骨架
get_header();
?>
<main id="primary" class="site-main site-main--landing">
<?php
while ( have_posts() ) :
the_post();
the_content();
endwhile;
// 首页下方的转化区块与最新文章
do_action( 'mimangfei_front_page_sections' );
?>
</main>
<?php
get_footer();
常见踩坑
- 主题里有
front-page.php导致设置失效:无论阅读设置怎么改,首页永远渲染这个模板。想显示最新文章就必须删掉或重命名它。 is_home()与is_front_page()混用:切换模式后所有is_home()判断集体错位,表现为首页样式丢失、脚本不加载。逐个排查并明确区分两个语义。- 案例:某企业站把首页改成静态页后,新发布的文章一周都没被收录,之前通常是当天收录。排查发现首页的「最新文章」模块是用 JS 从 REST API 拉的,抓取器拿不到这些链接;同时 sitemap 插件被关掉了。补上服务端渲染的文章列表模块并恢复 sitemap 后,收录速度恢复。教训:首页的入口必须是服务端渲染的真实链接。
page_for_posts页面被设为 noindex:SEO 插件里误勾了 noindex,文章列表页不被收录,文章少了一层入口。检查该页面的索引设置。- 首页分页失效:静态首页上放自定义查询的文章列表,第 2 页返回 404。自定义查询必须处理
paged,且 URL 结构要与page_for_posts区分。相关处理见主题分页与 SEO:rel=next/prev 的现状。 - 两个页面标题重复:「首页」和「博客」两个页面标题相近,需在 SEO 插件里分别设置标题与描述。
- 首页 canonical 指向错误:静态首页带
/home/这样的 slug 时,可能同时存在https://example.com/与https://example.com/home/两个可访问地址。给后者做 301。 - 导航菜单出现两个「首页」:菜单里手动加了首页页面,又有主题自带的首页链接。用「设置 → 阅读」指定后,菜单里只保留一个入口。
总结
选择依据只有一句话:首页是给「找内容的人」还是给「找服务的人」看的。前者用最新文章,后者用静态页,而绝大多数站点应该用「静态页 + 服务端渲染的最新文章区块」的混合方案。行动清单:明确目标 → 建两个页面并在阅读设置里指定 → 按需建 front-page.php → 把所有 is_home() 判断改成语义准确的版本 → 首页补真实链接的文章列表 → 检查两个页面的标题、canonical、noindex → 观察收录速度变化。首页定下来之后,可以顺势优化 主题搜索结果页体验优化,把站内发现内容的第二条通路也做好。
