
Estilos para cada tipo de página en WordPress 2.8
Otra novedad que me parece muy útil de la nueva versión de WordPress es la función body_class. Al incluirla en nuestro theme, esta función nos devuelve una serie de clases que nos permitirán dar estilos diferentes a nuestro blog según la página que se muestre.
Se utiliza, por ejemplo, de la siguiente forma:
<body <?php body_class(); ?>>Esto agregara al body un atributo class que incluirá una serie de clases identificando la página en la que estamos. Por ejemplo tendremos la clase “home” si estamos en el inicio, “search” si estamos viendo una búsqueda o “category” si estamos viendo una categoría, además de detalles como el id del post o página que estamos viendo o el id de los padres de una página si es que existe (ideal para dar un diseño particular a una subsección).
Puede utilizarse en cualquier otro elemento, aunque me parece lo más lógico que se aplique en el body, ya que con eso podríamos identificar a cualquier elemento interior… pero bueno, siempre puede haber algún caso en el que el body ya use clases de otro tipo.
En WP Engineer publican una lista de todas las clases que puede devolver body_class.
Además, aunque no encuentro documentación al respecto, existe la función get_body_class que, siguiendo la nomenclatura estandar, devuelve un array de PHP con las distintas clases posibles, lo que con un poco de idea nos permitiría ir más allá e incluir distintas cosas en el código según el tipo de página en el que estemos; algo que es fundamental en muchos proyectos y hasta ahora no era tan fácil de resolver.
Por ejemplo, para mostrar algo solamente en el home de nuestro WordPress podemos usar algo así en nuestro template:
<?php
if ( in_array('home', get_body_class()) ) {
/* Insertar contenido sólo para el home acá */
}
?>Reemplazando, claro, “home” por cualquier otro de los valores que devuelve la función para mostrar algo especial o personalizar una categoría concreta, una página, un post… o cualquiera de las páginas que puede generar WordPress.
Y, como extra, se pueden lograr cosas similares personalizando el contenido o el diseño de cada post con la función post_class. Para asignar clases de CSS automáticamente a un post (que incluyen, entre otras cosas y siguiendo la misma lógica de body_class, las etiquetas que tiene o las categorías las que pertenece).
Podemos usarla de la siguiente forma:
<div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
Voy a intentar plicar esto que comentas sobre darles estilos a cada página de wordpress luego te cuento como salió.
Saludos y gracias por este interesante post.
@Marcelo Vidal: De nada! Suerte!
Estaba trabajando sobre lo que decias y encontre esto buscando más referencias sobre el tema http://ayudawordpress.com/diferente-css-por-categoria/ que te parece?
Bueno, esa es la forma tradicional de hacerlo. Depende lo que necesites puede servir más o no.
Si toda la hoja de estilos, o la gran mayoría, es diferente, quizás de esa forma sea más práctico; para algunos detalles sobra con las clases del
bodyo las que se agregan a cada post.@Leo: Lo que me sucede es que no me toma bien la sub categorias, sabes como podría solucionarlo?.. gracias y saludos
En cuál de los casos, o cómo lo estás haciendo?