Hook body_class per le pagine di amministrazione

5 mar 2012, 08:51:15
Visualizzazioni: 14K
Voti: 22

L'hook body_class sembra funzionare solo con le pagine non di amministrazione. Quando faccio:

add_filter('body_class', 'add_body_classes');
function add_body_classes($classes) {
        $classes[] = 'myclass';
        return $classes;
}

C'è un altro hook che dovrei usare se voglio aggiungere una classe al body di una pagina di amministrazione?

0
Tutte le risposte alla domanda 4
2
26

Le pagine di amministrazione non utilizzano il filtro body_class, utilizza invece il filtro admin_body_class per aggiungere classi al tag body dell'area di amministrazione.

Nota che in questo caso $classes è una stringa, non un array.

5 mar 2012 09:45:44
Commenti

Vale la pena notare che il parametro $classes nel metodo per il filtro admin_body_class è una stringa e non un array https://developer.wordpress.org/reference/hooks/admin_body_class/

Roman Epicnerd Sharf Roman Epicnerd Sharf
25 mag 2016 19:30:31

Vorrei che @Mamaduka scrivesse quel commento nella risposta. Ho appena smontato un intero sito, prima di notare il commento di Romans.

Zeth Zeth
5 nov 2020 15:35:59
3
17

Mamaduka ha risposto indicandomi la direzione giusta, ecco il codice per aggiungere classi al body nella dashboard.

La funzione di callback dovrebbe restituire un valore valido per l'attributo HTML class, cioè nomi di classe separati da spazi, inoltre, non dimenticare di anteporre (o aggiungere) eventuali classi esistenti, come si può comprendere leggendo il codice.

add_filter( 'admin_body_class', 'my_admin_body_class' );

/**
 * Aggiunge una o più classi al tag body nella dashboard.
 *
 * @link https://wordpress.stackexchange.com/a/154951/17187
 * @param  String $classes Classi correnti del body.
 * @return String          Classi del body modificate.
 */
function my_admin_body_class( $classes ) {
    return "$classes my_class";
    // Oppure: return "$classes my_class_1 my_class_2 my_class_3";
}
17 lug 2014 20:52:38
Commenti

Questa è probabilmente la risposta corretta da selezionare. L'implementazione originale del richiedente restituisce un array, ma l'hook accetta una stringa separata da spazi: https://developer.wordpress.org/reference/hooks/admin_body_class/. La risposta selezionata è quindi fuorviante, in quanto risponde solo parzialmente alla domanda e non fornisce alcun riferimento.

pwbred pwbred
2 ott 2015 22:30:38

Per rendere PHP più semplice da implementare se non sei un programmatore, senza usare stringhe all'interno di virgolette doppie è lo stesso di return $classes.' my-class my-other-class';

Jonas Lundman Jonas Lundman
10 giu 2018 14:42:33

Io uso return sprintf('%s folded', $classes); per comodità.

besrabasant besrabasant
14 mar 2019 08:27:31
0

Aggiungere più classi, specialmente quando devono essere visualizzate in base a determinate condizioni, può portare a un output HTML inconsistente. Per formattarlo correttamente e avere anche la possibilità di rimuovere duplicati o classi esistenti, possiamo convertirle in array e alla fine riunirle nuovamente in stringa:

add_filter('admin_body_class', static function ($classes) {
    $classes = explode(' ', $classes);
    
    $classes = array_merge($classes, [
        'my-class-one',
        'my-class-two',
        'my-class-three',
        some_function(),
        another_function(),
    ]);

    return implode(' ', array_unique($classes));
});
28 ago 2020 10:34:26
0
-1

uno degli hook che utilizzo per modificare l'admin di WP/Dashboard è admin_head

    function rimuovi_opzioni_schermo(){ 

    $nascondiCSS = '<style>#screen-meta-links { display: none; }</style>';

} 

Inserirà il CSS nella parte di amministrazione

E utilizzando la classe .wp-admin puoi personalizzare lo stile del body dell'area di amministrazione.

Buona fortuna

5 mar 2012 09:49:51