Distinta cabecera por categorías

llama-dos-cabezas

Este es seguro uno de los trucos mas efectistas que puedes incluir en tu sitio, mediante el cual puedes definir una cabecera diferente dependiendo de la categoría del post que se esté visualizando, muy útil si tienes alguna sección especial que quieres destacar en particular. No digamos para centrar el posicionamiento en alguna categoría concreta.

El proceso es muy sencillo. Digamos que tienes una categoría llamada ‘tutoriales‘ y has creado un fichero llamado header-tutoriales.php partiendo de tu archivo header.php pero personalizado (por ejemplo la imagen), pues solo tendrías que sustituir el habitual código de <?php get_header(); ?> por lo siguiente:

<?php if is_category('tutoriales') {
    get_header('tutoriales');
} else {
    get_header();
} ?>

Puedes, como puedes imaginar, hacer lo mismo con otros pies de página o barras laterales:

Para mostrar footer-mifooter.php pondrías esto en cualquier página a tu elección:

<?php get_footer('mifooter'); ?>

Para mostrar sidebar-misidebar.php pondrías esto en cualquier página a tu elección:

<?php get_sidebar('misidebar'); ?>
VALORA Y COMPARTE ESTE ARTÍCULO PARA MEJORAR LA CALIDAD DEL BLOG…
(4 votos, promedio: 5)

¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!

AVISO: Esta publicación es de hace 3 años o más. Si es un código o un plugin podría no funcionar en las últimas versiones de WordPress, y si es una noticia podría estar ya obsoleta. Luego no digas que no te hemos avisado.

18 comentarios en “Distinta cabecera por categorías”

  1. Pingback: Bitacoras.com

  2. Me imagino que donde dice "php get_footer('misidebar'); " debería decir "php get_sidebar('misidebar');"

    Me gustaría hacer algo así pero con páginas, ¿Hay alguna manera?

    Algo como if is_page('iddelapagina') ?? Cual sería el código correcto?

  3. Suponiendo que quisieramos hacerlo para mas de una categoría como sería ? entiendo poco de programación pero la función If vendría a ser una condición logica para si ( ta cosa ) No ( tal otra ) verdad ?

    Por lo cual si queremos personalizar mas de una cabecera o poner un sidebar para cada categoría como sería el código ?

  4. Nosotros venimos utilizando el siguiente truco:

    Modificamos el contenido de "single.php" introduciendo una llamada a las distintas categorias de post, por ejemplo:

    post;

    if ( in_category('10') ) {

    include(TEMPLATEPATH . '/single-10.php');

    } elseif ( in_category('11') ) {

    include(TEMPLATEPATH . '/single-11.php');

    } elseif ( in_category('20') ) {

    include(TEMPLATEPATH . '/single-20.php');

    } else {

    include(TEMPLATEPATH . '/single-1.php');

    }

    ?>

    En este ejemplo le estamos diciendo que si el post corresponde a las categorias 10,11 y 20 nos muestre el fichero "personalzado". Las otras categorias se mostraran por defecto con el diseño que hayamos creado en single-1.php.

    Por supuesto podemos, en estos ficheros llamara a nuestras propias sidebars, footers y CSS. Atención, algunas versiones de WP se llevan mal con la presencia de ficheros en directorios distintos al del tema. Lo lógico, seria tener todo agrupado en distintos directorios, por ejemplo viajes, y allí colocar el php de la categoria, el CSS, las imagenes, etc. pero no es posible siempre y además, no podrás modificarlo desde el editor de WP…. un fallo increible.

    En cuanto a las categorias, con solo crear un fichero con el nombre de category-10.php por ejemplo, cuando hagas una llamada al resumen de noticias de esta seccion se te mostrará el contenido con diseño personalizado.

    En este caso te aconsejo copiar el mismo fichero de single para caegoria y renombrarlo a category-numero.php.

    A nosotros nos funciona perfectamente como puedes ver en http://www.noticiesdot.cat, entre otros sitios

    1. estoy intentando utilizar este codigo , pero supongo que la sintaxix esta mal porque no me funciona o almenos que un procedimiento este mal hecho, podrias explicarme por favor.

      post;

      if ( in_category('10') ) {

      include(TEMPLATEPATH . '/single-10.php');

      } elseif ( in_category('11') ) {

      include(TEMPLATEPATH . '/single-11.php');

      } elseif ( in_category('20') ) {

      include(TEMPLATEPATH . '/single-20.php');

      } else {

      include(TEMPLATEPATH . '/single-1.php');

      }

      ?>

  5. Gaston,

    Para las páginas no hace falta tanta complicación. Cuando creas la página eliges que plantilla vas a usar para mostrar el contenido y ya esta. Es el metodo que solemos utilizar, entre otras cosas, para mostrar los resultados de Google "embutido" en nuestro diseño.

    1. Gracias Nexus, no se me había ocurrido editar directamente el Get Header en la plantilla… Como vengo acostumbrado a no tocar esas cosas tan estructurales lo había pasado por alto!

  6. Yo me estoy iniciando en la creación de themes y me interesa mucho esta opción, pero no hay manera, no sale. Sustituyo el codigo

    por este

    y finalmente me da error. Si algun experto lo puede probar y dar una solución, gracias.
    Mientras probaré la opción que dan en el comentario de single.php

  7. Pingback: Insertar un archivo php / html en una página de WordPress | Ayuda WordPress

  8. No hay manera, he probado con los dos códigos y me da siempre error? Falta alguna fucntion o algo? qué puede ser? siempre me da error de sintaxis. gracias

  9. He caído en esta página buscando solución a lo que quería hacer: mostrar los artículos individuales pertenecientes a una categoría determinada con un estilo diferente a los archivos individuales de las demás categorías (concretamente con una pequeña cabecera en la parte superior del artículo).

    Creo que el código de Nexusbba es correcto, pero creo que está incompleto o al menos no queda claro cómo usarlo.

    La solución que he encontrado es:
    – Crear un archivo "single.php" que incluya solamente el siguiente código:

    (tantas como se quiera, como dice Nexusbba)

    – Crear un archivo "single-1.php" con el código completo habitual que llevaría el archivo "single.php"
    – Crear un archivo "single-2.php" con el código completo habitual que llevaría el archivo "single.php", con las distinciones que se quieran.

    No sé si me he explicado bien, pero a mí me ha funcionado.

  10. esto va en el index.php de mi plantilla me imagino, lo he puesto ahi, y cuando acceso al sitio queda en blanco no accesa mi sitio. saludos

  11. Pingback: Distinto fondo en cada entrada | Ayuda WordPress

  12. codigo corregido despues de un if tiene que haber un ‘(‘ por lo que yo se de php.
    la publicación ha estado genial por favor corrijan la entrada.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

 

Ir arriba Ir al contenido