Comprobar si un plugin está activado en WordPress

En WordPress 6.5 va a aparecer por primera vez una funcionalidad muy interesante para definir dependencias entre plugins. Es decir, si un plugin depende de otro podrás indicarlo de forma sencilla tal como describen en este artículo. Hasta ahora había alguna solución de terceros pero no eran estándares, eran pesadas y daban ciertos problemas por falta de mantenimiento.

Pero claro, que un plugin dependa de un tercero también implica que puede que llames a clases, a espacios de nombres o a funciones del otro plugin y si el otro plugin no está activado, aunque definas la dependencia, puedes crear errores en tu ejecución.

¿Cómo resolverlo? Pues aislando el funcionamiento de las partes «dependientes» y chequeando si el plugin está activo. Se puede hacer por dos medios diferentes.

Comprobar si una función, clase o espacio de nombre existe

Si WooCommerce está activado, la función is_woocommerce existirá así que puedes hacer algo así:

if( function_exists( 'is_woocommmerce' ) )

O para BuddyPress o BuddyBoss puede usar una función que sirve para ver si ciertos componentes a su vez de BuddyPress o BuddyBoss está activo:

if( function_exists( 'bp_is_active' ) )

Preguntarle a WordPress

Hay una función de WordPress llamada is_plugin_active que sirve justo para eso, por ejemplo:

if( is_plugin_active( 'redsys-gateway-for-woocommerce-pro/redsys-gateway-for-woocomme-pro.php' )

Como véis hay que pasar la ruta del plugin: directorio/fichero-principal-plugin.php. Pero esta función se define en wp-admin/includes/plugin.php y es más frecuente de lo que parece que este fichero no esté cargado en determinados momentos donde vayas a chequear si un plugin está activo.

¿Qué hacemos entonces? Puedes chequear si el plugin está activo creando tú una pequeña función para evitar cargar todo el fichero que te comentaba (algo mejoras el rendimiento al no hacer un include de algo tan grande para solo una función).

function chequear_plugin_activo( $plugin ){
    return in_array( $plugin, apply_filters( 'active_plugins', ( array ) get_option( 'active_plugins', array() ) ) ) ||  ( is_multisite() && array_key_exists( $plugin, ( array ) get_site_option( 'active_sitewide_plugins', array() ) ) );   
}

Además como verás esta función chequea también que el plugin esté activo a nivel de red, que no viene mal para entornos multi sitio.

1 estrella2 estrellas3 estrellas4 estrellas5 estrellas (Ninguna valoración todavía)
Cargando…

Almacenamos las IPs desde la que se envían las valoraciones para evitar fraudes

0

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Carrito