WordPress自定义主题导航跳转blog.php页面异常问题求助
解决WordPress导航跳转blog.php页面内容不更新的问题
嘿,这种地址栏变了但页面内容还是老样子的问题我之前碰过好几次,大概率是WordPress的模板规则、路由配置或者前端JS拦截搞的鬼,咱们一步步来排查:
1. 先确认WordPress的模板和后台配置是否正确
WordPress有一套严格的模板层级规则,直接放个blog.php在主题里不一定会被正确调用:
- 如果你的
blog.php是自定义页面模板,必须在文件开头加上模板声明注释,否则WordPress识别不出来:<?php /* Template Name: 博客列表页 */ get_header(); // 这里写你的博客列表逻辑,比如文章循环 if (have_posts()) : while (have_posts()) : the_post(); // 文章内容输出示例 the_title('<h2>', '</h2>'); the_excerpt(); endwhile; endif; get_footer(); ?> - 然后去后台页面→新建页面,创建一个名为“博客”的页面,在右侧“页面属性”里选择刚才的“博客列表页”模板,发布后再到设置→阅读,把“首页显示”设置为“静态页面”,并将“博客页面”指定为你刚创建的这个页面,保存设置。
2. 检查服务器重写规则(.htaccess)
如果是Apache服务器,根目录的.htaccess文件必须有正确的WordPress重写规则,否则会出现URL显示正确但内容没切换的情况。确保文件内容是这样的:
# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress
要是用的Nginx,得确认配置里的try_files规则是:try_files $uri $uri/ /index.php?$args;,并且重启Nginx生效。
3. 排查是否有JS拦截了跳转
有时候主题里的前端JS(比如导航的平滑滚动、单页应用逻辑)会阻止链接的默认跳转行为,只修改了URL但没真正加载页面。你可以:
- 打开浏览器开发者工具(F12),切换到“控制台”,测试跳转时看有没有报错;
- 或者直接禁用JS(在开发者工具的设置里找“禁用JavaScript”选项),再点击导航链接,如果这时候能正常加载
blog.php,那就是JS的问题,去主题的JS文件里找有没有event.preventDefault()或者用history.pushState修改URL但没触发页面加载的代码,把拦截跳转的逻辑去掉就行。
4. 刷新固定链接设置
进入后台设置→固定链接,随便切换一种模式(比如从“朴素”改成“文章名称”),然后点击“保存更改”,这会自动刷新WordPress的重写规则,很多路由相关的小问题都能这么解决。
5. 确认blog.php的内容是否正确
最后检查下你的blog.php文件,是不是和index.php内容完全一样?如果是的话,就算加载了blog.php,看起来也和首页没区别。确保blog.php里有自己的专属内容逻辑(比如博客文章循环),而不是直接复制了index的代码。
内容的提问来源于stack exchange,提问作者Stipe Dedic
相关产品推荐
相关产品推荐

