从版本4.3.0开始,不推荐使用WP_Widget的被调用构造函数方法

时间:2015-09-30 07:23:53

标签: php wordpress

我刚刚更新到WordPress 4.3,似乎有些东西坏了。

我收到此错误,显示在我的页面上:

  

注意:从版本4.3.0开始,不推荐使用WP_Widget的被调用构造函数方法!请改用__construct()。位于第3457行的/mnt/stor13-wc1-ord1/754452/www.eden-festival.com/web/content/securewp/wp-includes/functions.php

是否有需要修复的东西?

6 个答案:

答案 0 :(得分:38)

由于php 7不再支持旧的php 4对象构造并替换为sudo ln -sf /usr/lib/jvm/java-7-oracle/jre/lib/security /usr/lib/jvm/java-7-oracle/lib/security Wordpress开发人员创建了一条通知消息,因此插件开发人员将改变其插件的工作方式,以便它可以在下一个运行php版本和php 4很久以前就已经死了没有理由使用这种对象构造。

如何修复?

选项1 - 不会升级到较新的php版本

添加 __construct()

到你的functions.php文件中,它会忽略这些通知。

选项2 - 可能升级到php 7 /更喜欢处理问题而非沉默

  
    

如果这是第三方插件,请注意如果您自己进行更改并且插件开发人员将发布更新,它将覆盖您的更改。联系插件开发人员来解决此问题将是最佳选择

  

找到有问题的插件并更改

add_filter('deprecated_constructor_trigger_error', '__return_false');

parent::WP_Widget

答案 1 :(得分:15)

我也得到了同样的错误我以这种方式修复了它

class Dokan_Category_Widget extends WP_Widget {

    /**
     * Constructor
     *
     * @return void
     **/
    public function __construct() {
        $widget_ops = array( 'classname' => 'dokan-category-menu', 'description' => __( 'Dokan product category menu', 'dokan' ) );
        $this->WP_Widget( 'dokan-category-menu', 'Dokan: Product Category', $widget_ops );
    }
}

因为以这种方式调用构造函数的方式在php 7中已弃用,所以我将调用方式替换为$this->WP_Widget() parent::__construct()

class Dokan_Category_Widget extends WP_Widget {

    /**
     * Constructor
     *
     * @return void
     **/
    public function __construct() {
        $widget_ops = array( 'classname' => 'dokan-category-menu', 'description' => __( 'Dokan product category menu', 'dokan' ) );
        //$this->WP_Widget( 'dokan-category-menu', 'Dokan: Product Category', $widget_ops );
        parent::__construct('dokan-category-menu', 'Dokan: Product Category', $widget_ops  );
    }
}

答案 2 :(得分:2)

我猜你使用的是一些在wordpress更新后没有更新的插件,并且有一些像unsafeCoerce这样的代码。你应该更新该插件或停用它直到它被更新。

答案 3 :(得分:0)

声明一个函数然后调用父构造函数为我解决了这个问题。

class myClass extends WP_Widget {
  function __construct(){
     parent::__construct(...) // calls constructor from WP_Widget class
  }
}

答案 4 :(得分:0)

这是一种警告,您可以通过在站点根目录的wp-config.php文件中添加一行来隐藏错误

define('WP_DEBUG',false);

答案 5 :(得分:-3)

我遇到了这个问题,通过在/wp-includes/functions.php中将'true'语句更改为'false',它禁用了错误。

  

if(WP_DEBUG&& apply_filters(   'deprecated_constructor_trigger_error',true)){