Ottenere il nome della tassonomia del post corrente
Tassonomia gerarchica del custom post type 'projects' > 'projects_category'.
Due esempi di gerarchie 'projects_category' sarebbero:
Grandi Aziende > 1° Nome Azienda > Un Titolo Post
Piccole Imprese > 2° Nome Azienda > Un Altro Titolo Post
Posso ottenere '1° Nome Azienda' con il seguente codice:
<?php $terms = get_the_terms($post->ID, 'projects_category');foreach($terms as $term){echo $term->name;} ?>
Come posso visualizzare 'Grandi Aziende' o 'Piccole Imprese' a seconda del caso in single.php?

get_ancestors() dovrebbe fare ciò che ti serve:
Quindi, dovresti fare qualcosa come questo:
$ancestors = get_ancestors($term_id, 'projects_category)

Ma la funzione get_ancestors() funziona con i custom post type? A me non sembra funzionare...

La tua domanda in realtà non riguarda i CPT - riguarda le tassonomie personalizzate. Inoltre, verifica di avere WP 3.1 o superiore

Ho l'ultima versione di WP 3.2.1. Ho specificato che si tratta di custom post type nel primo paragrafo della mia domanda, ma forse è più una questione di tassonomie personalizzate? In ogni caso la risposta ci sfugge ancora.

Potresti stare utilizzando CPT, ma quello che stai cercando è un modo per attraversare una gerarchia di tassonomie personalizzate - ecco cosa sono i 'termini' - elementi in una tassonomia che puoi associare a un oggetto post (che sia un post normale, una pagina o un tipo di post personalizzato)

Ho provato questo <?php get_ancestors( $post->ID, 'projects_category' ); ?> ma non ha restituito nulla. Puoi approfondire la tua risposta?

Ho aggiunto un esempio di utilizzo nella mia risposta - stai usando l'ID del post, quando dovresti usare l'ID del termine. Questa è una tassonomia, non un post personalizzato.

Quindi funzionerà in single.php? Quando ho provato non sembra produrre nulla. Come ho detto nella mia domanda, ho bisogno di questo nel template single, non in quello della tassonomia.

@anu continuiamo questa discussione nella chat

Non ha nulla a che fare con il template che stai usando. Ottieni l'ID del termine che ti interessa e passalo a get_ancestors. Il codice che hai postato nella tua domanda ottiene il nome del termine, quindi prendi l'ID del termine da quello e usalo come input per get_ancestors. Stai cercando di trovare il termine genitore. Non il post genitore. Non sono sicuro di come renderlo più chiaro.

Grazie per aver cercato di spiegare, ancora non funziona ma intendi qualcosa del genere: <?php $term = wp_get_post_terms( $post->ID, 'projects_category' ); $term_id = $term[0]->name; $ancestors = get_ancestors($term_id, 'projects_category'); echo $ancestors; ?>

Attualmente solo il mio termine di tassonomia di livello secondario (1st Company Name) è 'selezionato' nell'area di amministrazione. Anche il mio termine di tassonomia di livello superiore (Big Corporates) deve essere 'selezionato' nel pannello di amministrazione per poter essere recuperato in questo modo?

Quando entrambi sono selezionati, get_ancestors restituisce sia la categoria che la categoria genitore in ordine alfabetico. C'è un modo per estrarre i nomi delle categorie dai livelli superiori e inferiori separatamente? In modo che uno possa essere inserito in un H1 e l'altro in un H2.

Se leggi questo articolo sui tipi di contenuto personalizzati ti sarà utile: Ripassando Tipi di Contenuto Personalizzati, Tassonomie Personalizzate e Permalink

Non è stato d'aiuto, non ho visto nulla che mostrasse come ottenere il nome della tassonomia principale nel template del singolo post. Nei commenti ci sono persone che chiedono come farlo ma nessuna soluzione è stata pubblicata. Penso che non sia facilmente ottenibile per un custom post type.

Ho evidenziato la risposta di anu e la spiegazione di get_ancestors, comunque ecco come ho risolto:
<?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;
?>
