Hook body_class para páginas de administración

5 mar 2012, 08:51:15
Vistas: 14K
Votos: 22

El hook body_class parece funcionar solo con páginas que no son de administración. Cuando hago:

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

¿Existe otro hook que deba usar si quiero agregar una clase al body de una página de administración?

0
Todas las respuestas a la pregunta 4
2
26

Las páginas de administración no utilizan el filtro body_class, usa el filtro admin_body_class para agregar clases a la etiqueta body del área de administración.

Ten en cuenta que $classes en este caso es una cadena de texto, no un array.

5 mar 2012 09:45:44
Comentarios

Vale la pena mencionar que el parámetro $classes en el método para el filtro admin_body_class es una cadena y no un array https://developer.wordpress.org/reference/hooks/admin_body_class/

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

Ojalá @Mamaduka incluyera ese comentario en la respuesta. Acabo de desmontar un sitio completo antes de notar el comentario de Romans.

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

Mamaduka respondió y me señaló la dirección correcta, aquí está el código para agregar clases al cuerpo en el panel de administración.

La función de callback debe retornar un valor válido para el atributo class de HTML, es decir, nombres de clases separados por espacios. Además, no olvides anteponer (o añadir) cualquier clase existente, como podrás entender al leer el código.

add_filter( 'admin_body_class', 'my_admin_body_class' );

/**
 * Añade una o más clases a la etiqueta body en el panel de administración.
 *
 * @link https://wordpress.stackexchange.com/a/154951/17187
 * @param  String $classes Clases actuales del body.
 * @return String          Clases del body modificadas.
 */
function my_admin_body_class( $classes ) {
    return "$classes my_class";
    // O también: return "$classes my_class_1 my_class_2 my_class_3";
}
17 jul 2014 20:52:38
Comentarios

Esta probablemente debería ser la respuesta seleccionada. La implementación original del que pregunta devuelve un array, pero el hook acepta un string separado por espacios: https://developer.wordpress.org/reference/hooks/admin_body_class/. La respuesta seleccionada es por lo tanto engañosa, ya que solo responde parcialmente a la pregunta y no proporciona ninguna referencia.

pwbred pwbred
2 oct 2015 22:30:38

Para hacer PHP más fácil de implementar si no eres programador, sin usar strings dentro de comillas dobles es lo mismo que return $classes.' my-class my-other-class';

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

Yo uso return sprintf('%s folded', $classes); según me convenga.

besrabasant besrabasant
14 mar 2019 08:27:31
0

Agregar múltiples clases, especialmente cuando deben mostrarse basadas en ciertas condiciones, puede resultar en un HTML inconsistente. Para formatearlo correctamente y también tener la capacidad de eliminar duplicados o clases existentes, podemos convertirlas a array y al final unirlas nuevamente como 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 ago 2020 10:34:26
0
-1

uno de los hooks que uso para editar el admin de WP/el Dashboard es admin_head

    function remove_screen_options(){ 

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

} 

Colocará el css en tu parte de administración

Y usando la clase .wp-admin podrías dar estilo a la parte del body del admin.

Buena suerte

5 mar 2012 09:49:51