Para empezar, vamos a repasar qué es eso de un mu-plugin, que si no lo conocías te anticipo que te van a encantar, y le verás montones de posibilidades…
¿Qué es un mu-plugin?
- mu-plugin es una abreviatura de must-use plugin, algo así como plugin que debe-usarse, o en español: imprescindible.
- Los mu-plugins son plugins que WordPress carga automáticamente sin que el usuario los pueda activar o desactivar desde el el escritorio de administración.
- Los mu-plugin se guardan en la carpeta
/wp-content/mu-plugins/. - Son plugins que están siempre activos mientras existan en esa carpeta.
¿Cómo funciona un mu-plugin?
- Durante el proceso de carga, WordPress busca archivos PHP que estén directamente en la carpeta
/wp-content/mu-plugins/y ejecuta su contenido. - WordPress no busca dentro de carpetas en la carpeta
/wp-content/mu-plugins/, únicamente en archivos PHP sueltos.
O sea que, por defecto:
- Si pones un archivo PHP suelto en
/wp-content/mu-plugins/WordPress lo carga. - Si pones una carpeta dentro de
/wp-content/mu-plugins/, WordPress no carga automáticamente nada que haya en la carpeta.
Entonces ¿se puede o no se puede usar un mu-plugin que incluya más archivos y carpetas?
En realidad sí, la cosa tiene truco…
¿Cómo crear un mu-plugin que tenga varios archivos e incluso carpetas?
El truco consiste en, sí, crear un mu-plugin en PHP, pero que, en vez de que contenga todas las funciones que WordPress deba ejecutar, que solo incluya llamadas a otros archivos, dentro de carpetas o no.
El proceso es en realidad sencillo:
- Creas el fichero PHP que será el mu-plugin principal, por ejemplo
personalizaciones.php. - En vez de incluir en este archivo todos los códigos personalizados que quieras ejecutar automáticamente con WordPress añade tus códigos en archivos e incluso carpetas separadas, por ejemplo:
wp-content/ └── mu-plugins/ ├── personalizaciones.php └── personalizaciones/ ├── generales.php ├── woo/ │ └── woo.php └── wp/ └── wp.php
- En el mu-plugin principal añade llamadas a los distintos archivos de la ruta creada para que se ejecuten, por ejemplo:
<?php /** * Plugin Name: Personalizaciones MU de Ayuda WordPress * Description: Plugin MU con personalizaciones de Ayuda WordPress en archivos organizados en carpetas. * Author: Fernando Tellado * Author URI: https://ayudawp.com */ // Archivos a incluir require_once __DIR__ . '/personalizaciones/generales.php'; require_once __DIR__ . '/personalizaciones/woo/woo.php'; require_once __DIR__ . '/personalizaciones/wp/wp.php';
-
- Otro método alternativo sería hacer que tu archivo mu-plugin principal sea un PHP de carga automática, para que no tengas que poner todas y cada una de las rutas con un
requirecada vez, sino que cargue automáticamente todo lo que se encuentre en la ruta que le indiques. Siguiendo el ejemplo, sería sustituir el código del punto 3 anterior por este otro:<?php /** * Plugin Name: Personalizaciones MU de Ayuda WordPress * Description: Plugin MU con personalizaciones de Ayuda WordPress que carga automáticamente archivos organizados en carpetas. * Author: Fernando Tellado * Author URI: https://ayudawp.com */ function ayudawp_autocarga_ficheros_muplugin($dir) { foreach (glob($dir . '/*.php') as $file) { require_once $file; } foreach (glob($dir . '/*', GLOB_ONLYDIR) as $subdir) { ayudawp_autocarga_ficheros_muplugin($subdir); } } // Ejecutamos la carga automática en el directorio padre indicado en la siguiente línea ayudawp_autocarga_ficheros_muplugin(__DIR__ . '/personalizaciones');
- Otro método alternativo sería hacer que tu archivo mu-plugin principal sea un PHP de carga automática, para que no tengas que poner todas y cada una de las rutas con un
Da igual el método elegido, el resultado es el mismo, tu mu-plugin ejecutará las funciones o lo que sea que hayas incluido en los archivos PHP reclamados, con require uno a uno, o con el autoloader.
Nota importante: Por supuesto, cada archivo PHP individual debe tener la estructura y formato de archivo PHP para que sea ejecutable, no solo el mu-plugin principal, no vale con poner solo la función, acción, filtro o lo que sea.
Visualmente, en tu estructura de carpetas y archivos, el ejemplo anterior, se vería así:
¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!







