Show a confirmation message on plugin deactivation

When my plugin is deactivated, I want to get a confirmation from the user whether all plugin options/tables need to be deleted or left as it is. Based on the option selected, I want to proceed further. Is it possible ? If yes, how ?

Related posts

2 comments

  1. I have implemented a workaround with JavaScript. I’m loading my own JavaScript file:

    wp_enqueue_script('wp-deactivation-message', plugins_url('js/message.js', dirname(__FILE__)), array());
    

    which contains a script that adds following Event Listener – when user clicks on our plugin deactivate button it prevent it from performing this action and display a JavaScript popup asking what you need, if user accepts it will be deactivated, if user press 'cancel' nothing happens:

    message.js

    window.onload = function(){
            document.querySelector('[data-slug="plugin-name-here"] a').addEventListener('click', function(event){
                event.preventDefault()
                var urlRedirect = document.querySelector('[data-slug="plugin-name-here"] a').getAttribute('href');
                if (confirm('Are you sure you want to save this thing into the database?')) {
                    window.location.href = urlRedirect;
                } else {
                    console.log('Ohhh, you are so sweet!')
                }
            })
    }
    
  2. I had trouble with the dirname(__FILE__) for some reason, so I changed my code to this, where bkj-functions is my plugin slug.

    wp_enqueue_script('wp-deactivation-message', plugins_url('js/message-deactivate.js', __FILE__), array());

    with the following contents for js/message-dactivate.js (since I only need an “Alert” and not a “Confirm”):

    window.onload = function(){
        document.querySelector('[data-slug="bkj-functions"] .deactivate a').addEventListener('click', function(event){
            //event.preventDefault()
            alert("Reminder: If you are using the 'class' taxonomy for styling, that may disappear when this plugin has been deactivated.")
        })
    }
    

Comments are closed.