Si tienes que desarrollar un sitio con WordPress y, por el motivo que sea, quieres mostrar distinto CSS (imagen de fondo, estilos, etc) dependiendo de la categoría en que esté encuadrada la entrada, debes saber que es posible y no es en realidad complicado usando la tag de plantilla in_category
.
Ahora bien, no es complicado pero hay que trabajar un poco. De momento tendrás que crear las hojas de estilo para cada categoría (o añadir clases nuevas) y, eso si, una vez hecha esta parte solo tendrás que añadir un poco de código a tu plantilla, normalmente en el archivo header.php
:
<link rel="stylesheet" href="<?php bloginfo('template_url')?>/azul.css" type="text/css" media="screen,projection" /> <?php if( in_category( 1 ) ) { ?> <link rel="stylesheet" href="<?php bloginfo('template_url')?>/azul.css" type="text/css" media="screen" /> <?php } elseif ( in_category (2) ) { ?> <link rel="stylesheet" href="<?php bloginfo('template_url')?>/amarillo.css" type="text/css" media="screen" /> <?php } elseif ( in_category (33) ) { ?> <link rel="stylesheet" href="<?php bloginfo('template_url')?>/negro.css" type="text/css" media="screen" /> <?php } else { ?> <?php } ?>
En este ejemplo, a la categoría con el ID #1 se le asigna la hoja de estilos azul.css
, y así sucesivamente.
¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!
Pingback: Bitacoras.com
Tremendo post. puesto que yo funcionaba mis themes de la manera más larga y complicada. este post me ayudó mucho… como no pensarlo???
Pingback: Diferente CSS por categoría en Wordpress | CSSBlog ES
Una implementación de este código, presumo, está en loserpower.com; independiente del contenido, muy NSFW, tiene un diseño excelente. Muy bien por revelar el misterio del diseño distinto por categoría!
Nosotros usamos blogger, pero nunca está de más conocer wordpress más a fondo.
Hola,
Si no queremos usar el ID podemos usar el slug, muchas veces más fácil de acceder.
Ejemplo:
( in_category ('wordpress') )
Saludos
Gracias por el apunte Cristian 😉
Además hay q tener en cuenta que sólo sirve si el post está en la categoría "wordpress" si está en una categoría "hija" (wordpress > plugins) no funciona, a menos que añadas esta función:
http://codex.wordpress.org/Function_Reference/in_…
Saludos
Si, a la hora de trabajar con categorias soy mas fan de usar el ID, es facil de saberlo pero tambien el slug es valido, me gusta esta tecnica, muy utiles para blogs multitematica, por ejemplo un blog de todo que quiere poner un fondo negro en una seccion de rock y un fondo rosa en una seccion de moda, yo que se la imaginacion no tiene limites.
Tu post ha sido añadido a esta lista:
http://www.conceptopixel.com/2009/10/marcadores-c…
Felicidades por tu tutorial, eres un idolo 😉
Si no es en el header.php en que otro lugar lo puedo poner.
Gracias
Hola! pude hacerlo funcionar! pero me queda una duda nada mas, que es como hacer para que en el index donde estan todas las entradas de todas la categorias, tambien se respenten los colores de las entradas segun cada categoria!
Muchas gracias! saludos!
Buena pregunta charly!
Yo tambien ando buscando lo mismo.
Por ahira lo unico que me queda claro es el uso de "in_category" en el loop de index.php.
No obstante aun no tengo 100% claro todo el procedimiento
un saludo!
Hola Fernando.
Muy interesante el articulo. Solo que me parece que si escribimos "if( in_category( 1 ) )" como esta aqui, no va a funcionar.
Creo que deberia ser if( is_category( 1 ) ) en vez de if( in_category( 1 ) )
Me equivoco?
Wow!… esta utilidad me ha sido de gran utilidad… ideal para los sitios tipo revista!..
Tengo la misma duda que Charly, como hacer para que en el index se muestren colores diferentes segun categoria? cuando entras en un post separado si que sale el color correcto, pero cuando esta en el index todos los post se marcan con el mismo color, se puede arreglar eso?
Saludos y felicidad por el post
Hola,
He probado este código pero tengo un pequeño problema.
Tengo tres categorías la primera y segunda cargan el css indicado pero el tercero no… solo deja el templete de la segunda categoría.
A que se debe esto?
Saludos
Problema resuelto, solo hice caso al post de Fernando " if( is_category( 1 ) ) en vez de if( in_category( 1 ) ) "
Saludos