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' );
相关推荐
AlbertS4 天前
AWS上迁移WordPress遭遇若干问题记处理办法
acm·aws·wordpress·alb·route53·postfix
wodrpress资源分享4 天前
wordpress重置密码的方法
mysql·wordpress
国外VPS测评网站12 天前
WordPress精选文章如何添加侧边栏和页面?
wordpress·精选帖子
LJ小番茄14 天前
关于wordPress中的用户登录注册等问题
前端·javascript·css·html·wordpress
podoor17 天前
wordpress不同网站 调用同一数据表
前端·wordpress
Web极客码24 天前
什么是站点内部搜索垃圾邮件攻击以及如何防范
开发语言·php·wordpress
podoor1 个月前
把wordpress文章分享到微信 分享到QQ
wordpress·woocommerce
podoor1 个月前
两种在wordpress网站首页调用woocommerce产品的方法
wordpress·woocommerce
冰淇淋烤布蕾1 个月前
wordpress建立数据库连接失败 数据库删除恢复
数据库·安全·阿里云·oracle·腾讯云·wordpress
podoor1 个月前
wordpress免费下载
wordpress