web-dev-qa-db-fra.com

Popup demandant si les données doivent être supprimées lors de la désinstallation du plug-in

J'ai un plugin qui crée des options dans wp_options, mais crée également des types de publication personnalisés et est utilisé pour renseigner ce type de publication. Lors de l’installation, il est logique de supprimer les données dans wp_options, mais en ce qui concerne le type de publication rempli, l’utilisateur doit avoir la possibilité de choisir s’il souhaite conserver ces données ou non.

Idéalement, je voudrais un popup quand il clique sur le lien de désinstallation, lui demandant s'il veut supprimer uniquement les fichiers du plugin et les options, ou tout supprimer. Comment puis-je faire un tel popup?

4
urok93

Que diriez-vous de quelque chose semblable à ceci

function wpse65611_script() {
    wp_enqueue_style( 'wp-pointer' );
    wp_enqueue_script( 'wp-pointer' );
    wp_enqueue_script( 'utils' ); // for user settings
?>
    <script type="text/javascript">
    jQuery('#embed-github-Gist .delete a').click(function(){
            jQuery('#embed-github-Gist .delete a').pointer({
                content: '<h3>Delete this or delete everything?</h3><p><a id="this" class="primary button" href="url1">Delete data</a> <a id="everything" class="button" href="'+jQuery('#embed-github-Gist .delete a').attr('href')+'">Delete plugin</a></p>',
                position: {
                    my: 'left top',
                    at: 'center bottom',
                    offset: '-1 0'
                },
                close: function() {
                    //
                }
            }).pointer('open');
return false;
        });
    </script><?php
}
add_action( 'admin_footer', 'wpse65611_script' );

Ce qui résulte en ceci:

enter image description here

Remplacez URL1 par l'URL qui supprimerait uniquement les données.

Notez que cela ne fonctionnera pas si vous le mettez dans le plugin et que le plugin est désactivé, le mettre dans un autre plugin ou dans un thème fonctionnerait, mais ce serait une mauvaise pratique.

Remplacez également l’identifiant du plug-in Github Gist intégré par votre propre

4
Tom J Nowell
function wpse65611_confirm_uninstall()
{
    ?>
    <form>
        <input type="button" onclick="wpse65611_confirmation()" value="Delete Data?">
    </form>
    <?php
}

function wpse65611_script()
{
<script type="text/javascript">
    function wpse65611_confirmation()
    {
        var answer = confirm( "Delete Data?" );
        if ( answer )
        {
            window.location = "<?php admin_url( 'plugins.php?delete=data' ); ?>";
        }
        else
        {
            window.location = "<?php admin_url( 'plugins.php' ); ?>";
        }
    }
</script>
}
add_action( 'admin_footer', 'wpse65611_confirmation' );
1
kaiser