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' );
相关推荐
Junson14209912 小时前
wordpress网站底层到顶层优化,彻底解决网站加载速度慢的问题
优化·wordpress·速度·加载速度·woocommerce
Web极客码1 天前
WordPress从经典编辑器升级到古腾堡编辑器
运维·编辑器·wordpress
Web极客码2 天前
WordPress博客关键词
服务器·wordpress·网站加速
WordPress学习笔记2 天前
wordpress文章别名不能为纯数字的原因
wordpress
WordPress学习笔记3 天前
wordpress链接的调用方法
wordpress
WordPress学习笔记3 天前
wordpress建站专家和wordpress建站骗子最大的区别
wordpress
gpldock2226 天前
Flutter App Templates Deconstructed: A 2025 Architectural Review
开发语言·javascript·flutter·wordpress
Junson1420997 天前
使用雷池Waf架构搭建woocommerce外贸网站
wordpress·waf·雷池·woocommerce
Web极客码7 天前
WordPress 在哪里存储网站上的图片?
运维·服务器·wordpress
2601_949532848 天前
Psello HTML Template: A Developer‘s Deep-Dive Review and Guide - Download Free
前端·windows·html·seo·wordpress·gpl