2.4 Методы деинсталляции

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

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

Когда ваш плагин будет удален, вы захотите очистить все его параметры и/или настройки, относящиеся к плагину, и/или другие объекты базы данных, такие как таблицы.

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

Эта таблица иллюстрирует различия между деактивацией и удалением.

СценарийХук деактивацииХук деинсталляции
Очистка кеш / временных файловДаНет
Очистка постоянных ссылокДаНет
Удаление параметров из {$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

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

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

Константа НЕ определяется, когда деинсталляция выполняется через register_uninstall_hook().

Вот пример удаления записей опций и удаления таблицы базы данных:

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

Наверх ↑