Бывает так, что сталкиваешься с необходимостью уберечь функционал плагина от обновления. Такое, например, может случиться, когда доработаешь чей-то старый и редко обновляемый плагин, и не хочется потерять разом внесённые изменения, если вдруг автор сподобится выкатить апдейт. Вот, например, есть подобный пример. Как раз его я и возьму для описания далее.
А ещё бывает, что обновление несёт серьёзные изменения (такое периодически происходит с WooCommerce), и пока сайт не готов к ним, обновления нужно временно запретить.
Конечно, до запрета обновлять плагины лучше не доводить, ведь обновления выходят зачастую не просто так и, возможно, закрывают свежеобнаруженные дыры в безопасности. И, уж если вы решились на подобный шаг, то должны знать о возможных последствиях подобных решений.

Способ запретить обновление плагина №1: изменить номер версии

Самый простой, быстрый и действенный способ. Он не требует особых знаний, вы можете сделать это даже через штатный редактор в /wp-admin/
Можно добавлять строго определённые цифры, например, я добавляю несколько 9999 и разделяю точкой от текущей версии. Тем самым, при необходимости, можно безболезненно вернуть всё назад.

Теперь апдейтер Вордпресса не будет трогать ваш плагин даже при принудительном обновлении всех плагинов подряд, и при этом не будет возникать никаких ошибок.

Способ запретить обновление плагина №2: пишем код

Вариант немного сложнее для тех, кто умеет и любит писать код. Правда, мне лично он не нравится, потому что при обновлении любых плагинов выскакивают уведомления навроде
Warning: Attempt to modify property of non-object in /home/XXXXXX/public_html/wp-content/themes/XXXXXXX/functions.php on line 21
Если они вас не смущают, пользуйтесь вариантом ниже.

Add_filter("site_transient_update_plugins", "sheensay_site_transient_update_plugins"); // Вешаем функцию на специальный фильтр function sheensay_site_transient_update_plugins ($value) { unset($value->response["webmaster-yandex/webmaster-yandex.php"]); // Здесь указывается относительный путь к главному файлу плагина return $value; }

Строго говоря, мы отключаем уведомления о необходимости обновить плагин. Вместе с этим и отключается обновление.


Иногда нас не устраивает базовый функционал WordPress, либо существующих плагинов. В этом случае можно прибегнуть к редактированию системных файлов и любой обладающий минимальным навыками в программировании на php, используя в качестве справочника такой сайт, как наш — может решить практически любую возникающую задачу.

Но такой подход влечет одну существенную проблему — любой неопытный пользователь с правами администратора (например заказчик коммерческого сайта) может обновить вордпресс (или измененный плагин). Все ваши изменения потеряются, что может привести к неработоспособности сайта.

Иногда для того, чтобы получить проблемы при обновлении, даже не нужно ничего менять в системных файлах CMS. Например, при обновлении движка может возникнуть конфликт с установленной версией плагина. В этом случае Вам придется либо отказываться от функционала, который несет в себе плагин и ждать выхода версии совместимой с версией движка. Либо возиться с откатом вордпресса.

А то, что начиная с версии 3.7 технические (3.7.1, 3.7.2 и тд) версии вордпресса обновляются автоматически — только усложняет ситуацию.


Итак, рассмотрим как отключить обновления полностью и как управлять автоматическим обнослением:

Отключаем обновления полностью.

Потребует внесения изменения в function.php
Запрет обновления Вордпресс:

add_filter("pre_site_transient_update_core",create_function("$a", "return null;")); wp_clear_scheduled_hook("wp_version_check");

add_filter ("pre_site_transient_update_core"

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");

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" ) ;

Запрет обновления шаблонов:

remove_action("load-update-core.php","wp_update_themes"); add_filter("pre_site_transient_update_themes",create_function("$a", "return null;")); wp_clear_scheduled_hook("wp_update_themes");

remove_action ("load-update-core.php" , "wp_update_themes" ) ;

add_filter ("pre_site_transient_update_themes" , create_function ("$a" , "return null;" ) ) ;

wp_clear_scheduled_hook ("wp_update_themes" ) ;

У этого способа есть только один недостаток — при смене шаблона все запреты анулируются. Об этом нужно помнить.

Управление автоматическим обновлением с помощью плагина

Плагин плагин Update Control . Настройки плагина появляются в разделе Настройки/Общие, если промотать вниз страницы. С помощью этого плагина можно запретить автоматические обновления самого вордпресса, плагинов, шаблонов и переводов.

Управление автоматическим обновлением c помощью конфигурационного файла.

Запрет на автоматическое обновление можно установить в файле конфигурации wp-config.php, использую специальные константы.
Например, для полного отключения автоматического обновления нужно использовать константу AUTOMATIC_UPDATER_DISABLED:

define("AUTOMATIC_UPDATER_DISABLED", true);

define ("AUTOMATIC_UPDATER_DISABLED" , true ) ;

Учтите, это отключит также автоматические обновления плагинов, шаблонов, языковых пакетов.

С помощью константы WP_AUTO_UPDATE_CORE можно управлять автоматическим обновлением ядра Вордпресс.

Значение minor — разрешить автоматическое обновления только на технические релизы (например с 3.7 на 3.7.1 и тд)
Значение false — отключит автоматическое обновление ядра
Значение true — включит автоматическое обновление для всех релизов.

Недавно один из наших читателей спросил, каким образом можно автоматически обновлять плагины WordPress. Многих пользователей раздражает то, что приходится обновлять плагины практически каждый день. В сегодняшней статье мы покажем вам как включить автоматическое обновление для плагинов WordPress. Также мы покажем, как исключить некоторые плагины из автоматического обновления.

Когда и зачем нужно включать автоматическое обновление плагинов WordPress

По-умолчанию, WordPress может обновлять себя автоматически, когда становится доступен минорный релиз, или же патч с обновлением безопасности движка. Обновление до мажорных релизов потребуется выполнять самостоятельно. Так же приходится поступать с установкой обновлений плагинов и тем.

Поддержка сайта в актуальном состоянии критична для безопасности и стабильности вашего сайта.

То же самое касается всех плагинов и тем, установленных на вашем сайте. Обновления нужны для того, чтобы получать новые функции и исправления.

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

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

Было бы неплохо, если бы можно было разрешить доверенным плагинам автоматически обновляться как это делает сам WordPress.

Давайте же посмотрим как можно автоматически обновлять плагины в WordPress.

Настраиваем автоматическое обновление для всех WordPress плагинов

Вы можете настроить WordPress на установку автоматическое обновление всех плагинов путем просто добавления кода в файл functions.php вашей темы или в :

Add_filter("auto_update_plugin", "__return_true");

Этот фильтр сообщает системе автоматического обновления WordPress чтобы тот устанавливал обновления для плагинов как только они становятся доступны.

Таким же образом можно настроить обновление и для своих тем, но применив другой код:

Add_filter("auto_update_theme", "__return_true");

Как автоматически устанавливать обновления для определенных плагинов в WordPress

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

Или же может возникнуть ситуация, когда вам не нужно обновлять какие-то определенные плагины.

Вот как можно включить или исключить плагины из автоматического обновления.

Первым делом вам потребуется установить и активировать плагин Automatic Plugin Updates .

После установки переходим на страницу Настройки » Automatic Plugin Updates для конфигурации настроек плагина.

Вы можете выбрать плагины, которые не нужно автоматически обновлять. Также можно включить уведомления по почте для автообновлений. После окончания настройки нажмите на кнопку сохранения изменений.

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

Примечание: Если вы используете этот плагин, то не нужно использовать предыдущий способ добавления фильтра auto_update_plugin.

Item not found:
"automatic-plugin-updates"
does not exist.

Как откатиться на предыдущую версию плагина после обновления?

Несовместимость плагина или темы может добавить проблем вашему сайту. Даже в виду того, что большинство хороших разработчиков тестируют свои плагины, всё равно возникают редкие баги, которые могут привести к поломке вашего сайта.

Первым шагом, который стоит предпринять для защиты вашего сайта от такого рода проблем, это установить какое-либо решение для создания резервных копий WordPress.

Однако, восстановление своего сайта из бекапа добавит вам много лишней работы. Если же вам известно, какой плагин или тема вызвали проблему, то будет проще просто откатить обновление.

Вот как можно легко откатить обновление плагина или темы. Просто установите и активируйте плагин WP Rollback .

После активации переходим на станицу плагинов своего сайта. Вы увидите новую опцию Rollback под каждым установленным на сайте плагином.

Нажатие на Rollback позволит вам откатить свой плагин на любую предыдущую его версию по вашему желанию. Также он умеет восстанавливать обновления темы. Более подробно о работе плагина можно прочитать в нашей статье о том,

Постоянное обновление ядра WordPress, а также плагинов и тем оформления – это важная часть работы по улучшению безопасности сайта и скорости его работы. Но увы, не всегда автообновление, является хорошей идеей. Давайте посмотрим, все за и против.

Для чего нужны обновления

Вначале рассмотрим, для чего вообще нужны обновления.

Существуют две основные причины для обновлений.

1.Ввод дополнительных функций. Разработчики, в том числе wordpress, постоянно улучшают эту систему управления, постоянно вводят новые функции.

Сюда же отнесу – удаление лишних функций. Да, такое тоже бывает, хотя и намного реже.

2.Устранение багов, уязвимостей. Зачастую, именно это становится основной причиной для обновления. Программисты постоянно ищут баги, уязвимости, благодаря которым, хакеры смогут сделать плохие дела.

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

— Но ведь это хорошо! – можете вы подумать, – ведь тогда, сайт будет в безопасности, все важные обновления сами установятся!

На самом деле, нет.

Почему автоматические обновления WordPress не являются хорошей идеей для вашего сайта?

Начиная с версии 3.7 , wordpress имеет возможность автоматического обновления в случае крупных изменений или по причине исправления по безопасности.

Действительно, есть два главных преимущества у автоматического обновления:

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

И второе преимущество, уменьшение работы для вебмастера. Система все что нужно, делает сама, и вмешательство человека не нужно.

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

Но мало того, зачастую, автоматическое обновление происходит вообще без оповещения. И вот, вебмастер садится за свой комп, проверяет статистику, а в ответ тишина. Сайт повис. В такой ситуации, можно быть уверенным, что причина сбоя сайта – обновление wordpress, будет последней, что придет в голову вебмастеру. Скорее всего, он будет думать, что причина сбоя сайта – хакерский взлом.

Вот и приходится выбирать, или вы обновите wordpress чуть позже, но спокойно, или однажды утром, вы проснетесь, и увидите, что ваш сайт не работает.

Отключите обновление WordPress и вы будете уверены, сайт постоянно работает без нареканий.

Или же

Включите автоматические обновления и надейтесь, что конфликты между ядром, плагинами и / или темами сломают сайт во время автоматического обновления.

Если вы все еще не уверены, что отключить автообновления WordPress — это лучший выбор, позвольте мне рассказать вам о чем-то, что произошло в 2016 году, и что, скорее всего, напугает вас навсегда:

Автообновление Wordfence

WordPress использует api.wordpress.org для обработки выпуска автоматических обновлений для пользователей. Вот как работает этот процесс:

Хотя такая процедура, делает процесс автоматического обновления сайтов намного проще для WordPress, это не полностью отказоустойчивая система. Подумайте об этом:

Когда на сайте установлены автоматические обновления, это означает, что он распознает api.wordpress.org как надежный источник и принимает все обновления от него. Но что произойдет, если вредоносный код, попадет в ядро?

Вот как будет выглядеть этот сценарий:

Поскольку WordPress является системой с открытым исходным кодом, и поскольку API автоматического обновления имеет общедоступный веб-хост GitHub, то команда разработчиков должна быть очень осторожна в том, что входит в код на сервере. Вот почему материалы GitHub проходят тщательную проверку перед тем, как попасть на сервер.

Несмотря на то, что здесь сильная безопасность, Wordfence обнаружил серьезную уязвимость в отношении одного из слабых алгоритмов хэширования webhook .

По сути, плохо сконструированный механизм хэширования значительно упростил возможность для злоумышленника взломать код и попасть внутрь api.wordpress.org . Если бы хакер смог это сделать, любая зараженная на сервере информация была бы распространена на каждый сайт с включенным автоматическим обновлением. Причем очень быстро.

И хотя разработчики WordPress быстро исправили эту проблему, но по факту, нет никаких сто процентных гарантий того, что в коде еще не осталось других дыр безопасности. Тем более, с учетом того, что ядро WordPress тоже постоянно модифицируется.

Почему надо запретить обновляться WordPress

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

Выключение автоматического обновления WordPress — это необходимое решение.

Как только вы отключите автоматические обновления WordPress, вы можете полностью контролировать процесс. Это означает тестирование каждого нового ядра, плагина или обновления темы в безопасной тестовой среде вдали от вашего сайта WordPress.

Если что-то случится, тогда нечего делать. Ваш испытательный сайт — взял на себя основную тяжесть сбоя, и вы будете знать, что обновлять работающий сайт, не стоит.

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

Отключить авто обновление, можно двумя путями: с некоторыми изменениями кода WordPress и с использованием плагина. Но так как, я испытываю некоторые проблемы при использовании кода, то мне проще использовать плагин. И для отключения авто обновления, хорошо подойдет плагин Easy Updates Manager, который вы можете скачать с официального репозитория wordpress

Надеюсь, у вас нет проблем с установкой плагинов на wordpress. Установка этого плагина, также стандартна. В конце установки, он у вас должен появится среди ваших установленных плагинов.

Зайдя в настройки плагина, вы увидите примерно следующее.

У плагина есть несколько вкладок: основные, плагины, темы, дополнительно.

На основной вкладке, вы можете регулировать сразу все. Включить или отключить обновление всего. Тут я вам рекомендую, включить обновления. В конце концов, обновления, важная процедура, и отказываясь совсем, вы рискуете тем, что ваш сайт станет легкой мишенью для хакеров.

Вторым пунктом, вы можете отключить автообновления.

Помимо этого, с помощью этого плагина, вы можете изменить и другие настройки обновления. Включить/выключить обновления всех тем, включить/выключить обновления плагинов. Можно также включить/выключить отдельные плагины, темы.

В общем, возможностей у этого плагина хватает.

Заключение

Как вы видите, есть очень веские причины, чтобы отключить автоматические обновления WordPress. И поскольку, это действительно легко сделать, то почему бы этого не сделать? Да, это дополнительная работа, да, нужно будет регулярно заходить в админку. А еще, весьма желательно, тестировать обновления на сайтах близнецах. А еще, возможно у вас несколько сайтов.

Но все равно, это проще сделать, чем нервничать, если вдруг сайт зависнет, и вы не сможете понять причину, и уж тем более, не будете знать, что делать.

Релиз WordPress 3.7, вышедший в октябре 2013 года, открыл нам доступ к функциям, которые пришлись по вкусу одним и оказались совершенно ненужными для других. На повестке дня автоматическое обновление минорных релизов ядра WordPress. При появлении нового минорного релиза (версия 3.9.1, например), WordPress теперь может автоматически обновлять ядро системы – великолепная новость для большинства пользователей WordPress, но, как оказалось, не для всех.

Зачем отключать автоматические обновления?

Если вы используете выделенный сервер, то, вероятно, ваш хостер делает апдейты за вас. Прежде чем внедрять обновление, им нужно убедиться, что в их среде новая версия работает стабильно (шансы, что что-то будет работать не так, крайне малы, но все-таки лучше протестировать заранее – до того, как вы начнете использовать эти обновления, особенно, если речь идет о крупных сайтах, для которых обычно используются выделенные серверы).

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

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

Возможно, вы попали в одной из тех ситуациях, в которых у вас появляется веская причина, чтоб отключить функцию автообновления на вашем сайте. Так, как же можно это сделать? Существует два способа проделать этот трюк:

  • С помощью плагина
  • Добавить кусочек кода

Так как использование плагина представляется нам самым простым способом добиться поставленной цели, то давайте начнем с этого.
Замечание: если используете систему управления версиями, например, Git, Subversion, Mercurial или Bazaar, то эта функция будет отключена в WordPress автоматически, так что вам не о чем волноваться.

А вот и плагин для этого

В репозитории WordPress вы найдете плагин, который называется Advanced Automatic Updates . После установки, зайдите на страницу с настройками плагина, где вы можете отключить нежелательные автоматические обновления, включая мажорные релизы ядра, плагинов и тем, а также дефолтные минорные релизы, для которых и была разработана функция.

И в качестве дополнительного бонуса, вы можете также отключить автоуведомления, которые WordPress автоматически посылает админу сайта или переписать админский email-адрес, заменив его собственным, если вы предпочитаете не видеть их и не мозолить ими глаза вашего клиента.

Замечание: Функция обновления темы будет работать только в том случае, если она скачана с официального репозитория WordPress.

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

Отключение функции автообновления

А что делать, если вам не хочется устанавливать лишний плагин на ваш сайт? Так как пользовательский интерфейс WordPress не имеет никакого рычажка, чтоб отключить сей функционал, то вам придется засучить рукава и покопаться в коде. Поверьте мне, это не так уж и сложно. Все, что вам нужно сделать, это добавить этот кусок кода в ваш файл wp-config.php:

Я предлагаю расположить этот код, и другие кусочки кода, которые мы будем дальше рассматривать, сюда, прямо над вот этой надписью в wp-config.php:

/* That"s all, stop editing! Happy blogging. */

(Здесь есть предложение – одно простое и быстрое правило: мне нравится держать все мои нестандартные версии файла wp-config здесь, чтоб я мог их легко найти. Но это ваше дело, где их держать.)

Включение обновлений для мажорных релизов

Если вы хотите включить обновления ядра и для мажорных, и для минорных релизов, то добавьте эту строчку кода в файл wp-config.php:

/* turn on both minor and major WordPress automatic core updates*/ define("WP_AUTO_UPDATE_CORE", true);

Обновления плагинов и тем

Если вы хотите, чтоб ваши темы и плагины, скачанные из репозитория WordPress, обновлялись автоматически, то код для этого весьма похож на тот, который мы только что использовали, но на этот раз для того, чтоб включить обновления нужен еще и фильтр (Читайте замечание выше, в котором говорится о связи автоматических обновлений и репозитория).

Для автоматического обновления плагинов, используйте этот код:

add_filter("auto_update_plugin", "__return_true");

И чтоб сделать тоже самое для тем, примените вот этот код

Add_filter("auto_update_theme", "__return_true");

Отключение всех обновлений

Допустим, вы решили, что вашему сайту вообще не нужны автоматические обновления. Вы гуру вашего домена (и веб-сайта, и возможно, email…но это к делу не относится) и решили заниматься обновлениями исключительно самостоятельно. Вот, как можно это сделать:

/* I am the captain of this ship, I’ll do my own updates thanks*/ define (‘ AUTOMATIC_UPDATER_DISABLED’, true);

Не забудьте, друзья, что этот кусок кода отключает всю и переписывает некоторые опции, которые вы, возможно, включили, так что используйте эту силу благоразумно.

Теперь, имея в своем распоряжении все эти кусочки кода, мы можем их миксовать друг с другом. Например, можно отключить обновления ядра, но позволить темам и плагинам наслаждаться всеми благами автообновления. Так, начнем с отключения обновлений ядра, добавив этот код:

/* Disable WordPress automatic updates */ define("WP_AUTO_UPDATE_CORE", false);

Затем добавим код включения обновлений тем и плагинов:

Add_filter("auto_update_plugin", "__return_true"); add_filter("auto_update_theme", "__return_true");

Email-уведомления

И еще один трюк напоследок – мы собираемся отключить Email-уведомления, которые вы получаете по завершении обновления. На этот раз, вместо того, чтоб добавить код в wp-config.php, мы вставим его в файл functions.php вашей активной темы.

/** * Disable the auto genereated email sent to the admin after a core update */ apply_filters("auto_core_update_send_email", false, $type, $core_update, $result);

И, вот, мы добились полного контроля над тем, как в автоматическом режиме обновляется ядро, плагины и темы WordPress-сайта. И еще вы можете отключить email-уведомления.


Close