На одном из наших сайтов (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. Мы бы рекомендовали наследовать.
До встречи!