Obține numele taxonomiei pentru postul curent

13 iul. 2011, 10:16:30
Vizualizări: 17.1K
Voturi: 4

Taxonomia ierarhică a tipului de post personalizat 'projects' > 'projects_category'.

Două exemple de ierarhii 'projects_category' ar fi:

Marile Corporații > Prima Companie > Un Titlu de Post

Afaceri Mici > A Doua Companie > Alt Titlu de Post

Pot obține 'Prima Companie' cu următorul cod:

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

Cum pot afișa 'Marile Corporații' sau 'Afaceri Mici' în funcție de caz în single.php?

0
Toate răspunsurile la întrebare 4
14

get_ancestors() ar trebui să facă exact ce ai nevoie:

Deci, ar trebui să faci ceva de genul:

$ancestors = get_ancestors($term_id, 'projects_category')
13 iul. 2011 13:33:17
Comentarii

Dar funcționează get_ancestors() cu custom post type? Nu pare să funcționeze pentru mine...

Andy Andy
13 iul. 2011 13:47:21

Întrebarea ta nu are legătură cu CPT-urile - este despre taxonomii personalizate. De asemenea, verifică dacă folosești WP 3.1 sau mai nou

anu anu
13 iul. 2011 13:52:25

Folosesc ultima versiune WP 3.2.1. Am menționat că este vorba despre custom post types în primul paragraf al întrebării, dar poate este mai degrabă despre taxonomii personalizate? Oricum, răspunsul încă ne scapă.

Andy Andy
13 iul. 2011 13:58:39

S-ar putea să utilizați CPT-uri, dar ceea ce căutați este o modalitate de a parcurge o ierarhie de taxonomii personalizate - aceasta este semnificația 'termenilor' - elemente dintr-o taxonomie pe care le puteți atașa unui obiect post (indiferent dacă acel obiect post este un post normal, o pagină sau un tip de postare personalizat)

anu anu
13 iul. 2011 14:03:09

Am încercat asta <?php get_ancestors( $post->ID, 'projects_category' ); ?> care nu a returnat nimic. Poți să elaborezi răspunsul tău?

Andy Andy
13 iul. 2011 14:09:38

Am adăugat un exemplu de utilizare în răspunsul meu - utilizați ID-ul postării, când ar trebui să utilizați ID-ul termenului. Aceasta este o taxonomie, nu un post personalizat.

anu anu
13 iul. 2011 14:13:31

Deci asta va funcționa în single.php? Nu pare să producă nimic când am încercat. Cum am spus în întrebarea mea, am nevoie de asta în single.php, nu în template-ul de taxonomie.

Andy Andy
13 iul. 2011 14:17:28

@anu hai să continuăm această discuție în chat

Andy Andy
13 iul. 2011 14:23:33

Nu are nicio legătură cu template-ul pe care îl folosești. Obține ID-ul termenului care te interesează și trimite-l la get_ancestors. Codul pe care l-ai postat în întrebarea ta obține numele termenului, deci obține ID-ul termenului din acesta și folosește-l ca input pentru get_ancestors. Încerci să găsești termenul părinte, nu postarea părinte. Nu sunt sigur cum să fac asta mai clar.

anu anu
13 iul. 2011 14:25:46

Mulțumesc că ai încercat să explici, încă nu funcționează, dar te referi la ceva de genul acesta: <?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 iul. 2011 14:39:03

$term[0]->name nu este ID-ul termenului - ar trebui să folosești $term[0]->term_id

anu anu
13 iul. 2011 17:08:14

În prezent, în zona de administrare, doar termenul meu de taxonomie de subnivel (1st Company Name) este bifat. Termenul meu de taxonomie de nivel superior (Big Corporates) trebuie să fie și el bifat în panoul de administrare pentru a putea fi preluat în acest fel?

Andy Andy
14 iul. 2011 12:08:51

Încearcă și vezi!

anu anu
14 iul. 2011 14:33:41

Când ambele sunt bifate, get_ancestors într-adevăr returnează atât categoria cât și categoria părinte în ordine alfabetică. Există vreo metodă de a extrage denumirile categoriilor din nivelurile superioare și inferioare separat? Astfel încât una să poată fi pusă într-un H1 și cealaltă într-un H2.

Andy Andy
15 iul. 2011 10:32:27
Arată celelalte 9 comentarii
2

Dacă citești acest articol despre tipurile personalizate de postări, ar trebui să te ajute: Revizuirea tipurilor personalizate de postări, taxonomiilor personalizate și a permalinkurilor

13 iul. 2011 11:15:12
Comentarii

Nu a ajutat, nu am văzut nimic acolo care să arate cum să obții numele taxonomiei root în template-ul single. În comentarii sunt oameni care întreabă cum să facă asta, dar nicio soluție nu a fost postată. Cred că acest lucru nu este ușor de realizat pentru un custom post type.

Andy Andy
13 iul. 2011 11:34:06

Aha, înțeleg la ce te referi, îmi pare rău, dar nici eu nu cred că am răspunsul la această problemă.

Nsokyi Nsokyi
13 iul. 2011 12:31:22
0

Am marcat răspunsul lui anu și explicația despre get_ancestors, dar asta este cum am rezolvat eu:

<?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 iul. 2011 10:31:44
0

Acesta este un cod foarte bun pentru obținerea titlului taxonomiei pe pagina de detaliu sau pagina single în tipul personalizat de post în WordPress,

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