Подтвердить что ты не робот

Метод вызываемого конструктора для WP_Widget устарел с версии 4.3.0

Я просто обновился до WordPress 4.3 и кажется, что что-то сломано.

Я получаю эту ошибку, которая появляется на моей странице:

Примечание. Метод вызываемого конструктора для WP_Widget устарел с версии 4.3.0! Вместо этого используйте __construct(). in/mnt/stor13-wc1-ord1/754452/www.eden-festival.com/web/content/securewp/wp-includes/functions.php on line 3457

Есть ли что-то, что нужно исправить?

4b9b3361

Ответ 1

Так как 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

To

parent::__construct

Ответ 2

Я предполагаю, что вы используете какой-то плагин, который не обновляется после обновлений Wordpress и имеет некоторый код, например class ***_Widget extends WP_Widget {. Вы должны обновить этот плагин или деактивировать его до тех пор, пока он не будет обновлен.

Ответ 3

Объявление функции, вызывающей родительский конструктор, разрешило эту проблему для меня.

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

Ответ 4

Я тоже получаю ту же ошибку И я исправил ее таким образом

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  );
    }
}

Ответ 5

У меня возникла эта проблема, и я обнаружил, изменив выражение "true" на "false" в /wp -includes/functions.php, что он отключил ошибки.

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