Руководство разработчика плагинов для WordPress (часть 6) 05 Марта 2018

Руководство разработчика плагинов для WordPress (часть 6)

Зацепки активации/деактивации

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

Активация

Для установки зацепки активации, используйте функцию register_activation_hook():
register_activation_hook( __FILE__, "pluginprefix_function_to_run" );
            

Деактивация

Для установки зацепки деактивации используйте функцию register_deactivation_hook():
register_deactivation_hook( __FILE__, "pluginprefix_function_to_run" );
            
Первый параметр в каждой из этих функций ссылается на основной файл вашего плагина, который является тем файлом, в котором вы разместили заголовочный комментарий плагина. Обычно эти две функции будут из основного файла плагина, однако, если эти функции были расположены в любом другом файле, вы должны обновить первый параметр для корректного указания на основной файл плагина.

Пример

Одним из основных применений зацепки активации является обновление Wordpress permalinks, когда плагин регистрирует произвольный тип записи. Это избавляет от неприятных ошибок 404. Давайте взглянем на следующий пример того, как это сделать:
 function pluginprefix_setup_post_type() {
                // register the "book" custom post type
                register_post_type( "book", ["public" => "true"] );
             }
             add_action( "init", "pluginprefix_setup_post_type" );<br> 
             function pluginprefix_install() {
                // trigger our function that registers the custom post type
                pluginprefix_setup_post_type();<br> 
                // clear the permalinks after the post type has been registered
                flush_rewrite_rules();
             }
             register_activation_hook( __FILE__, "pluginprefix_install" );

            
Если вы незнакомы с процессом регистрации произвольных типов записей, не стоит беспокоиться — это будет подробно описано далее. Данный пример использован по причине того, что он очень простой. Используя пример выше, следующее — это то, как произвести обратный процесс и деактивировать плагин:
 function pluginprefix_deactivation() {
                // unregister the post type, so the rules are no longer in memory
                unregister_post_type( "book" );
                // clear the permalinks to remove our post type"s rules from the database
                flush_rewrite_rules();
             }
             register_deactivation_hook( __FILE__, "pluginprefix_deactivation" );

            
Для получения дальнейшей информации по зацепкам активации и деактивации есть несколько отличных ресурсов:
  • register_activation_hook() в справке по функциям WordPress
  • register_deactivation_hook() в справке по функциям WordPress.
]]