Как я могу удалить параметры с помощью крючка удаления реестра?
Прямо сейчас у меня есть этот код:
function mr_np_activate(){
// hook uninstall
if ( function_exists('register_uninstall_hook') )
register_uninstall_hook(__FILE__,'mr_np_uninstall');
}
register_activation_hook(__FILE__,'mr_np_activate');
/**
* Delete options
*
**/
function mr_np_uninstall() {
delete_option('my_plugins_options');
}
Но когда я удаляю свой плагин, все мои опции доступны. (Я сделал еще один плагин, просто чтобы показать свои возможности).
Как я могу удалить параметры при удалении плагина?
2 answers
Вы всегда можете использовать uninstall.php вместо этого файл для плагина.
Http://codex.wordpress.org/Function_Reference/register_uninstall_hook
Если плагин не может быть написан без выполнения кода внутри плагина, то плагин должен создать файл с именем'uninstall.php 'в папке базового плагина. Этот файл будет вызван, если он существует, во время процесса удаления, минуя блокировку удаления.
При использовании 'uninstall.php "тот плагин всегда должен проверять наличие константы WP_UNINSTALL_PLUGIN перед выполнением. Константа WP_UNINSTALL_PLUGIN определяется WordPress во время выполнения во время удаления плагина, она не будет присутствовать, если'uninstall.php "запрашивается напрямую.
Для этого файла потребуется буквально одна строка кода, если единственное намерение состоит в том, чтобы удалить опцию.
<?php delete_option( 'your-option' ); ?>
Фактически не отвечая на ваш вопрос, просто предлагая альтернативный подход к работе с плагином деактивация.
Что касается проблемы, я думаю, проблема в том, что вы пытаетесь добавить обратный вызов деактивации во время подключения активации, что мне кажется немного отсталым или неправильным, я бы предположил, что крючки деактивации должны быть зарегистрированы таким же образом, как и крючок активации, но ни один из них не вложен в другой.
Внутри основного файла плагина:
// plugin activation
register_activation_hook( __FILE__, 'my_fn_activate' );
function my_fn_activate() {
add_option( 'my_plugin_option', 'some-value' );
}
// plugin deactivation
register_deactivation_hook( __FILE__, 'my_fn_deactivate' );
function my_fn_deactivate() {
// some code for deactivation...
}
// plugin uninstallation
register_uninstall_hook( __FILE__, 'my_fn_uninstall' );
function my_fn_uninstall() {
delete_option( 'my_plugin_option' );
}