Пропали виджеты после обновления WordPress 4.3

На одном из наших сайтов (http://viva-games.ru) после обновления WordPress 4.3 пропали виджеты. Причём, что интересно, стандартные виджеты остались на месте, а кастомные потерялись. После некоторого поиска выяснилось: сие чудо происходило потому, что в коде наших виджетов метод update() возвращал null. Что-то разработчики WP поменяли в ядре так, что виджет, у которого в кастомных настройках хранится null, теперь не отображается.

Проблема решается просто — даже если метод update() вашего кастомного виджета ничего не делает, он должен возвращать что-то отличное от null, а в идеале он должен возвращать $new_instance.

Вот как выглядит метод custom виджета, который нормально отображается:

/**
* Processing widget options on save
*
* @param array $new_instance The new options
* @param array $old_instance The previous options
*/
public function update( $new_instance, $old_instance ) {
    // processes widget options to be saved
    return $new_instance;
}

 

К слову сказать, этот метод в точности повторяет метод базового класса WP_Widget, который вы наследуете, когда создаёте свой виджет. Поэтому можно просто удалить метод update(), если у вашего виджета нет настроек. Хотя разработчики WP в комментариях просят обязательно переопределять его, он не помечен как «abstract«. Поэтому сами решайте что для вас важнее — более короткий и лаконичный код, либо более-менее гарантированная совместимость с будущими версиями WP. Мы бы рекомендовали наследовать.

До встречи!

 

 

Отправить ответ

Оставьте первый комментарий!

Notify of
avatar
wpDiscuz