Ошибка Warning: Declaration of description_walker::start_el после обновления PHP

12 дек. 2016 г., 17:44:20
Просмотры: 30.6K
Голосов: 10

Я обновил PHP до версии 7.0, и после этого в заголовке моего сайта появилось следующее сообщение:

Warning: Declaration of description_walker::start_el($output, $item, $depth, $args) should be compatible with Walker_Nav_Menu::start_el(&$output, $item, $depth = 0, $args = Array, $id = 0) in /homepages/2/d444683358/htdocs/wp-content/themes/zend/functions.php on line 59

Вот строка 59 в файле functions.php:

$output .= apply_filters( 'walker_nav_menu_start_el', $item_output, $item, $depth, $args );

Я не программист, поэтому не уверен, что нужно сделать для исправления этой ошибки?

Спасибо за помощь

1
Комментарии

Лучше всего будет сообщить об этом разработчикам/поддержке темы.

Rarst Rarst
12 дек. 2016 г. 17:49:45
Все ответы на вопрос 1
4
32

Сообщение об ошибке указывает, что класс description_walker наследует класс Walker_Nav_Menu и переопределяет метод start_el(), но сигнатура метода отличается от определения в родительском классе.

Как упоминалось в комментариях, лучше всего связаться с разработчиком вашей темы и запросить исправленную версию.

Если разработчик недоступен или вы действительно хотите исправить тему самостоятельно, можно сделать следующее. Однако учтите, что любые изменения в файлах темы будут перезаписаны при обновлении.

Найдите в файлах темы определение функции start_el() внутри класса description_walker. Строка кода должна выглядеть примерно так:

function start_el( $output, $item, $depth, $args ) {

Изменение этой строки на следующую должно устранить предупреждение:

function start_el( &$output, $item, $depth = 0, $args = array(), $id = 0 ) {
12 дек. 2016 г. 18:10:42
Комментарии

Значит, это проблема ограничения версии PHP? Эта проблема началась только после переноса сайта с другого хостинга с другой версией PHP... Странно, раньше ошибок не было... Тем не менее, этот ответ решил проблему с предупреждением, так как я владелец темы walker... Спасибо за хороший ответ, насколько это возможно!

Jonas Lundman Jonas Lundman
3 нояб. 2018 г. 16:18:49

@JonasLundman Эта проблема существовала и до PHP7, но в более ранних версиях предупреждения имели уровень ошибки E_STRICT. Начиная с PHP 7 это обычные предупреждения, поэтому они отображаются при стандартных настройках уровня ошибок.

JHoffmann JHoffmann
5 нояб. 2018 г. 11:13:24

Спасибо, дружище, ты меня выручил ;)

hayatbiralem hayatbiralem
5 апр. 2019 г. 20:09:39

Отличная работа, спасибо!

Siyah Siyah
25 нояб. 2019 г. 20:58:45