SummArg | Cursos y recursos para webmasters

21/06/2013

Elegir diferentes plantillas single para una categoría y sus hijas

WordPress nos permite el uso de condicional tags para poder insertar cambios en nuestros posts según categoría en la que se encuentre dicha entrada. Así, si queremos mostrar código determinado para todas las entradas dentro de la categoría con ID 24, podemos utilizar el siguiente código:

<?php if (in_category( '24' )) { echo 'Estoy en la categoría 24...'; }
 else { echo 'Estoy en cualquier otra categoría'; } ?>

El problema surge cuando queremos establecer un condicional para todas las entradas que se encuentren dentro de la categoría 24 o cualquiera de sus categorías hijas. Podemos utilizar el conditional tag in_category() de la siguiente manera:

<?php if (in_category(array( 24,25,26,27 ))) { echo 'Estoy en la categoría 24 o alguna de sus hijas'; }
 else { echo 'Estoy en cualquier otra categoría'; } ?>

Pero como podemos ver tenemos que agregar cada ID a mano cada vez que generemos una categoría hija nueva. Afortunadamente en el foro de WordPress.org un usuario compartió una solución práctica. Primero generamos una función, que habremos de colocar en nuestro functions.php, para detectar el ID de la categoría padre.

function get_parent_category() {
 foreach ((get_the_category()) as $cat) {
 if ($cat->category_parent) return $cat->category_parent;
 else return $cat->cat_ID;}
 }

Acto seguido en nuestro archivo single.php podemos utilizar la función de la siguiente manera:

<?php $id = get_parent_category();
 if ($id == 24) { echo 'estoy dentro de una hija de 24'; } ?>

 

Entradas Relacionadas

  • Sin entradas similares

Dejar un comentario