En muchas ocasiones necesitamos desarrollar un plugin o un tema que necesita de las funcionalidades de otros tantos plugins. Tal vez para compartir los artículos en redes sociales, para generar un listado de posts relacionados o un plugin para crear nuevos campos personalizados. Pero, ¿Cómo podemos entregar nuestro desarrollo sin preocuparnos por si el usuario tiene instalado o no estas «dependencias«? Para ello les voy a mostrar cómo funciona la librería PHP «TGM Plugin Activation«.

Esta librería PHP, preparada y pensada para WordPress, nos permite definir dependencias al tema o plugin que estemos creando. Se pueden especificar 2 tipos de dependencias:
- Dependencias de plugins: Un array con los plugins que nuestro plugin o tema necesita para ejecutarse correctamente, indicando si son requeridos o aconsejables (entre otras tantas opciones).
- Dependencias de configuraciones: En muchas ocasiones nuestro desarrollo dependerá de valores guardados en la tabla de opciones de WordPress. Esta librería se encarga de crear estas variables y asignarle un valor por defecto para que nuestro desarrollo funcione sin problemas.
Hecha la introducción vamos a meter mano en el código:
Instalación
Para instalar el TGM Plugin Activation es necesario descargarse la librería de su página oficial y guardarla en alguna parte dentro de la estructura de nuestro desarrollo. Normalmente suelo guardar las librerías dentro de una carpeta llamada «includes».
Una vez descagada la librería debemos llamar a su fichero principal class-tgm-plugin-activation.php
desde nuestro functions.php.
<?php
// Call the library to manage dependencies
include __DIR__ . "/includes/TGM-Plugin-Activation-2.6.1/class-tgm-plugin-activation.php";
Este clase define un hook llamado tgmpa_register
al que tendremos que llamar para verificar las dependencias de nuestro desarrollo.
En esta función asignaremos 2 arrays, uno para la definir los plugins y otro para las configuraciones (este último es opcional) que luego pasaremos como parámetros a la función tgmpa
.
<?php
function register_required_plugins() {
// Variables
$plugins = array(
// Mi plugin o tema necesita del plugin WP REST API para funcionar correctamente
array(
'name' => 'WP REST API', // El nombre del plugin.
'slug' => 'rest-api', // El "slug" del plugin (normalmente el nombre de la carpeta).
'required' => true // Si es falso, el plugin es "recomendado" en lugar de "requerido".
)
);
// Mi plugin o tema necesita de las siguientes opciones en base de datos
$config = array(
'id' => 'maugelves',
'default_path' => 'https://maugelves.com',
'menu' => 'maugelves-dependency-plugins'
);
// LLamar a la función de la librería
// que se encargará de las dependencias.
tgmpa( $plugins, $config );
}
add_action( 'tgmpa_register', 'register_required_plugins' );
El plugin en acción
Cuando activemos nuestro tema o plugin en WordPress y nos falte alguna/s de las dependencias definidas en la clase recibiremos un lindo mensaje en el header de nuestro administrador.

De esta manera el usuario está informado sobre la necesidad de tener instalado un conjunto de plugins para el correcto funcionamiento de la web. La clase dispone de otras opciones que nos permiten especificar versiones, url’s de descarga, forzar la activación o desactivación.
Estas y más opciones pueden encontrarla en la sección Configuration de su web.
Por cierto ¿algún voluntario para traducir el plugin?
Foto: https://www.flickr.com/photos/joelogon/5112896429/
Deja una respuesta