2.3 Хуки активации / деактивации

Хуки активации и деактивации предоставляют способы выполнения действий, когда плагины активируются или деактивируются.

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

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

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

Активация

Чтобы настроить хук активации, используйте функцию register_activation_hook():

register_activation_hook( __FILE__, 'pluginprefix_function_to_run' );

Деактивация

Чтобы установить хук деактивации, используйте функцию register_deactivation_hook():

register_deactivation_hook( __FILE__, 'pluginprefix_function_to_run' );

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

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

Пример

Одним из наиболее распространенных способов использования хука активации является обновление постоянных ссылок WordPress, когда плагин регистрирует пользовательский тип записи. Это избавляет от неприятных 404 ошибок.

Давайте рассмотрим пример того, как это сделать:

/**
 * Register the "book" custom post type
 */
function pluginprefix_setup_post_type() {
    register_post_type( 'book', ['public' => true ] ); 
} 
add_action( 'init', 'pluginprefix_setup_post_type' );
 
 
/**
 * Activate the plugin.
 */
function pluginprefix_activate() { 
    // Trigger our function that registers the custom post type plugin.
    pluginprefix_setup_post_type(); 
    // Clear the permalinks after the post type has been registered.
    flush_rewrite_rules(); 
}
register_activation_hook( __FILE__, 'pluginprefix_activate' );

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

Используя приведенный выше пример, ниже показано, как отменить этот процесс и деактивировать плагин:

/**
 * Deactivation hook.
 */
function pluginprefix_deactivate() {
    // 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_deactivate' );

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

Наверх ↑