deactivated_plugin hook: get the name of the plugin

I would like that every time any plugin previously activated, a function from my plugin be called, returning (at least) the name of the plugin, or something that allows to identify it (file name?).

I figured i could use the action hook “deactivated_plugin” but i’m wondering what information from the desactivated plugin is actually available?

Related posts

Leave a Reply

1 comment

  1. You can hook into the action 'deactivate_plugin' to get the plugin’s base name and (as second parameter) if it was deactivated network wide.

    See wp-admin/includes/plugin.php function deactivate_plugins().

    There seems to be no hook for plugin deletion.

    Sample logging code:

    add_action( 'activated_plugin', 't5_plugin_logger', 10, 2 );
    add_action( 'deactivated_plugin', 't5_plugin_logger', 10, 2 );
    
    /**
     * Log plugin activations and deactivations.
     *
     * @param  string $plugin
     * @param  bool   $network_wide
     * @return void
     */
    function t5_plugin_logger( $plugin, $network_wide )
    {
        $log_size = 20;
        $log      = get_option( 't5_plugin_log', array () );
    
        // Remove the oldest entry.
        sizeof( $log ) > $log_size and array_shift( $log );
    
        $plugin_data = get_plugin_data( WP_PLUGIN_DIR . '/' . $plugin );
        $date_format = get_option( 'date_format' ) . ' · ' . get_option( 'time_format' );
    
        $log[] = array (
            'user'    => esc_html( wp_get_current_user()->display_name ),
            'plugin'  => $plugin_data['Name'],
            'network' => $network_wide ? '✔' : '',
            'time'    => date( $date_format, time() ),
            'action'  => 'deactivated_plugin' === current_filter() ? 'deactivated' : 'activated'
        );
    
        update_option( 't5_plugin_log', $log );
    }
    

    Now every plugin activation or deactivation will be added to the log option field. You can use this data anywhere. I made a small dashboard widget:

    enter image description here

    Download as plugin from GitHub: T5 Plugin Log