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

В Linux glibc предоставляет strverscmp (), он также доступен из gnulib для переносимости. Однако действительно «человеческая» сортировка имеет множество других причуд, таких как «The Beatles», которые сортируются как «Beatles, The». Нет простого решения этой общей проблемы.

24
задан aniruddh 30 September 2015 в 07:32
поделиться

4 ответа

Поскольку php 7 больше не поддерживает старую конструкцию объекта php 4 и заменена на __construct(), разработчики Wordpress создали сообщение с уведомлением, чтобы разработчики плагинов изменили способ работы своих плагинов, чтобы он мог работать на следующих версиях php и как php 4 давно мертв, нет причин использовать этот стиль объектной конструкции.

Как исправить?

Вариант 1 - не собирается обновляться до более новых версий php

, просто добавьте add_filter('deprecated_constructor_trigger_error', '__return_false');

к своим функциям Файл .php будет игнорировать эти уведомления.

Вариант 2 - может обновиться до php 7 / предпочитает заниматься проблемой, а не заставлять ее замолчать

Если это сторонний плагин, будьте осторожны, если Вы вносите изменения самостоятельно, и разработчик плагина выпускает обновление, которое отменяет ваши изменения. Лучшим вариантом будет связаться с разработчиком плагина

Найти проблемный плагин и изменить

parent::WP_Widget

К

parent::__construct

38
ответ дан Gal 30 September 2015 в 07:32
поделиться

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

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  );
    }
}
16
ответ дан Ganesh 30 September 2015 в 07:32
поделиться

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

class myClass extends WP_Widget {
  function __construct(){
     parent::__construct(...) // calls constructor from WP_Widget class
  }
}
0
ответ дан coletrain 30 September 2015 в 07:32
поделиться

Его вид предупреждения Вас может скрыться, ошибка с помощью добавляют строку в Вашем wp-config.php, файл в корневом каталоге

сайта определяет ('WP_DEBUG', ложь);

0
ответ дан 28 November 2019 в 18:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: