Imaginemos que queremos mostrar, según la categoría a la que un artículo pertenezca, un template distinto; de modo que, por ejemplo, los artículos clasificados en “Cine” tendrían una maquetación distinta de los clasificados en “Música”, ya sea en su barra lateral, en su forma general o en las funcionalidades extra (campos personalizados, scripts, etc) que le quisiéramos dar.
Abriremos nuestro actual single.php, seleccionaremos todo y cortaremos.
Acto seguido, creando un nuevo archivo con nuestro editor de texto (por ejemplo single-1.php), pegaremos lo que habíamos cortado.
Crearemos entonces otro archivo (single-2.php, por ejemplo), que será el que recibirá modificaciones especiales . Pegaremos el código del single.php original de nuevo y lo modificaremos según necesitemos.
Podemos, si es el caso, crear tantos nuevos single-X.php como queramos.
En nuestro ejemplo vamos a usar hasta tres nuevos templates, primero para dos categorías “destacadas” y un tercero para todas las demás.
En nuestro antiguo single.php, ahora vacío, podremos pegar el siguiente código. Nos traerá la versión “1″ para cierta categoría, “2″ para una segunda o la versión “3″ para el resto de categorías:
<?php
if (in_category(1)) { // Si el post pertenece a la cat 1, redirigir a single-1.php
include(TEMPLATEPATH . '/single1.php');
} elseif (in_category(2)) { // Si el post pertenece a la cat 2, redirigir a single-2.php
include(TEMPLATEPATH . '/single2.php');
} else { // Si el post pertenece a la cat 3, redirigir a single-3.php
include(TEMPLATEPATH . '/single3.php');
} ?>
Salvamos y cerramos.
Esperamos que este post haya sido de vuestra utilidad.



12 comentarios
22/03/2010
Gracias! Justo lo que necesitaba!
22/03/2010
Excelente, me gusto!!!!!
Dos cositas:
- El codigo que debo pegar en el single, en que parte lo hago? al principio de todo?
- Ahora seria muy bueno un tutorial de como alterar un single para quedar listos!
Gracias pr el dato.
22/03/2010
Gracias chicos por los comentarios. @luchosar, single.php tiene que quedar vacío antes de que le pastees el código (sólo tiene que haber ése código en single.php).
WordPress trata de forma especial a single.php, de modo que no puedes cambiarle el nombre, pero sí puedes ponerle el código que quieras en su interior.
En este caso, ponemos un código que dice “tráeme el template ‘cine.php’ si el artículo que tengo que mostrar es de ésa categoría, o tráeme música.php si esta en música, PERO tráeme un tercer template si el artículo es de cualquier otra categoría”, las modificaciones de diseño las tendrás que hacer en cine.php, musica.php, deportes.php, normal.php, etc, que se basarían todos en el ORIGINAL single.php de tu tema (ahora medio vacío, pero que tienes que haber guardado en algún lugar para usarlo como modelo en tus alteraciones).
Me apunto lo del tuto para poner un ejemplo de alteración :)
22/03/2010
mmm….me inquieta algo…para el single alterado, (el que da la orden que single mostrar) hay que decirle cuales son la categorias que mostrara…ok…Pero cuando se crea una nueva categoria, hay que (obligatoriamente) ingresar al single y agregar esta categoria cierto?
22/03/2010
esto es lo que no me queda claro, no veo el script que llama a cualquier categoria : PERO tráeme un tercer template si el artículo es de cualquier otra categoría
22/03/2010
Sí, tienes que especificar qué categorías tendrán template especial. El “elseif” con el que concluye el código, sirve para enviar un template ‘por defecto’, para todas la demás categorías que no hayas expresamente anotado.
22/03/2010
Tremendo. Gracias y un saludo.
23/03/2010
Saludos Ignacio, quisiera saber si de manera similar a esto se puede hacer algo con las paginas en lugar de solo con los posts. Gracias y espero puedas responderme.
24/03/2010
Hola Bob, para las páginas estáticas, tienes la opción de crear directamente un template o varios, y luego asignarlos en el panel de edición como más te interese.
Para crear templates utilizables en páginas, tienes que crear el archivo, por ejemplo pagina-especial.php, y pastear:
/* Template Name: Mi Página Especial */
, que tiene que estar entre las declaraciones de apertura y cierre de PHP. (Ya haré un artículo sobre ello).
Luego, el resto del código puede estar inspirado en page.php.
El template se hará disponible para ser seleccionado en el panel de edición de Páginas.
08/04/2011
Excelente !! Lo he probado y ha quedado de lujo, justo lo que buscaba, Muchas gracias (Y)
22/09/2011
Hola, he creado single4.php,single5.php…y al listarlo en single.php se me repite el post.
Si alguien sabe como poner mas de tres categorias por favor que me muestre como poner el codigo.
Muchas gracias
30/10/2011
I’ve just been promoted to Level 162 in #MobsterWorld. Beat me in the game! http://t.co/DL3UwuhH
Trackbacks
Deja tu comentario