前几天升级了系统环境,web环境也进行了大升级,效果很明显,打开代码狗博客是不是被我的WordPress速度惊到了呢?
网站打开速度是提升了,各种问题也接踵而至,今天我发现百度并没有收录我近几天的文章,于是查看了下站点地图,发现一个重大问题,站点地图没有更新,最新记录仍然停留在升级系统环境之前。于是打算进后台手动点击按钮更新下地图,然而点击插件的更新按钮后却出现白屏什么内容都没有。开始我还以为是文件没有写权限,检查权限后并没有发现权限问题。估计是PHP的问题,因为我已经经历过好几次PHP不兼容的问题了。百度后发现不少网友有过Baidu Sitemap Generator插件白屏不更新网站地图的经历,于是按照如下方法修改了Baidu Sitemap Generator插件中不兼容的PHP代码。
preg_split 替换掉 split
PHP说明文档上明确说明,split方法支持版本为PHP4、PHP5。并建议放弃它,preg_split可以替代它。
将Sitemap Generator插件目录下的sitemap-function.php文件的439行和 baidu_sitemap.php文件的308行,使用preg_split替换掉split方法,改成如下:
list( $today_year, $today_month, $today_day, $hour, $minute, $second ) = preg_split( '([^0-9])', $blogtime );
之所以有两个地方要改,是因为一个是生成xml的地图所用函数,另一个是html所用,如果你需要记得一定要改,不然html地图不会更新!然后再修改baidu_sitemap.php文件的第19-23行,找到如下代码:
function baidu_sitemap_menu() { /** Add a page to the options section of the website **/ if (current_user_can('manage_options')) add_options_page("Baidu-Sitemap","Baidu-Sitemap", 8, __FILE__, 'baidu_sitemap_optionpage'); }
将第22行中的数字8修改为字符串’manage_options’,修改后代码如下:
function baidu_sitemap_menu() { /** Add a page to the options section of the website **/ if (current_user_can('manage_options')) add_options_page("Baidu-Sitemap","Baidu-Sitemap", 'manage_options', __FILE__, 'baidu_sitemap_optionpage'); }
保存后替换掉原文件即可。这次问题波及所有PHP7及以上版本,请注意检查你们的Baidu Sitemap Generator网站地图插件是否仍在正常工作,查看网站地图中的最新更新日期是否正确!
评论 (0)