Hook body_class pentru paginile din admin

5 mar. 2012, 08:51:15
Vizualizări: 14K
Voturi: 22

Hook-ul body_class pare să funcționeze doar pe paginile care nu sunt din administrare. Când folosesc:

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

Există alt hook pe care ar trebui să îl folosesc dacă vreau să adaug o clasă la tag-ul body al unei pagini de administrare?

0
Toate răspunsurile la întrebare 4
2
26

Paginile de administrare nu utilizează filtrul body_class, folosiți filtrul admin_body_class pentru a adăuga clase la tag-ul body din zona de administrare.

Rețineți că în acest caz $classes este un șir de caractere (string), nu un array.

5 mar. 2012 09:45:44
Comentarii

Este important de menționat că parametrul $classes din metoda pentru filtrul admin_body_class este un șir de caractere și nu un array https://developer.wordpress.org/reference/hooks/admin_body_class/

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

Aș dori ca @Mamaduka să includă acel comentariu în răspuns. Tocmai am demontat un întreg site înainte să observ comentariul lui Romans.

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

Mamaduka a răspuns și m-a îndreptat în direcția corectă, iată codul pentru adăugarea de clase la tag-ul body în panoul de administrare.

Funcția de callback trebuie să returneze o valoare validă pentru atributul HTML class, adică nume de clase separate prin spații. De asemenea, nu uitați să adăugați (la început sau la sfârșit) orice clase existente, acest lucru ar trebui să fie clar din cod.

add_filter( 'admin_body_class', 'my_admin_body_class' );

/**
 * Adaugă una sau mai multe clase la tag-ul body în panoul de administrare.
 *
 * @link https://wordpress.stackexchange.com/a/154951/17187
 * @param  String $classes Clasele curente ale body-ului.
 * @return String          Clasele body modificate.
 */
function my_admin_body_class( $classes ) {
    return "$classes my_class";
    // Sau: return "$classes my_class_1 my_class_2 my_class_3";
}
17 iul. 2014 20:52:38
Comentarii

Acesta ar trebui să fie probabil răspunsul selectat. Implementarea originală a întrebătorului returnează un array, dar hook-ul acceptă un șir de caractere separat prin spații: https://developer.wordpress.org/reference/hooks/admin_body_class/. Răspunsul selectat este, prin urmare, înșelător, deoarece răspunde doar parțial la întrebare și nu oferă nicio referință.

pwbred pwbred
2 oct. 2015 22:30:38

Pentru a face PHP mai ușor de implementat dacă nu ești programator, fără a folosi șiruri de caractere în ghilimele duble este la fel ca return $classes.' my-class my-other-class';

Jonas Lundman Jonas Lundman
10 iun. 2018 14:42:33

Eu folosesc return sprintf('%s folded', $classes); după cum îmi este mai convenabil.

besrabasant besrabasant
14 mar. 2019 08:27:31
0

Adăugarea mai multor clase, în special atunci când acestea trebuie să fie afișate în funcție de anumite condiții, poate duce la un output HTML inconsistent. Pentru a-l formata corect și pentru a avea posibilitatea de a elimina duplicatele sau clasele existente, le putem converti în array și la final le unim înapoi într-un string:

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 aug. 2020 10:34:26
0
-1

unul dintre hook-urile pe care le folosesc pentru editarea WP admin/Dashboard admin_head

    function remove_screen_options(){ 

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

} 

Va plasa CSS-ul în partea de admin

Și prin folosirea clasei .wp-admin poți stiliza partea de body a admin-ului.

Mult succes

5 mar. 2012 09:49:51