Ottenere il nome della tassonomia del post corrente

13 lug 2011, 10:16:30
Visualizzazioni: 17.1K
Voti: 4

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?

0
Tutte le risposte alla domanda 4
14

get_ancestors() dovrebbe fare ciò che ti serve:

Quindi, dovresti fare qualcosa come questo:

$ancestors = get_ancestors($term_id, 'projects_category)
13 lug 2011 13:33:17
Commenti

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

Andy Andy
13 lug 2011 13:47:21

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

anu anu
13 lug 2011 13:52:25

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.

Andy Andy
13 lug 2011 13:58:39

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)

anu anu
13 lug 2011 14:03:09

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

Andy Andy
13 lug 2011 14:09:38

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.

anu anu
13 lug 2011 14:13:31

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.

Andy Andy
13 lug 2011 14:17:28

@anu continuiamo questa discussione nella chat

Andy Andy
13 lug 2011 14:23:33

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.

anu anu
13 lug 2011 14:25:46

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; ?>

Andy Andy
13 lug 2011 14:39:03

$term[0]->name non è l'id del termine - dovresti usare $term[0]->term_id

anu anu
13 lug 2011 17:08:14

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?

Andy Andy
14 lug 2011 12:08:51

Provalo e vedi!

anu anu
14 lug 2011 14:33:41

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.

Andy Andy
15 lug 2011 10:32:27
Mostra i restanti 9 commenti
2

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

13 lug 2011 11:15:12
Commenti

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.

Andy Andy
13 lug 2011 11:34:06

Ah, capisco cosa intendi, mi dispiace ma non credo di avere la risposta a questo problema neanch'io.

Nsokyi Nsokyi
13 lug 2011 12:31:22
0

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;
    ?>
16 lug 2011 10:31:44
0

Questo è un ottimo codice per ottenere il titolo della tassonomia nella pagina dettaglio o nella pagina singola di un custom post type in WordPress,

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