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

ani*_*ddh 25 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

有什么需要修复的吗?

Gal*_*Gal 41

由于php 7不再支持旧的php 4对象构造并替换为__construct()Wordpress开发人员创建了一条通知消息,因此插件开发人员将改变他们的插件的工作方式,因此它可以在下一个php版本上运行,因为php 4已经死了很长时间以前没有理由使用这种风格的对象构造.

怎么修?

选项1 - 不会升级到更新的PHP版本

加上 add_filter('deprecated_constructor_trigger_error', '__return_false');

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

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

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

找到有问题的插件并进行更改

parent::WP_Widget

parent::__construct

  • 如果您的代码包含**$ this-> WP_Widget(**您可能需要将其更改为**parent :: __ construct(** (9认同)
  • 如果这是第三方插件,请注意如果您自己进行更改,并且他们进行更新,则不包括此更改...它将反转您所做的更改.您应该联系插件作者并请求有关此更新. (2认同)

Gan*_*esh 18

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

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 );
    }
}
Run Code Online (Sandbox Code Playgroud)

由于调用这样的方式构造方法在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  );
    }
}
Run Code Online (Sandbox Code Playgroud)