wordpress插件wp-postviews报错has a deprecated constructor的解决方法

WP_Widget_PostViews has a deprecated constructor报错问题存在于低版本的wp-postviews插件中,新版本的wp-postviews插件已经修复,如果有遇到该问题的博主更新到最新版本即可,本篇内容仅作记录。如果插件经过二次修改,觉得升级又要改一次比较麻烦,可以根据下面的方法修复。安装在较高版本php中的wordpress网站使用旧版本的wp-postviews插件在debug调试模式下会出现以下报错信息:

Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; WP_Widget_PostViews has a deprecated constructor in ***** /wp-content/plugins/wp-postviews/wp-postviews.php on line 670
Invalid comment status.

出现该问题的原因很简单,就是在较高的php版本中,构造函数的名称不能和类名称相同,而wp-postviews插件的某个类名称和构造函数名称冲突了,解决方法是把函数名称改为__construct即可。

操作步骤:

1、编辑插件的wp-postviews.php文件,找到以下代码:

1
2
3
4
5
6
class WP_Widget_PostViews extends WP_Widget {
	// Constructor
	function WP_Widget_PostViews() {
		$widget_ops = array('description' => __('WP-PostViews views statistics', 'wp-postviews'));
		$this->WP_Widget('views', __('Views', 'wp-postviews'), $widget_ops);
	}

PS:可以看出class后面的名称和function后面的名称相同

2、把上面代码中的WP_Widget_PostViews()修改为__construct()即可,修改后的代码如下:

1
2
3
4
5
6
class WP_Widget_PostViews extends WP_Widget {
	// Constructor
	function __construct() {
		$widget_ops = array('description' => __('WP-PostViews views statistics', 'wp-postviews'));
		$this->WP_Widget('views', __('Views', 'wp-postviews'), $widget_ops);
	}

3、修改完成后,保存文件即可。

发表留言