2010-03-17 7 views
7

Me gustaría colocar una directiva en el archivo functions.php de mi tema, que agrega un nombre de clase a la etiqueta del cuerpo de wordpress. ¿Hay un método API incorporado para esto?¿Agregar un nombre de clase personalizado a la etiqueta del cuerpo de Wordpress?

Por ejemplo, mi código de etiqueta del cuerpo es ...

<body <?php if(function_exists("body_class") && !is_404()){body_class();} else echo 'class="page default"'?>> 

Y el resultado es el siguiente de escribirse en el cuerpo de la etiqueta (dependiendo del contexto en el que se presenta la página (página, correos, que ha iniciado sesión en, etc)

<body class="home blog logged-in"> 

Dependiendo del tema infantil que estoy usando en el momento, quiero que sea ...

<body class="home blog logged-in mychildthemename"> 
+1

No estoy seguro de que consigo su pregunta - Me tomó un vistazo en el tema clásico, y el '' etiqueta es de salida directamente en el archivo 'header.php' ¿Qué es exactamente lo que está buscando un método API para almacenar y obtener los nombres de clase? –

+0

Hola, pekka, agregué mi etiqueta corporal a la pregunta para una mejor aclaración. Me gustaría simplemente acceder a esa función body_class() para agregarle el nombre de tema secundario, de modo que pueda tener CSS condicional en mi tema principal que solo se aplica cuando un tema secundario específico está activo. –

Respuesta

17

Usted puede utilizar el filtro body_class, así:

function my_plugin_body_class($classes) { 
    $classes[] = 'foo'; 
    return $classes; 
} 

add_filter('body_class', 'my_plugin_body_class'); 

Aunque, obviamente, el tema tiene que llamar a la función body_class correspondiente.

+0

Exactamente lo que estaba buscando. Gracias Richard! –

+0

* NB *: asegúrese de que la etiqueta del cuerpo del tema, generalmente en header.php, llame a la función body_class() '> ' – Duncanmoo

-1

Simplemente edite el encabezado de su tema.php y cambie la clase allí (manualmente o según algunas reglas lógicas preestablecidas).

1

En caso de que intente agregar clases a la etiqueta del cuerpo en el área de administración, recuerde utilizar el gancho admin_body_class en su lugar. Tenga en cuenta que se trata de un filtro que funciona de forma ligeramente diferente, ya que pasa a una serie de clases en lugar de una matriz, por lo que el código se vería así:

add_filter('admin_body_class', 'my_admin_body_class'); 
function my_admin_body_class($classes) { 
    return $classes . ' my_class'; 
} 
0

Prueba esto ..

add_filter('body_class', 'custom_class'); 
function custom_class($classes) { 
    if (!is_front_page()) { 
     $classes[] = 'example'; 
    } 
    return $classes; 
} 
Cuestiones relacionadas