Как я могу удалить параметры с помощью крючка удаления реестра?


Прямо сейчас у меня есть этот код:

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'); 
}

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

Как я могу удалить параметры при удалении плагина?

Author: brasofilo, 2011-08-01

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' ); ?>

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

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

 5
Author: Mark Duncan, 2020-06-15 08:21:38

Внутри основного файла плагина:

// 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' );
}
 3
Author: Webars, 2017-08-18 16:18:54