Je me demande comment changer le thème administrateur en fonction du rôle d'un utilisateur. Actuellement, je peux changer le thème admin en utilisant un plugin (ex: Blue Admin ) - mais je ne suis pas sûr de savoir comment faire ces modifications en fonction d'un rôle (abonné, etc.).
Voudrait également avoir des éléments de menu spécifiques/etc affichés uniquement pour certains rôles.
Je n'ai aucun problème à plonger dans functions.php
ou quoi que ce soit d'autre qui pourrait être nécessaire pour accomplir cela - espérant juste être dirigé dans la bonne direction en premier.
Vous pouvez ensemble forcer un rôle utilisateur Admin Color Scheme pro spécifique via une fonction.
Personnellement, je voudrais d'abord supprimer l'option permettant de sélectionner le schéma dans profile.php (Utilisateurs back-end/Votre profil)
Vous trouverez ci-dessous un exemple de fonction qui définit un jeu de couleurs spécifique pour des rôles d'utilisateur spécifiques.
Veuillez d'abord faire une sauvegarde du fichier functions.php avant d'ajouter cette fonction.
/**
* Set Admin Color Scheme by Role
* Codex: {@link https://codex.wordpress.org/Roles_and_Capabilities}
* {@link https://codex.wordpress.org/Function_Reference/wp_get_current_user}
* @version WordPress 4.6
*/
add_filter( 'get_user_option_admin_color', 'wpse_238039_set_admin_color' );
function wpse_238039_set_admin_color()
{
$current_user = wp_get_current_user();
// Check for the user role
if ( user_can( $current_user, 'subscriber' ) )
{
// Remove the Admin Color Scheme picker
remove_action( 'admin_color_scheme_picker', 'admin_color_scheme_picker' );
// Set the Admin Color Scheme you want for this role
return 'light';
}
if ( user_can( $current_user, 'contributor' ) )
{
remove_action( 'admin_color_scheme_picker', 'admin_color_scheme_picker' );
return 'coffee';
}
} // end function
Il est bien sûr possible de laisser l’option Schéma de couleurs administrateur sur la page de profil de l’utilisateur en supprimant ces lignes de la fonction.
Voudrait également avoir des éléments de menu spécifiques/etc affichés uniquement pour certains rôles.
Il est possible d'ajouter/supprimer des éléments dans une autre fonction avec le même type de blocs d'instruction IF. Sachez simplement ce que vous voulez/voulez dans une fonction spécifique et utilisez les bons crochets
Remarque: Voir les URL @link dans la fonction ci-dessus pour les références.
Le jeu de couleurs admin est stocké dans user_meta
sous la forme admin_color
(la valeur par défaut est ' fraîche ').
Vous pouvez écrire un rappel qui se déclenche sur user_registration
qui le définirait en fonction du rôle.
add_action( 'user_register', 'wpse_registration_save', 10, 1 );
function wpse_registration_save( $user_id ) {
# ...get the user role
# ...write switch statement based on role
# ... update_user_meta($user_id, 'admin_color', 'funky');
}
Je ne suis pas sûr de savoir comment cela fonctionne avec Blue Admin, mais ce serait le moyen de le faire sans utiliser de plug-ins. S'il est malin, Blue Admin stockera également ses informations de thème dans user_meta
, de sorte que l'approche pourrait être très similaire dans les deux cas.