AltaiR-05
@AltaiR-05

Почему при отключении обновлений тормозит админка Wordpress?

Доброго времени суток. Отключаю обновления самого Wordpress и плагинов таким образом:
add_filter('pre_site_transient_update_core',create_function('$a', "return null;"));
wp_clear_scheduled_hook('wp_version_check');

remove_action( 'load-update-core.php', 'wp_update_plugins' );
add_filter( 'pre_site_transient_update_plugins', create_function( '$a', "return null;" ) );
wp_clear_scheduled_hook( 'wp_update_plugins' );

И тут начинает моросить админка. Вот скрины загрузки страницы с отключенными обновлениями:
b00406cc2d8345a6b86e0dd6fde74353.png
И с включенными:
aca738513097488e886a0aee18418c80.png
Почему так?
  • Вопрос задан
  • 336 просмотров
Решения вопроса 1
HeadOnFire
@HeadOnFire
PHP, Laravel & WordPress Evangelist
Потому что не так отключаете. Ваш код (а точнее код с просторов сети) делает кучу всего, и делает это не совсем правильно. Для отключения апдейтов (что, кстати, не рекомендуется), есть константы в wp-config.php.
// Отключить все обновления
define( 'AUTOMATIC_UPDATER_DISABLED', true );

Подробнее тут.

Если же необходимо запретить обновление плагинов вручную, то должно хватить вот этого:
add_action( 'site_transient_update_plugins', '__return_false' );

Не тестил, но должно работать. Дело в том, что pre_site_transient_update_plugins - это фильтр, который срабатывает перед тем, как transient будет сохранен. site_transient_update_plugins - это экшн, который вызывается сразу после того, как transient был сохранен. Поэтому они работают по разному. Фильтр - возращает измененное значение, которое сохраняется в transient. Экшн выполняет действие после сохранения.

Опять же, я не тестировал, но по логике это не предотвратит саму проверку обновлений. Не будет выводиться информация о наличии обновления и предложение обновиться. Но сами проверки будут улетать. Первое, что приходит в голову, что можно сделать для блокирования самих проверок - это хукаться на http_request_args, и проверять куда готовится запрос. Если это на сервер обновлений - то блокируем запрос до того, как он был отправлен.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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