Enrique J. Ros

Qué son los mu-plugins de WordPress

Todos sabemos que las funcionalidades de WordPress (del core, me refiero) son limitadas: imposible alcanzar las necesidades de todos los tipos de webs. Afortunadamente, como digo muchas veces, tenemos para eso los plugins, que nos permiten aumentar las funcionalidades del propio WordPress a voluntad.

Pero ¿qué pasaría si hubiera una necesidad tan importante para el buen funcionamiento de una web que no funcionaría correctamente sin ella? ¿Cómo vamos a arriesgarnos a que pueda ser fácilmente desactivada, como cualquier otro plugin, lo cual rompería la web? Bueno, pues para esto tenemos los mu-plugins de WordPress.

Qué es eso de los mu-plugins

Bueno, la explicación es realmente sencilla: los mu-plugins (de must use plugins, plugins imprescindibles) son precisamente plugins que, por su importancia, deben estar activos siempre.

Y esto se consigue confiriéndoles una serie características (quizá lo adecuado sería hablar de «privilegios») que los plugins normales no tienen, y que veremos enseguida.

¿Que cómo sabes si tienes algún mu-plugin en tu web. Pues mirándolo, evidentemente. Ahí están, en el listado de plugins, listados como Imprescindibles:

Características de los mu-plugins

La primera característica que ve un usuario (un desarrollador se fijará en otras antes) es que, y si has leído el texto anterior ya te lo imaginas, los mu-plugins no se pueden desactivar.

Y cuando digo que no se puede quiero decir que no se puede: nadie, de ninguna forma, ni siendo administrador. Para desactivar un mu-plugin habría, directamente, que borrarlo del servidor.

La segunda característica, y esta sí que tenemos que tenerla muy en cuenta los desarrolladores, es que los mu-plugins se ejecutan antes que el resto de plugins. Por tanto, se ejecutan también antes que las funciones de la plantilla.

Y ¿cómo te afecta eso a ti? Pues si eres usuario más bien poco, pero si eres desarrollador tendrás que tenerlo en cuenta, porque quizá un plugin (o incluso una función del theme) pueda estar fastidiando sobreescribiendo tus funciones con las suyas, por ejemplo utilizando el mismo filter hook que estás usando tú.

A cambio eso te permitirá cargar ciertas cosas (como bibliotecas, scripts o estilos) que después vayan a ser utilizadas por otro plugin o por la plantilla.

Otra característica de los mu-plugins es que no necesitan cabeceras declaradas para funcionar. Si programas tus propios plugins sabrás que un plugin normal necesita que, al menos, declares el Plugin Name para que funcione, si no quieres recibir el error El plugin no tiene una cabecera válida.

Como contrapartida, un mu-plugin no puede contener directorios, debe ser simple y llanamente un archivo PHP. Aunque, para decirlo casi todo, sí hay algún truco que te permitiría organizarlos en directorios… Pero por defecto han de estar todos juntos, en su propio directorio: /wp-content/mu-plugins/

Porque, efectivamente, para convertir tu plugin en un mu-plugin basta con que lo metas en el directorio mu-plugins de wp-content (por defecto no está creado, tendrás que crearlo tú si no existe) y ya está. Tu script PHP ha ascendido ya a mu-plugin.

Por cierto que este directorio por defecto se puede cambiar, definiéndolo en el archivo wp-config.php simplemente definiendo estas dos constantes:

define ('WPMU_PLUGIN_DIR', '/ruta/a/los/mu-plugins');
define ('WPMU_PLUGIN_URL', 'http://URL/a/los/mu-plugins');

Utilidades prácticas de los mu-plugins

Y ahora la pregunta del millón: ¿cuál es la utilidad real de los mu-plugins?

En fin, si eres usuario de WordPress entiendo que no la veas. Si, como yo, eres desarrollador, sabrás que muchas veces hemos de «proteger» las funciones que creamos para dar a una web sus características. ¿Protegerlas de quién? Pues del cliente/usuario, que al fin y al cabo en la mayoría de ocasiones va a usar (indebidamente) una cuenta de administrador.

Y claro, el día que le dé por hacer «limpia» de plugins…

Salir de la versión móvil