Метод вызываемого конструктора для 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
Есть ли что-то, что нужно исправить?
Ответы
Ответ 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)) {