Ticker

6/recent/ticker-posts

Ad Code

Responsive Advertisement

Cómo desactivar plugins dependiendo del perfil de usuario

El otro día veíamos cómo desactivar plugins dependiendo del estado de conexión del usuario, y hoy vamos a ver una variación del mismo código, pero en esta ocasión dependiendo del perfil de usuario.

El código sería así:

/* Desactivar plugins para un perfil de usuario */

add_filter( 'option_active_plugins', 'desactivar_plugins_perfil_contributor' );
function desactivar_plugins_perfil_contributor( $plugins ) {

// El gancho 'option_active_plugins' se lanza antes de que se genere info de usuario
// por lo que hay que cargar pronto este archivo
require (ABSPATH . WPINC . '/pluggable.php');

// Si el usuario tiene el perfil de contributor
if ( current_user_can('Contributor') ) {

// Usa el slug de la carpeta del plugin y el nombre de su archivo php principal
// como en los siguientes ejemplos
$plugins_not_needed = array ('woo-add-to-cart-popup/woo-add-to-cart-popup.php',
'hurry-timer/hurry-timer.php','wp-advanced-ads-manager/wp-advanced-ads-manager.php' );
foreach ( $plugins_not_needed as $plugin ) {
$key = array_search( $plugin, $plugins );
if ( false !== $key ) {
unset( $plugins[ $key ] );
}
}
}
return $plugins;
}

El código puedes añadirlo como plugin independiente o plugin imprescindible (mejor), pues necesita cargarse pronto.

Con esto, cuando el usuario conectado tenga el perfil de contributor no se cargarán los plugins del array.

Una posible variación de este código es si quieres desactivar plugins en base a perfiles de usuario, no de WordPress, sino de WooCommerce, como el gestor de tienda, en cuyo caso puedes usar este otro código:

/* Desactivar plugin si el usuario es gestor de tienda */
add_action( 'init', 'ayudawp_desactivar_plugin_gestores_tienda' );

function ayudawp_desactivar_plugin_gestores_tienda() {
if ( wp_doing_ajax() ) return;
if ( wc_current_user_has_role( 'shop_manager' ) ) {
deactivate_plugins(
array( 'hurry-timer/hurry-timer.php' ),
true,
false,
);
} else {
activate_plugins(
array( 'hurry-timer/hurry-timer.php' ),
'',
false,
true,
);
}
}

Todo lo demás es igual que con el código anterior.

Enregistrer un commentaire

0 Commentaires