Как обновить данные плагина во время автоматического обновления плагина
Столкнулся с необходимостью обновить данные плагина при его обновлении. В новой версии изменяется струкрута таблицы базы данных и хотелось бы, чтобы при обновлении пользователи не видели что под капотом и просто обновили плагин, а все необходимые действия он сделал автоматически.
Разумеется нужно, чтобы нужные мне действия выполнялись один раз, во время обновления.
Нужно что-то вроде register_activation_hook().
Плагин при авто-обновлении сам себя деактивирует и активирует, правда не всегда (в каких случаях это происходит точно не знаю)...
Другой вариант: вам нужен хук
upgrader_process_complete
. Хук расположен в файле /wp-admin/includes/class-plugin-upgrader.php:Как видно во втором параметре можно определить что было обновлено, тема, ядро или плагин. Какой именно плагин был обновлен видимо можно выявить через передаваемую переменную $plugins. В общем, код какой-то такой:
Еще пример из кодекса:
Реальный пример на основе тестов
Очень важно, что этот хук должен быть в плагине который удаляется, а не в новом который обновляется... И это надо сказать проблема...
Нашел здесь и здесь.