从零搭建WP避坑:首页不显示post的5个狠招
网站被黑挂马不知道怎么办?别慌,先检查代码。很多新手从零搭建WordPress站,刚上线就遇到首页空白或文章消失,其实是配置踩了雷。今天用广东做站的实战经验,手把手教你排查“wordpress首页不显示post”这个老坑,5分钟搞定,省得再被忽悠花钱修站。
需求分析:为什么首页会“隐身”你的文章?
别觉得“首页不显示post”是玄学,90%的情况都逃不出这4个原因:
- 主题设置里,首页被锁死了:比如默认显示静态页面,却忘了关联文章。
- 文章状态不对:草稿、私有、密码保护,这些文章首页自然不露脸。
- 缓存插件作妖:W3 Total Cache、WP Super Cache缓存了旧页面,新文章死活刷不出来。
- 数据库表损坏:
wp_posts表或wp_postmeta表出问题了,数据读不出来。
我自己去年帮一个做跨境电商的客户修站,他首页空白,查了半天,发现是主题里“首页显示最新文章”的选项被关了,改回来就好了。所以别自己吓自己,先按这个思路查,大概率能解决。
环境准备:动手前,这3样东西备好
别急着改代码,先确认你的环境没问题,不然改了也白改:
- WordPress版本:至少5.5以上,老版本兼容性问题多,建议直接升到最新版。
- 主题:如果是免费主题,先备份;如果是付费主题,确认是否支持“首页显示文章”功能。
- 备份:改之前,用UpdraftPlus或手动备份数据库+文件,万一改崩了还能回滚。
另外,广东这边很多小站还在用虚拟主机,服务器性能差,缓存插件容易冲突。如果你的服务器是低配,建议先把缓存插件停用,再排查问题,能少很多麻烦。
核心步骤:5步定位“不显示post”的根源
步骤1:检查主题设置(最常见!)
进WordPress后台 → 外观 → 自定义 → 首页设置。看“显示最新帖子”有没有勾选。如果选的是“静态页面”,确认你选的页面是不是真的关联了文章。
重点:有些主题(比如Astra、GeneratePress)在“首页”和“博客页”是分开的,你改了首页设置,但博客页没配好,文章照样不显示。一定要两个地方都检查一遍。
步骤2:确认文章状态
进后台 → 文章列表,看你要显示的文章是不是“已发布”。如果是“草稿”“私有”或“密码保护”,首页绝对不会显示。批量检查的话,用高级筛选器,把状态选成“已发布”,看列表里有没有你期待的文章。
小技巧:有些文章发布时间设成了未来时间,或者修改时间太旧,也会被主题过滤掉。改一下发布时间,立刻就能显示。
步骤3:清空所有缓存
浏览器缓存、服务器缓存、WordPress插件缓存,三层都要清:
- 浏览器:Ctrl+F5强刷。
- 服务器:如果用了CDN(比如Cloudflare),去后台清缓存。
- 插件:W3 Total Cache、WP Super Cache、LiteSpeed Cache,全部点“清空缓存”。
注意:清完缓存后,首页可能还是旧的,等30秒再刷。如果还不行,直接换浏览器或无痕模式测试,排除本地问题。
步骤4:检查数据库表(进阶)
如果上面三步都没用,大概率是数据库表损坏了。用phpMyAdmin或WP-DB Manager插件,检查wp_posts和wp_postmeta表。
操作:选中表 → 点击“检查表” → 如果提示“表已损坏”,点“修复表”。修复完再刷新首页,文章可能就回来了。
真实案例:我有个客户,站被黑过,wp_posts表被删了几行数据,文章自然不显示。修复表后,从备份里恢复了数据,首页立刻正常。所以,定期备份数据库,比什么都重要。
步骤5:切换主题测试(终极手段)
如果以上都没用,临时切换到Twenty Twenty-Three(WP官方默认主题),看文章是否显示。如果显示了,说明问题出在你原来的主题上;如果还是不显示,那就是更深层的问题,比如插件冲突或服务器配置。
建议:切换主题前,先备份主题文件。如果确认是主题问题,去GitHub开源仓库找主题的issue区,看看有没有人遇到过同样的问题,通常能找到解决方案。
代码/配置示例:2段能跑的代码,直接抄
示例1:强制首页显示最新文章(functions.php)
如果你用的是自定义主题,或者主题设置里找不到“首页显示文章”的选项,可以在主题的functions.php文件里加这段代码:
// 强制首页显示最新文章,覆盖主题默认设置
function force_home_display_latest_posts() {if ( is_front_page() ) {// 设置首页显示5篇文章$paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1;$args = array('post_type' => 'post','posts_per_page' => 5,'paged' => $paged);$query = new WP_Query( $args );if ( $query->have_posts() ) {while ( $query->have_posts() ) {$query->the_post();// 输出文章标题和摘要,根据你的主题调整the_title( '<h2 class="entry-title">', '</h2>' );the_excerpt();}}wp_reset_postdata();}
}
add_action( 'template_redirect', 'force_home_display_latest_posts' );
关键说明:这段代码会在首页强制查询已发布的文章,并输出标题和摘要。如果你的主题有自己的首页模板,可能需要调整输出格式。改完保存,刷新首页,文章应该就出来了。
示例2:修复数据库表(SQL命令)
如果数据库表损坏,可以用SQL命令修复。登录phpMyAdmin,选中你的数据库,点击“SQL”标签,输入:
-- 修复wp_posts表
REPAIR TABLE wp_posts;
-- 修复wp_postmeta表
REPAIR TABLE wp_postmeta;
执行后,如果返回“表已修复”,说明成功。如果提示“表不存在”,检查你的表前缀是不是wp_,如果是其他前缀(比如wpsite_),改成对应的前缀再执行。
注意:执行SQL前,务必备份数据库!一旦改错,没备份就回不来了。
常见报错:这3个坑,90%的人都踩过
报错1:首页空白,但文章列表正常
原因:主题首页模板调用的不是文章查询,而是页面查询。
解决:检查主题的front-page.php或home.php文件,看query_posts()或WP_Query的post_type参数是不是post。报错2:清完缓存还是旧内容
原因:服务器用了对象缓存(比如Redis、Memcached),插件缓存没清到对象缓存。
解决:登录服务器,重启Redis或Memcached服务,或者在WordPress后台用“WP Rocket”这类插件的“清空所有缓存”功能。报错3:数据库修复后文章还是不显示
原因:文章被软删除,post_status字段被改成了trash。
解决:用SQL查询SELECT * FROM wp_posts WHERE post_status = 'trash';,看有没有你要的文章。如果有,把post_status改成publish,文章就回来了。
小结:从零搭建WP,首页不显示post的终极心法
- 先查设置,再查状态,最后查数据库:这个顺序不能乱,80%的问题在前两步就能解决。
- 备份是底线:改代码、改数据库之前,备份!备份!备份!
- 别盲目换主题:切换主题只是测试手段,不是解决方案。找到根源,比换主题更重要。
- 善用GitHub:主题或插件出问题时,去GitHub开源仓库的issue区搜,通常能找到现成的解决方案,比问客服快10倍。
网站建设这行,坑多但都不深。只要你按步骤排查,90%的问题都能自己解决。别一遇到“wordpress首页不显示post”就慌,先冷静,再动手,大概率5分钟就能搞定。
你踩过哪些建站的坑?评论区交流,一起避坑。