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.
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' ) )
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.
Nota: Hay una valoración incrustada en esta entrada, por favor, visita esta entrada para valorarla.RedSys aparte de los pagos normales, llamados autorizaciones, acepta una variedad de operaciones: desde autorizaciones…
WooCommerce permite ordenar los productos de una forma nativa, para poder presentar primero los que…
Cada vez que hay una actualización grande del núcleo WordPress, por defecto WordPress te instala…
Una pantalla LCD es una pantalla delgada y hecha de cristal líquido. Se usa en…
De todos los plugins que existen para Gravity Forms, que son numerosos porque la propia…
Un CMS, como WordPress, facilita la creación y gestión de contenido en la web, sin…