Я исследовал это несколько раз, но мой поиск не обнаружил ничего, кроме пользовательского кода, который может или не может быть хорошей практикой WordPress.
Начиная с последних выпусков (WordPress 3.9 "Smith"), добавлен ли хук в процесс обновления плагина? Я спрашиваю, потому что это очень основная потребность, но я не вижу, чтобы это добавлялось в кодекс (пока). Если нет, то что обычно используют разработчики?
РЕДАКТИРОВАТЬ: просто чтобы уточнить, я не говорю об активации, а об обновлении, таким образом, если есть изменения в базе данных или иным образом, это может быть устранено.
plugin-development
actions
upgrade
user1915665
источник
источник
Ответы:
Я не думаю, что действие было добавлено. Вы можете посмотреть детали версии для любой версии и увидеть все новые добавленные действия.
WordPress Способ запуска кода при обновлении плагина описан здесь :
и с примером кода здесь :
источник
register_activation_hook
, так как в большинстве случаев плагин деактивируется / активируется всякий раз, когда вы обновляете его от администратора. При подключенииplugins_loaded
будет проверяться каждая загрузка страницы (включая интерфейс). Был разговор о представленииregister_update_hook
, но это было помечено как WONTFIX некоторое время назад. Обсуждение там полезно.Из обсуждения, в котором они решили не добавлять пользовательский хук / функцию, специфичную для обновления , это звучит как «большинство людей» (по состоянию на 4 года назад)
register_activation_hook
, так как вызывается, когда плагин обновляется через страницу администратора; большинство примеров, которые я видел с тех пор, следуют этой тенденции.Для большинства случаев я бы предложил не подключаться
plugins_loaded
, так как он вызывался бы при каждой загрузке страницы. Исключение из этого упоминается в обсуждении: пути обновления через FTP / SVN являются «крайними случаями», поскольку у WP не будет механизма, чтобы узнать, что плагин был изменен, и в этом случае предыдущий ответ может быть более уместным.См. Https://gist.github.com/zaus/c08288c68b7f487193d1 для примера использования простого фреймворка
register_activation_hook
.источник
register_activation_hook
запуск обновлений не гарантируется, см. make.wordpress.org/core/2010/10/27/…plugins_loaded
- запускает каждую нагрузку и может быть обременительным / медленным.Начиная с WordPress 3.9 вы можете использовать
upgrader_process_complete
хук.См. Ссылку 1 , 2
Вот пример кода:
После того, как плагин обновлен, он установит задачу в БД, используя
set_transient()
функцию. Не рекомендуется добавлять код обновления при вызовеupgrader_process_complete
hook.Далее, если вы перейдете на другую страницу администратора,
plugins_loaded
будет работать ловушка и там будет работать код обновления.Пожалуйста, обратите внимание, что этот плагин должен быть активирован, чтобы заставить работать крючок обновления
Это не работает при активации плагина, поэтому, если вы хотите, чтобы код, который работает, активировал плагин, вы должны закодировать его в
register_activation_hook()
функции.источник