WordPress: хук удаления

· WordPress, Основы и Разработка плагинов · 1 мин чтения

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

Плагин нуждается в чистке, когда он деактивирован, и была нажата ссылка удаления внутри админ панели WordPress.

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

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

Сценарий Хук деактивации Хук удаления
Удаление кеша/временных файлов Да Нет
Удаленные постоянных ссылок Да Нет
Удаление опций из таблицы {$wpdb->prefix}_options Нет Да
Удаление таблиц из wpdb Нет Да

Способ 1: register_uninstall_hook

Для установки хука удаления, используйте функцию register_uninstall_hook().

Выглядит это следующим образом:

register_uninstall_hook(__FILE__, 'pluginprefix_function_to_run');

Способ 2: файл uninstall.php

Для этого способа вам нужно создать файл uninstall.php внутри корневой папки плагина. Этот файл будет магическим образом запущен при удалении плагина.

Расположение файла: /plugin-name/uninstall.php, где plugin-name — это название вашего плагина.

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

Константа будет объявлена WordPress’ом во время использования uninstall.php.

Константа НЕ объявляется, если вы используете register_uninstall_hook().

Ниже представлен пример с удалением опций из таблицы options и удалением собственной таблицы mytable.

// если uninstall.php не был вызвал WordPress, тогда не стиот дальше запускать скрипт
if (!defined('WP_UNINSTALL_PLUGIN')) {
    die;
}

$option_name = 'wporg_option';
 
delete_option($option_name);
 
// для опций сайта в мультисайт
delete_site_option($option_name);
 
// удалить собственную таблицу в базе
global $wpdb;
$wpdb->query("DROP TABLE IF EXISTS {$wpdb->prefix}mytable");

Добавить комментарий

Добавить VK Man комментарии на мой сайт

Ваш e-mail не будет опубликован. Обязательные поля помечены *