一般常用的排查方法:
原代码:
if( $_POST['submit'] ){ }
新代码:
if(isset($_POST['submit']) && $_POST['submit']) { }
别的相同类似报错都可以按这个方式来解决问题。
在插件或主题文件中搜索关键词:add_options_page查找用户级别代码位置。
原代码:
add_options_page('Delete-Revision', 'Delete-Revision',8, basename(__FILE__), 'my_options_delete_revision');
新代码:
add_options_page('Delete-Revision', 'Delete-Revision','manage_options', basename(__FILE__), 'my_options_delete_revision');
主要是把红色的8修改为红色的manage_options。
这个直接搜索查找替换文件里的:caller_get_posts 为 ignore_sticky_posts 即可。
这个直接搜索查找替换文件里的:parent::WP_Widget 或 $this->WP_Widget 为 parent::__construct
php 7.3版本不推荐使用create_function函数,在php 7.3中使用create_function()
函数会有兼容性报错Deprecated: Function create_function() is deprecated,解决方法是替换掉该函数。
以wordpress的代码为例,原代码如下
add_action('widgets_init', create_function('', 'return register_widget("contact");'));
修改为
add_action('widgets_init', function(){register_widget('contact' );});
原代码:
$callbacks[$delimiter] = create_function('$matches', "return '$delimiter' . strtolower(\$matches[1]);");
修改为:
$callbacks[$delimiter] = function($matches) use ($delimiter) {
return $delimiter . strtolower($matches[1]);
};
问题描述:
运行一个旧的php项目时报错:
原因分析:
解决方案:
将
preg_replace("#\\\u([0-9a-f]{4})#ie", "iconv('UCS-2BE', 'UTF-8', pack('H4', '\\1'))", json_encode($data));
修改为:
preg_replace_callback('/\\\\u([0-9a-f]{4})/i', function($matches){return iconv("UCS-2BE","UTF-8",pack("H*", $matches[1]));}, json_encode($data));
或直接封装为一个函数,可实现更好地复用:
function decodeUnicode($str){
return preg_replace_callback('/\\\\u([0-9a-f]{4})/i', function($matches){return iconv("UCS-2BE","UTF-8",pack("H*", $matches[1]));}, $str);
}
提示:Deprecated: 自3.3.0版本起,已不建议使用contextual_help,请换用get_current_screen()->add_help_tab(), get_current_screen()->remove_help_tab()。
add_filter( 'contextual_help', '__return_empty_string', 999 );
改为:
function wp_remove_contextual_help() {
$screen = get_current_screen();
$screen->remove_help_tabs();
}
add_action( 'admin_head', 'wp_remove_contextual_help' );