Ваш плагин может нуждаться в удалении временных данных когда пользователь удаляет его с сайта.
Плагин нуждается в чистке, когда он деактивирован, и была нажата ссылка удаления внутри админ панели 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");