Ticker

6/recent/ticker-posts

Ad Code

Responsive Advertisement

Modificar automáticamente un plugin luego de su actualización

En un artículo anterior habíamos visto cómo evitar actualizaciones de plugins, sin embargo en algunos es posible que requieras actualizar el plugin pero luego sobrescribir archivos modificados.

 

Generalidades

En algunos proyectos puede ser necesario modificar archivos de temas y plugins, la desventaja es que perderemos nuestros cambios tras una actualización.

En este artículo veremos cómo realizar alguna acción para mitigar esto, por ejemplo sobrescribir las modificaciones, enviar un correo de aviso, etc. , cuando un plugin específico ha sido actualizado.

Sabemos que WordPress es flexible y en la medida de lo posible evitaremos modificar los archivos de plugins y temas, es por eso que usamos los Hooks para hacer cambios.

 

Código que se ejecute tras finalizar la actualización de un plugin

En el siguiente código detectamos si el plugin de WooCommerce ha sido actualizado, si ha sido actualizado entonces sobrescribiremos uno de sus archivos con un archivo que tenemos en la ruta del tema hijo.

Las modificaciones en este archivo a modo de ejemplo simplemente cambian el icono de WooCommerce en el menú de la administración.
add_action( 'upgrader_process_complete', 'process_woocommerce_update', 10, 2 );

function process_woocommerce_update( $upgrader_object, $options ) {

        // Verificamos que sea una actualización de plugin
        if ( $options['action'] == 'update' && $options['type'] == 'plugin' ) {
                // Obtenemos los plugins que fueron actualizados
                $plugins_actualizados = $options['plugins'];

                // Definimos el slug del plugin de WooCommerce
                $slug_woocommerce = 'woocommerce/woocommerce.php';

                // Verificamos si WooCommerce está en la lista de plugins actualizados
                if ( in_array( $slug_woocommerce, $plugins_actualizados ) ) {

                        // Definimos el archivo que se sobrescribirá
                        $from = get_stylesheet_directory() . '/updates/class-wc-admin-menus.php'; // Archivo en el tema hijo
                        $to = WP_PLUGIN_DIR . '/woocommerce/includes/admin/class-wc-admin-menus.php'; // Archivo en el plugin

                        // Copiamos el archivo actualizado a la carpeta del plugin
                        copy( $from, $to );

                        error_log(print_r('Se ha actualizado el archivo de WooCommerce',true));
                }
        }
}

En el código anterior:

  • Usamos el Hook upgrader_process_complete para detectar cuando una actualización ha sido completada
  • Se hace referencia a la función process_woocommerce_update la cual tiene dos parámetros para detectar el objeto que ha sido actualizado
  • Verificamos si se esta actualizando un plugin usando la variable $options
  • Para verificar si se trata de WooCommerce el plugin que ha sido actualizado hacemos la verificación con la variable $plugins_actualizados
  • Cuando nos aseguramos que es WooCommerce el plugin que ha sido actualizado entonces podemos llevar a cabo alguna acción, en nuestro ejemplo simplemente será reemplazar un archivo

 

Conclusión

Como has podido comprobar, es posible realizar modificaciones tras la actualización de un plugin de WordPress. En este artículo hemos visto como realizar esto con un ejemplo práctico de reemplazo de archivos a través de código.

 

La entrada Modificar automáticamente un plugin luego de su actualización es un artículo reciente del sitio DecodeCMS.

Enregistrer un commentaire

0 Commentaires