¿Cómo registrar y notificar por correo electrónico cuando un plugin de WordPress es desactivado o eliminado?

A veces, quieres asegurarte de que un plugin esencial específico nunca se elimine de tu sitio web WordPress, o al menos quieres ser notificado cada vez que esto ocurra.

Imagina que tienes un plugin de impuestos que calcula los impuestos en tu sistema de tienda WooCommerce o Easy Digital Downloads. Si este plugin se desactiva por algún motivo, todos tus precios de compra se calcularán incorrectamente y puede pasar un tiempo hasta que te des cuenta.

No existe una protección al 100% para evitar que un plugin se desactive en tu sitio WordPress, pero cuando ocurra, puedes copiar el siguiente código en un mu-plugin como plugin-logger.php y añadirlo a la carpeta wp-content/mu-plugins.

PHP
<?php

/*
 * Plugin Name: Log deleted plugins by WP Staging
 * Plugin URI: https://wp-staging.com
 * Description: Write a log file whenever a plugin is deleted or deactivated plugins.
 *
 * This is a must-use standalone plugin.
 *
 * Author: WP Staging
 * Version: 1.0
 * Author URI: https://wp-staging.com
 */

add_action('deactivated_plugin', function ($plugin_file) {

    $datetime = date('d-m-Y H:i:s');

    $message = "[{$datetime}] Deactivated plugin {$plugin_file}";

    error_log(
        "$messagen",
        3,
        WP_CONTENT_DIR . "/7263767234-deleted-plugins.log"
    );

    wp_mail('youremailaddress@example.com', 'Plugin deactivated on example.com', $message);

}, 20, 2);

add_action('deleted_plugin', function ($plugin_file, $deleted) {

    if ($deleted) {

        $datetime = date('d-m-Y H:i:s');

        $message = "[{$datetime}] Deleted plugin {$plugin_file}";

        error_log(
            "[{$datetime}] Deleted plugin {$plugin_file}n",
            3,
            WP_CONTENT_DIR . "/7263767234-deleted-plugins.log"
        );

        wp_mail('youremailaddress@example.com', 'Plugin deleted on example.com', $message);
    }

}, 20, 2);

Una vez que cualquiera de los plugins instalados se desactive o elimine mediante los hooks de WordPress deleted_plugin o deactivated_plugin, recibirás una notificación por correo electrónico. También registrará el informe en el archivo wp-content//7263767234-deleted-plugins.log.

Recomiendo ajustar la ruta y el nombre del archivo por motivos de seguridad.

Artículos relacionados

Rene Hermenau

Autor: Rene Hermenau

Sobre el autor: René Hermenau es el fundador de WP STAGING. Trabaja en copias de seguridad de WordPress, entornos de staging, migraciones, gestión de bases de datos y flujos de despliegue seguros.