今天对 WordPress 的分页 canonical 有了一个新的想法,于是就折腾了起来,由于 WordPress 的首页、列表、标签等默认都是翻页,而由于从网站 SEO 优化的角度来看这些页面就会比较重复,很多时候搜索引擎会收录很多的类似 page/num 的分页页面,也就导致首页、栏目页或者标签的默认页面排名没那么好,但是又不太可能直接禁止分页,所以子凡就想着用 canonical 来稍微的规范一下页面。
而就在完成这个功能的时候,子凡测试到一个新的 WordPress 问题,就是当“WordPress 首页/page/1”的方式访问会报错,错误提示如下:
Warning: Undefined array key "path" in /www/wordpress/wp-includes/canonical.php on line 590
经过判断,是由于 WordPress 固定链接使用的类似“/%category%/%postname%”,自定义结构的结束没有使用斜杠,而造成的 WordPress 报错,而使用“/%category%/%postname%/”这样结尾有斜杠的结构则不会报错。
通过 Google 查询才发现有一堆的网站有这样的错误提示,并且也在 WordPress 官方开到有人反馈该错误,结果就是六年了都没有处理这个问题,既然是这样子凡我也不希望通过官方的形式来解决,直接采用一个间接的解决方法,解决方法如下:
//跳转控制
add_action( 'template_redirect', 'fanly_basic_redirects' );
function fanly_basic_redirects() {
if( is_home() && get_query_var('paged')===1 ) {//避免首页 page/1 报错
wp_redirect( home_url(), 301 );
die;
}
}
使用方法就是把这段代码放置到当前所用的 WordPress 主题的 functions.php 文件中即可。解决原理就是跳转,当 WordPress 识别到是通过“WordPress 首页/page/1”访问的时候就直接跳转到首页,完美解决该问题。
除非注明,否则均为泪雪博客原创文章,禁止任何形式转载
本文链接:https://zhangzifan.com/wordpress-page-1-error.html