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.
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.
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.
0 Commentaires