web-dev-qa-db-fra.com

Comment puis-je supprimer des options avec register_uninstall_hook?

En ce moment, j'ai ce code:

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

Mais lorsque je supprime mon plugin, toutes mes options sont là. (J'ai créé un autre plugin juste pour montrer mes options).

Comment puis-je supprimer des options lorsque le plugin est supprimé?

[]

Homem Robô

2
homemrobo

Vous pouvez toujours utiliser un fichier uninstall.php pour le plug-in.

http://codex.wordpress.org/Function_Reference/register_uninstall_hook

Si le plug-in ne peut pas être écrit sans exécuter de code dans le plug-in, celui-ci doit alors créer un fichier nommé "uninstall.php" dans le dossier du plug-in de base. Ce fichier sera appelé, s’il existe, pendant le processus de désinstallation en ignorant le hook de désinstallation.

Lorsque vous utilisez 'uninstall.php', le plug-in doit toujours vérifier la constante WP_UNINSTALL_PLUGIN avant de l'exécuter. La constante WP_UNINSTALL_PLUGIN est définie par WordPress lors de l’exécution du plugin, elle ne sera pas présente si 'uninstall.php' est demandé directement.

Ce fichier n'aurait besoin littéralement d'une ligne de code que si la seule intention est de supprimer une option.

<?php delete_option( 'your-option' ); ?>

Ne pas réellement répondre à votre question, mais simplement proposer une approche alternative pour traiter la désactivation des plugins.

En ce qui concerne le problème, je pense que le problème est que vous essayez d’ajouter le rappel de désactivation pendant le hook d’activation, ce qui me semble un peu en arrière ou incorrect, j’imagine que les hooks de désactivation devraient être enregistrés de la même manière que le crochet d’activation, mais ni imbriqué dans l’autre.

4
Mark Duncan

Dans le fichier du plugin principal:

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