Cum pot elimina linkurile din funcția "get term list"?

22 mar. 2011, 20:50:26
Vizualizări: 17K
Voturi: 2
<?php echo get_the_term_list( $post->ID, 'people', 'Oameni: ', ' ', '' ); ?> 

returnează ceva de genul:

Oameni: <a href="person1">Persoana1</a>, <a href="person2">Persoana2</a>, ...

Cum pot face să returneze același lucru dar fără linkuri, astfel:

Oameni: Persoana1, Persoana2
0
Toate răspunsurile la întrebare 4
0
13

Alternativ, poți folosi și:

<?php 
echo strip_tags (
    get_the_term_list( get_the_ID(), 'tax_name', "Text înainte de valoare ",", " )
);
?>
17 nov. 2012 13:03:55
2
12

S-ar putea să fie mai ușor să scrii manual lista, ceva de genul:

<?php
$terms = wp_get_post_tags( $post->ID );
//Pentru taxonomie personalizată folosește linia de mai jos
//$terms = wp_get_object_terms( $post->ID, 'people' );

foreach( $terms as $term )
    $term_names[] = $term->name;

echo implode( ', ', $term_names );
22 mar. 2011 21:39:50
Comentarii

Cum ar funcționa asta pentru o taxonomie personalizată? Am încercat: $terms = get_the_term_list( $post->ID,'people'); dar am primit o eroare

Carson Carson
19 apr. 2011 08:22:13

@Carson folosești funcția greșită, ai nevoie de wp_get_object_terms() deci ar trebui să fie: $terms = wp_get_object_terms( $post->ID, 'people' );

Joe Hoyle Joe Hoyle
31 mai 2011 02:23:44
1

Am găsit o altă metodă care răspunde mai direct la întrebarea mea:

<?php $terms_as_text = get_the_term_list( $post->ID,'people', 'Persoane: ', ', ');
if (!empty($terms_as_text)) echo '<p>', strip_tags($terms_as_text) ,'</p>'; ?>

Credit: CSS Tricks

19 apr. 2011 04:00:17
Comentarii

nu face asta. folosește soluția lui Joe, dar cu wp_get_post_terms($post->ID, 'people') în loc de wp_get_post_tags()

onetrickpony onetrickpony
19 apr. 2011 09:04:45
1

Utilizarea funcției strip_tags() poate deveni complicată dacă doriți să afișați termenii ca o listă HTML. Iată ceva pentru dumneavoastră. Dacă $raw este setat la true (sau orice altceva care nu este gol), se va crea o listă inline cu separatorul ales de dumneavoastră ($separator). Dacă nu, se va genera o listă HTML fără link-uri. Dacă doriți ca lista să aibă un titlu stilizat, setați $titletag la, de exemplu, H1 sau H2. Dacă nu doriți un titlu, lăsați $title gol.

function show_tax($taxname, $title, $title_tag, $raw, $separator){
    $terms = get_the_terms($post->ID, $taxname);
    $out = '';
    if (!empty($title)){
        if(empty($title_tag)){
            $title_tag = 'span';
           }
            $out .= '<'.$title_tag.'>'.$title.'</'.$title_tag.'>';
        }
    if (!empty($raw)){
                $out = implode($separator, $terms);
        }
        else{

            $out .= '<ul>';
                foreach ( $terms as $term ){
                            $out .='<li>'.$term->name.'</li> ';
                            }
                $out .= '</ul>';

        }       
            return $out;
}

Exemplu de utilizare:

echo show_tax('people', 'PERSOANE', 'h3', '', ''); // O listă HTML cu PERSOANE ca titlu
echo show_tax('people', 'PERSOANE:', '', true, ','); // O listă inline cu PERSOANE: ca text înainte
10 iul. 2014 13:42:17
Comentarii

cod actualizat. implode nu a funcționat pentru că este un array de obiecte post

MikeiLL MikeiLL
21 apr. 2017 18:25:10