Obtener el nombre de la taxonomía del post actual

13 jul 2011, 10:16:30
Vistas: 17.1K
Votos: 4

Taxonomía jerárquica del tipo de post personalizado 'projects' > 'projects_category'.

Dos ejemplos de jerarquías de 'projects_category' serían:

Grandes Corporaciones > 1ra Compañía > Un Título de Post

Pequeñas Empresas > 2da Compañía > Otro Título de Post

Puedo obtener '1ra Compañía' con lo siguiente:

<?php $terms = get_the_terms($post->ID, 'projects_category');foreach($terms as $term){echo $term->name;} ?>

¿Cómo puedo mostrar 'Grandes Corporaciones' o 'Pequeñas Empresas' según corresponda en single.php?

0
Todas las respuestas a la pregunta 4
14

get_ancestors() debería hacer lo que necesitas:

Por lo tanto, deberías hacer algo como esto:

$ancestors = get_ancestors($term_id, 'projects_category')
13 jul 2011 13:33:17
Comentarios

¿Pero funciona get_ancestors() con tipos de posts personalizados? No parece estar funcionando para mí...

Andy Andy
13 jul 2011 13:47:21

Tu pregunta en realidad no tiene nada que ver con CPTs (Custom Post Types), sino con taxonomías personalizadas. Además, verifica que estés usando WP 3.1 o superior

anu anu
13 jul 2011 13:52:25

Estoy en la última versión de WP 3.2.1. Mencioné que esto es para tipos de posts personalizados en el primer párrafo de mi pregunta, pero quizás es más sobre taxonomías personalizadas? De cualquier forma, la respuesta todavía nos elude.

Andy Andy
13 jul 2011 13:58:39

Puedes estar usando CPTs, pero lo que buscas es una forma de navegar por una jerarquía de taxonomía personalizada - eso es lo que son los 'terms' - elementos en una taxonomía que puedes adjuntar a un objeto de post (ya sea que ese objeto de post sea un post normal, una página o un tipo de post personalizado)

anu anu
13 jul 2011 14:03:09

Intenté esto <?php get_ancestors( $post->ID, 'projects_category' ); ?> lo cual no devolvió nada. ¿Puedes elaborar más tu respuesta?

Andy Andy
13 jul 2011 14:09:38

Agregué un ejemplo de uso en mi respuesta - estás usando el ID del post, cuando deberías estar usando el ID del término. Esto es taxonomía, no post personalizado.

anu anu
13 jul 2011 14:13:31

¿Funcionará en single.php? No parece producir nada cuando lo probé. Como dije en mi pregunta, necesito esto en el single.php, no en la plantilla de taxonomía.

Andy Andy
13 jul 2011 14:17:28

@anu continuemos esta discusión en el chat

Andy Andy
13 jul 2011 14:23:33

No tiene nada que ver con la plantilla que estás usando. Obtén el ID del término que te interesa y pásalo a get_ancestors. El código que publicaste en tu pregunta obtiene el nombre del término, así que obtén el ID del término a partir de eso y úsalo como entrada para get_ancestors. Estás intentando encontrar el término padre. No el post padre. No estoy seguro de cómo hacer esto más claro.

anu anu
13 jul 2011 14:25:46

Gracias por intentar explicarlo, todavía no funciona pero ¿te refieres a algo como esto: <?php $term = wp_get_post_terms( $post->ID, 'projects_category' ); $term_id = $term[0]->name; $ancestors = get_ancestors($term_id, 'projects_category'); echo $ancestors; ?>

Andy Andy
13 jul 2011 14:39:03

$term[0]->name no es el ID del término - deberías usar $term[0]->term_id

anu anu
13 jul 2011 17:08:14

Actualmente solo mi término de taxonomía de subnivel (1er Nombre de Empresa) está 'marcado' en el área de administración. ¿Mi término de taxonomía de nivel superior (Grandes Corporaciones) también necesita estar 'marcado' en el panel de administración para que sea recuperable de esta manera?

Andy Andy
14 jul 2011 12:08:51

¡Pruébalo y verás!

anu anu
14 jul 2011 14:33:41

Cuando ambos están marcados, get_ancestors sí devuelve tanto la categoría como la categoría padre en orden alfabético. ¿Hay alguna forma de extraer los nombres de las categorías de los niveles superiores e inferiores por separado? Para que uno pueda colocarse en un H1 y el otro en un H2.

Andy Andy
15 jul 2011 10:32:27
Mostrar los 9 comentarios restantes
2

Si lees este artículo sobre tipos de entradas personalizadas, debería ayudarte: Repasando Tipos de Entradas Personalizadas, Taxonomías Personalizadas y Enlaces Permanentes

13 jul 2011 11:15:12
Comentarios

No ayudó, no vi nada allí que mostrara cómo obtener el nombre de la taxonomía raíz en la plantilla individual. En los comentarios hay personas preguntando cómo hacerlo pero no se publicó ninguna solución. Creo que esto no se logra fácilmente para un tipo de publicación personalizado.

Andy Andy
13 jul 2011 11:34:06

Ahh, entiendo lo que quieres decir, lo siento pero creo que tampoco tengo la respuesta a ese problema.

Nsokyi Nsokyi
13 jul 2011 12:31:22
0

He marcado la respuesta de anu y la explicación de get_ancestors, sin embargo así es como lo resolví:

<?php 
$terms = wp_get_object_terms($post->ID, 'projects_category', array('orderby' => 'term_id', 'order' => 'ASC') );
    if ( !empty( $terms ) ) :
    $project = array();
    foreach ( $terms as $term ) {
        $project[] = $term->name;
}
    echo '<h1>'.$project[0].'</h1>';
    echo '<h2>'.$project[1].'</h2>';
    endif;
    ?>
16 jul 2011 10:31:44
0

Este es un código muy bueno para obtener el título de la taxonomía en la página de detalle o página individual de un tipo de entrada personalizada en WordPress.

<?php $terms = get_the_terms($post->ID, 'projects_category');foreach($terms as $term){echo $term->name;} ?>
15 nov 2019 13:44:07