Wordpress升级版本后插件和主题常见出错及处理方法整理【持续更新】

Wordpress报错怎么解决?

一般常用的排查方法:

  1. 暂时禁用所有插件;
  2. 将主题更改为默认主题;
  3. 修改wp-config.php文件;
  4. 更新固定链接设置,确保设置正确;
  5. 检查.htaccess文件是否存在且是否可写;
  6. 检查主题的页面模板文件是否存在;7、检查wp-config.php文件的数据库凭据是否正确;
  7. 使用phpMyAdmin等工具检查数据库是否正常运行等。

wordpress报错

一,报错Notice:Undefined index:submit in

原代码:

复制代码
if( $_POST['submit'] ){ }

新代码:

复制代码
if(isset($_POST['submit']) && $_POST['submit']) { }

别的相同类似报错都可以按这个方式来解决问题。

二,已不建议给has_cap传入一个参数!用户级别已被废弃,请改用能力。

在插件或主题文件中搜索关键词: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。

三,Notice: 自3.1.0版本起,已不建议给WP_Query传入一个参数!"caller_get_posts"不再被建议使用。请改用"ignore_sticky_posts"

这个直接搜索查找替换文件里的:caller_get_posts 为ignore_sticky_posts 即可。

四,Notice: 为WP_Widget调用的构造方法已自版本4.3.0起废弃!请改用 __construct()。

这个直接搜索查找替换文件里的:parent::WP_Widget 或 $this->WP_Widget 为 parent::__construct

五,create_function函数报错

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项目时报错:

  • PHP message: PHP Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead
  • Warning: preg_replace_callback(): Requires argument 2, 'iconv('UCS-2', 'UTF-8',
  • Function create_function() is deprecated>

原因分析:

  • php 5.6之后的版本不再支持pre_replace()函数
  • 自PHP 7.2起,函数create_function因为代码注入漏洞已被弃用。从PHP 5.3开始,执行此操作的首选方法是使用匿名函数。要捕获外部变量的值,请使用use声明。

解决方案:

复制代码
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

提示: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' );
相关推荐
WordPress学习笔记1 天前
精美wordpress模板免费下载
wordpress
WordPress学习笔记1 天前
WordPress提示“无法检索特色图片数据”
wordpress
WordPress学习笔记2 天前
wordpress外贸主题Google地图添加(替换)方案
前端·wordpress·wordpress地图
WordPress学习笔记3 天前
让wordpress随机调用一张指定文件夹中的图片
wordpress·wordpress随机调用
WordPress学习笔记4 天前
wordpress白屏问题常见原因及解决方案
wordpress
Web极客码4 天前
Wordpress如何调整区块高度与宽度
服务器·主题·wordpress
WordPress学习笔记4 天前
好用易上手的wordpress外贸主题推荐
wordpress
WordPress学习笔记7 天前
公司网站wordpress主题推荐
wordpress
WordPress学习笔记7 天前
wordpress原生主题二次开发常用到的一些知识点
wordpress
WordPress学习笔记7 天前
为不同的wordpress页面调用不同的顶部菜单
wordpress·wordpress菜单