2010-06-25 32 views
6

En category.php, ¿cómo puedo probar contra una categoría que tiene una categoría padre?Wordpress - Obtener categoría actual Padres

Si la categoría padre es A, y la subcategoría es B, y el usuario carga la URL para la categoría B, me gustaría poder probar si tiene el padre A y ejecutar el código si lo hace.

he encontrado la etiqueta get_category_parents, pero parece que para devolver una lista de enlaces en lugar de una matriz:

get_category_parents($cat, TRUE, ', ')); 

Incluso si tengo la matriz, no estoy seguro de cuál es la función php es prueba en contra de esto (php noob).

Gracias!

Respuesta

10

Puede utilizar la función de cat_is_ancestor_of para comprobar si una categoría es un hijo de otra categoría. Por ejemplo, para comprobar si la categoría actual es un hijo de una categoría 'Blog':

cat_is_ancestor_of(get_cat_id('blog'), get_query_var('cat')) 
+0

Mientras está dentro de 'category.php' (o cualquier plantilla de categoría individual) puede usar el var $ cat global para recuperar el ID de la categoría actual. Para que compruebe 'cat_is_ancestor_of (ID, $ cat);' El uso de ID generalmente es el mejor enfoque, ya que no cambian al renombrar el nombre/slug/whatever. –

2

En primer lugar, usted tiene que conseguir el id de la categoría actual:

$category_id = get_query_var('cat'); 

entonces usted puede hacer una consulta de base de datos para ver que tiene un padre o no:

$parent = $wpdb->get_var("SELECT parent FROM ".$wpdb->prefix."term_taxonomy WHERE term_id = $category_id"); 

Si tiene uno, $ el padre contendrá el ID del padre de un nivel arriba y, naturalmente, su valor debe ser mayor que 0, por lo que puede verificarlo como sigue:

<?php if ($parent > 0) : ?> 
// do something 
<?php endif; ?> 

Puede usar $ parent como lo desee;

$parent_link = get_category_link($parent); 
$parent_name = get_cat_name($parent); 
// etc. 

Si usted quiere ver que hay más de alto nivel de la matriz de, puede hacer las mismas cosas (consulta db) con id de los padres o incluso escribir una función recursiva que ir a hasta el nivel superior. Como vi en el código fuente, la función incorporada get_category_parents() lo hace así.

HTH

0

Mira la página de referencia de get_category_parents, que está pidiendo enlaces cuando se establece el segundo parámetro a TRUE.

Usted debe hacer:

get_category_parents($cat, FALSE, ', ')); 

Asimismo, no recomiendo el uso de espacios como separadores, ya que es probable que tenga que recortar los espacios más tarde.

Cuestiones relacionadas