Cuando hablamos de plugins instalados en una red WordPress multisitio, algunos plugins pueden ser activados para su uso por toda la red, mientras que otros sólo pueden ser activados en un único sitio específico.
Plug-ins activados por red:
El mismo plugin activado para un sitio específico:
Entender cómo funciona no debería ser demasiado difícil, pero podemos encontrarnos con problemas cuando intentamos comprobar en código si un plugin está activado para toda la red o sólo para un sitio concreto.
Hay muchas formas diferentes de conseguirlo, cada una con sus propias características.
is_plugin_active_for_network()
Si un plugin está activado para toda la red entonces esta función devolverá true (verdadero). Así, por ejemplo, si usamos esta función en el sitio 1 y nuestro plugin sólo está activado en el sitio 1 y no está configurado para ser activado en toda la red, entonces esta función devolverá false (falso).
if( is_plugin_active_for_network( 'woocommerce/woocommerce.php' ) ) {
// WooCommerce está activado para la red.
} else {
// WooCommerce no está activado para la red.
}
is_plugin_active()
Esta función es útil porque realiza dos tareas:
- Comprobará si el plugin está activado sólo en el sitio que está utilizando actualmente.
- También comprueba si el plugin está configurado para estar activo en toda la red.
Devuelve true (verdadero) si se cumple al menos una de estas dos condiciones.
if( is_plugin_active( 'woocommerce/woocommerce.php' ) ) {
// WooCommerce está activado en este sitio específico o activado en red.
) { // WooCommerce está activado en este sitio específico o activado en red.
Tenga la seguridad de que esta función también es segura en entornos de red no multisitio.
Comprobar si el plugin está activo sólo en un sitio específico
Dado que esta función no está disponible en el núcleo de WordPress, tengo el siguiente código personalizado para usted:
if( in_array( $plugin, (array) get_option( 'active_plugins', array() ) ) {
}
Puede comprobar sitios específicos en una red multisitio, pero no olvide proporcionar la dirección $blog_id
responder cantando $plugin
Variables.
switch_to_blog( $blog_id ).
if( in_array( $plugin, (array) get_option( 'active_plugins', array() ) ) {
}
restore_current_blog() ;
Comprueba en qué sitios está activo un plugin específico (en nuestro caso WooCommerce):
$sites = get_sites();
foreach( $sites as $site ) {
switch_to_blog( $site->blog_id );
if( in_array( 'woocommerce/woocommerce.php', (array) get_option( 'active_plugins', array() ) ) {
echo "WooCommerce está activo en {$site->blogname}";
}
restore_current_blog(); }
resúmenes
En resumen, tanto si utilizais_plugin_active()
sin embargois_plugin_active_for_network()
WordPress comprueba en ambos casos si los plugins están activados en las opciones del sitio:
No se preocupe por el uso excesivo de la base de datos, ya que estas opciones se cargan automáticamente y si utiliza la opciónis_plugin_active()
sólo lo comprobará desde una variable global.
Los valores de las opciones en la base de datos son en realidad una matriz serializada, como la siguiente: