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.
0 Commentaires