WordPress 升级与 php7 兼容性解决方法
今天抽空将虚拟主机的PHP环境升到了7.1,之前一直用的是5.4,虚拟主机。。。寒,没错,你没听错,本博客跑在了衡天主机的虚拟主机上,并且由于避免被封杀的风险,用的是香港主机,所以速度有些慢,这么慢也慢了N年了。
环境升级没什么好说的,后台面板一件切换到7.1即可。然后顺便将wordpress3.74升级到4.74,是的,没看错,很久没升级wordpress了。再然后打开首页,500内部错误,修改wp-config.php,开启debug模式,
define('WP_DEBUG', false); //这里改成true;
然后悲催地显示了一地的错误信息。
1、Notice: load_plugin_textdomain was called with an argument that is deprecated since version 2.7.0 with no alternative available.
解决方案:发现wp-recentcomment的插件调用该函数时用了个过期的参数模型,将调用函数的参数改一下即可。
将 load_plugin_textdomain('wp-recentcomments','/wp-content/plugins/wp-recentcomments/languages/'); 改成 load_plugin_textdomain('wp-recentcomments', '','/wp-content/plugins/wp-recentcomments/languages/');
2、Notice: 自3.4.0版本起,已不建议使用get_current_theme,请换用wp_get_theme()。
解决方案:修改主题下所有包含get_current_theme函数的文件,改成wp_get_theme()即可
3、Methods with the same name as their class will not be constructors in a future version of PHP
解决方案:找到主题下报错的相关文件,将类里的构造方法改成__construct
4、Notice: register_sidebar的调用方法不正确。“Home Right”侧边栏的参数数组中未设置id,缺省为“sidebar-1”
解决方案:找到主题下相关函数,修改一下。
//边栏定义 if (function_exists('register_sidebar')) { register_sidebar(array( 'name' => 'Home Right', 'id' => 'sidebar-1', //添加这行 'before_widget' => '<div class="sidebox">', 'after_widget' => '</div><div class="clearfix"></div><hr>', 'before_title' => '<h3>', 'after_title' => '</h3>', )); }
5、Fatal error: Uncaught Error: Call to undefined function ereg()
解决方案:主题下相关文件找到ereg,用preg_match替代。
可以看出,以上几个问题项目都出在插件和主题身上,和wordpress 4.74版本本身无关,即可以认为wordpress的最新版本是100%兼容php7的。
后台编辑,在固定链接后面,添加上文章英文名称(post_name)
样例:
WordPress 升级与 php7 兼容性解决方法
固定链接: http://blog2.mimvp.com/article/27657.html wordpress-sheng-ji-yu-php7-jian-rong-xing-jie-jue-fang-fa
添加步骤:
1)分析 固定链接 的css,在 wp-admin/ 目录下查找css样式 "edit-slug-box"、"hide-if-no-js"
2)在文件 wp-admin/edit-form-advanced.php 中找到了 "edit-slug-box"、"hide-if-no-js",并定位到 $sample_permalink_html
<div id="edit-slug-box" class="hide-if-no-js">
<?php
if ( $has_sample_permalink )
echo $sample_permalink_html;
?>
</div>
3)继续定位 $sample_permalink_html ,看起构成函数
$sample_permalink_html = $post_type_object->public ? get_sample_permalink_html($post->ID) : '';
4)在 wp-admin/ 目录下查找css样式 "get_sample_permalink_html" 函数,查到了在文件 wp-admin/includes/post.php 中
5)打开文件 wp-admin/includes/post.php,定位到 get_sample_permalink_html,然后增加一行
if ( false !== $view_link ) {
$display_link = urldecode( $view_link );
$return .= '<a id="sample-permalink" href="' . esc_url( $view_link ) . '"' . $preview_target . '>' . esc_html( $display_link ) . "</a>\n";
} else {
$return .= '<span id="sample-permalink">' . $permalink . "</span>\n";
}
$return .= ' <span id="mimvp-post-name">' . $post->post_name . "</span>\n";
6)至此,完成了 固定链接后面,添加 post_name
参考推荐:
版权所有: 本文系米扑博客原创、转载、摘录,或修订后发表,最后更新于 2018-12-26 05:38:07
侵权处理: 本个人博客,不盈利,若侵犯了您的作品权,请联系博主删除,莫恶意,索钱财,感谢!
php都已经7.3了