Cómo eliminar los enlaces de la función "get term list"

22 mar 2011, 20:50:26
Vistas: 17K
Votos: 2
<?php echo get_the_term_list( $post->ID, 'people', 'People: ', ' ', '' ); ?> 

devuelve algo como esto:

People: <a href="person1">Person1</a>, <a href="person2">Person2</a>, ...

¿Cómo puedo hacer que devuelva lo mismo pero sin enlaces, así:

People: Person1, Person2
0
Todas las respuestas a la pregunta 4
0
13

Alternativamente también puedes usar:

<?php 
echo strip_tags (
    get_the_term_list( get_the_ID(), 'tax_name', "Texto Antes del Valor ",", " )
);
?>
17 nov 2012 13:03:55
2
12

Puede ser más fácil simplemente escribir la lista manualmente, algo como:

<?php
$terms = wp_get_post_tags( $post->ID );
//Para taxonomía personalizada usa esta línea de abajo
//$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
Comentarios

¿Cómo funcionaría esto para una taxonomía personalizada? Intenté: $terms = get_the_term_list( $post->ID,'people'); pero me dio un error

Carson Carson
19 abr 2011 08:22:13

@Carson estás usando la función incorrecta ahí, lo que necesitas es wp_get_object_terms() así que sería: $terms = wp_get_object_terms( $post->ID, 'people' );

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

Encontré otro método que responde más directamente a mi pregunta:

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

Crédito: CSS Tricks

19 abr 2011 04:00:17
Comentarios

no hagas eso. usa la solución de Joe, pero con wp_get_post_terms($post->ID, 'people') en lugar de wp_get_post_tags()

onetrickpony onetrickpony
19 abr 2011 09:04:45
1

Usar strip_tags() puede complicarse si deseas mostrar tus términos como una lista HTML. Aquí tienes algo para ti. Si $raw se establece como verdadero (o cualquier valor no vacío), simplemente creará una lista en línea con el $separator que elijas. Si no, generará una lista HTML sin enlaces. Si deseas que tu lista tenga un título con estilo, establece $titletag como, por ejemplo, H1 o H2. Si no quieres un título, simplemente deja $title vacío.

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

Ejemplo de uso:

echo show_tax('people', 'PERSONAS', 'h3', '', ''); // Una lista HTML con PERSONAS como título
echo show_tax('people', 'PERSONAS:', '', true, ','); // Una lista en línea con PERSONAS: como texto previo
10 jul 2014 13:42:17
Comentarios

código actualizado. implode no funcionó porque es un array de objetos de posts

MikeiLL MikeiLL
21 abr 2017 18:25:10