web-dev-qa-db-fra.com

Différent thème d'administration - basé sur le rôle?

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.

2
Daniel

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.

2
Charles

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.

0
Jeremy Ross