Как заблокировать обновление плагина WordPress?
Приветствую. Сегодня мы рассмотрим, как заблокировать обновление конкретного плагина WordPress.
Введение
Очень часто, когда Вы создаете сайт на WordPress, приходится использовать различные плагины. Но, к сожалению, не всегда они берутся как-есть, из коробки. По тех. заданию их код приходится модифицировать.
Все бы ничего. Но эти плагины чаще всего скачиваются из каталога WordPress, или из другого источника в интернете, и имеют версию. Соответственно, периодически эта версия проверяется сайтом на Worpdress и при возможности скачать более позднюю — WordPress предлагает сделать обновление. К примеру, так происходит, когда Вы заходите в раздел CMS — Плагины.
Вообще, политика Worpdress, в целом, такая: по возможности, плагины и темы должны обновляться.
Плюсы обновлений:
- появляются новые фичи (возможности) плагинов и тем;
- закрываются дыры в безопасности;
- старый код приводится в соответствие с более новой версией php, на которую владелец сайта может перейти со временем.
Минус обновлений:
- если разработчиками Вашего сайта были внесены изменения в оригинальный плагин или тему, то при обновлении они слетят. С ними и настроенный в них функционал;
- возможно отсутствие обратной совместимости с Вашей версией php на сервере и кодом ядра WordPress. Новая версия плагина или темы может в итоге перестать выполнять какие-либо функции. К примеру, может перестать отправляться почта.
Самый главный плюс обновлений — улучшение безопасности. Сайты на WordPress нередко взламывают из-за брешей в плагинах.
Самый главный минус — возможные нарушения в работе сайта из-за потери написанного/нормально работающего кода.
Блокировка обновлений плагинов
Способ 1. Блокировка обновлений всех установленных плагинов.
В файл темы functions.php надо внести код:
1 2 3 | <?php add_filter('site_transient_update_plugins', '__return_false'); |
Способ 2. Блокировка обновлений конкретного плагина.
Допустим, у Вас установлен плагин Facebook Comments. Его код лежит в папке /wp-content/plugins/facebook-comments-plugin/, а главный файл плагина: facebook-comments.php — в котором в шапке прописана аннотация к нему:
1 2 3 4 | <?php /* Plugin Name: Facebook Comments Plugin URI: https://facebook.com |
Для блокировки будущих обновлений этого плагина в файл темы functions.php надо внести код:
1 2 3 4 5 6 7 8 9 10 | <?php function my_filter_plugin_updates( $value ) { if( isset( $value->response['facebook-comments-plugin/facebook-comments.php'] ) ) { unset( $value->response['facebook-comments-plugin/facebook-comments.php'] ); } return $value; } add_filter( 'site_transient_update_plugins', 'my_filter_plugin_updates' ); |
На самом деле тут палка о двух концах — блокировать обновления сразу всех плагинов или только выборочно. Если Вы внесли изменения в код установленных плагинов, то их обновления точно надо блокировать. При этом, естественно, возникает проблема пропуска обновления с найденными и пофиксиными разработчиками дырами. Также, если Вы разрабатываете сайт на заказ, то давать владельцу сайта право обновлять оставшиеся плагины — может быть и хорошо, и плохо.
Хорошо — в том смысле, что это может закрыть дыры в безопасности плагина. И плохо — что если владелец сайта все-таки нажмет кнопку Обновить плагин, то или весь сайт или его часть может порушиться. И надо будет восстанавливать бэкап сайта. Если он, конечно, был сделан.