Afișarea taxonomiilor personalizate fără link-uri în titlurile șabloanelor de arhivă

1 feb. 2011, 16:28:42
Vizualizări: 38.8K
Voturi: 18

Ce funcție poate afișa taxonomiile personalizate asociate unei postări sub formă de text?

În prezent folosesc get_the_term_list care funcționează excelent pentru o pagină individuală, dar nu atât de bine când folosesc o taxonomie în tag-ul de titlu permalink din archive-postype.php.

0
Toate răspunsurile la întrebare 5
2
25

Totuși @anu are dreptate, am aflat că poți folosi funcția PHP strip_tags pentru a elimina tag-urile din valoarea returnată.

$terms = get_the_term_list( $post->ID, 'tags' );
$terms = strip_tags( $terms );
1 feb. 2011 21:18:40
Comentarii

Pare atât de simplu și își face treaba. Există vreun dezavantaj în utilizarea acesteia?

Muhammad Asad Muhammad Asad
3 ian. 2017 15:11:45

@Mohsin Un dezavantaj este că elimină toate tag-urile, nu doar tag-ul <a>. Cu toate acestea, poți preveni eliminarea tag-urilor dorite, astfel: $terms = strip_tags( $terms, '<li>' );

David David
6 dec. 2017 10:20:52
1
18

wp_get_object_terms() returnează termenii asociați cu un obiect (de exemplu un articol sau o pagină sau un post personalizat) ca text (de obicei într-un array).

De pe pagina Codex pentru wp_get_object_terms()

$productcategories = wp_get_object_terms($post->ID, 'productcategories');

1 feb. 2011 17:37:46
Comentarii

Ține minte că rezultatele interogării nu sunt stocate în cache ca în cazul get_the_terms(). Vezi pagina codex pentru mai multe informații.

Dylan Dylan
8 sept. 2016 07:25:22
1

Cred că cea mai bună metodă este să implementăm un filtru pentru lista de termeni, care să extragă prin regex doar textul din listă.

Vezi get_the_terms_list() și Hook-ul în Resurse pentru Dezvoltatori.

 $term_links = apply_filters( "term_links-{$taxonomy}", string[] $links ) 

Poți implementa propriul tău filtru.

1 feb. 2011 16:50:11
Comentarii

Exact acel hook l-am găsit citind codul sursă.

wittich wittich
2 feb. 2023 09:57:29
0
$terms = wp_list_pluck( get_the_terms( get_the_ID(), 'your_taxonomy' ), 'name');

Aici $terms este un array, deci poți folosi o buclă foreach.

foreach( $terms as $term ) {
  echo $term;
}
5 iul. 2019 22:37:58
0

Am nevoie de același lucru și am încercat soluția lui Zack care funcționează excelent. De exemplu, dacă ai nevoie doar de termenul pentru a-l pune în id-ul sau clasa CSS.

O singură observație despre soluție, funcția este denumită greșit, corect este "get_the_term_list".

Vă arăt exemplul meu:

$terms = get_the_term_list( $post->ID, 'your_taxonomy_name' );
$terms = strip_tags( $terms );
17 ian. 2013 13:10:13