By admin 30 Ottobre 2019 In Uncategorized

WordPress: Aggiungere una classe all’elemento “body” in base al ruolo dell’utente loggato

Mi è capitato di dove apportare delle modifiche in CSS all’interfaccia della dashboard e del sito in base al ruolo dell’utente loggato. In particolare dovevo nascondere le notifiche, una parte del menu e alcuni tasti presenti nella dashboard per gli editori che fossero loggati.


Sono andato alla ricerca, nei meandri del web, di un plugin o un tool che mi permettesse di raggiungere un tale livello di manipolazione del mio sito in wordpress e dopo mille peripezie ho raggiunto uno script di qualche magnanimo sviluppatore che oltre a porsi il mio stesso interrogativo ha contribuito al miglioramento della vita di noi “wordpresser” incalliti con il seguente script:

function print_user_classes() {
    if ( is_user_logged_in() ) {
        add_filter('body_class','class_to_body');
        add_filter('admin_body_class', 'class_to_body_admin');
    }
}
add_action('init', 'print_user_classes');
 
/// Add user role class to front-end body tag
function class_to_body($classes) {
    global $current_user;
    $user_role = array_shift($current_user->roles);
    $classes[] = $user_role.' ';
    return $classes;
}
 
/// Add user role class and user id to front-end body tag
 
// add 'class-name' to the $classes array
function class_to_body_admin($classes) {
    global $current_user;
    $user_role = array_shift($current_user->roles);
    /* Adds the user id to the admin body class array */
    $user_ID = $current_user->ID;
    $classes = $user_role.' '.'user-id-'.$user_ID ;
    return $classes;
    return 'user-id-'.$user_ID;
}

Dopo aver inserito questo script nel mio file functions.php, nella cartella del mio tema child, e dopo aver aggiornato e analizzato la mia dashboard mi sono ritrovato tra le classi assegnate al <body> del testo relativo al mio ruolo di amministratore.

Al tag <body> viene aggiunta una classe relativa al ruolo dell’utente attualmente loggato

È una soluzione valida se si voglio apportare modifiche lato front-end utilizzando la classe relativa al ruolo per rendere queste modifiche esclusive. Don’t Panic!

Leave a reply