¿Cómo enumero los términos de taxonomía personalizados sin los enlaces?

2

He buscado por todas partes para intentar encontrar una respuesta a mi pregunta. Espero poder obtener ayuda aquí. Aquí va ...

Actualmente estoy recuperando los términos de mi taxonomía personalizada mediante:

<?php echo get_the_term_list( $post->ID, 'skills', '<ul><li>', '</li><li>', '</li></ul>' ); ?>

Lo que estoy tratando de hacer es recuperar estos mismos términos de taxonomía personalizados post-específicos en una lista sin que se muestren como enlaces. He intentado todas las siguientes "soluciones", pero ninguna de ellas funciona. Cualquier ayuda sería apreciada.

Devuelve los términos específicos de la publicación en una cadena larga que no se puede colocar en una lista:

$terms_as_text = get_the_term_list( $post->ID, 'skills', '<ul><li>', '</li><li>', '</li></ul>' ) ;
echo strip_tags($terms_as_text);

Devuelve una lista de todos los términos utilizados en todos los tipos de publicaciones personalizadas:

<ul>
<?php $args = array( 'taxonomy' => 'skills', 'orderby' => 'ID', 'order' => 'ASC' );
$categories = get_categories( $args );
foreach($categories as $category) { echo '<li> '. $category->name . '</li>'; } 
                ?>
</ul>

No devuelve nada:

<?php $args = array('orderby' => 'name', 'order' => 'ASC', 'fields' => 'all');
wp_get_object_terms( $post->ID, $skills, $args );
?>

Incluso he probado get_the_terms , get_terms y get_categories sin éxito.

    
pregunta Certified K 21.07.2011 - 02:20

8 respuestas

10

Puede intentar esto:

$terms = get_the_terms ($post->id, 'skills');
if ( !is_wp_error($terms)) : ?>

<?php 
    $skills_links = wp_list_pluck($terms, 'name'); 

    $skills_yo = implode(", ", $skills_links);
    ?>

    <span><?php echo $skills_yo; ?></span>
    
respondido por el Wyck 21.07.2011 - 07:11
2
$terms = wp_get_post_terms($post->ID, 'TAXONOMYNAME');
$count = count($terms);
if ( $count > 0 ) {
    foreach ( $terms as $term ) {
        echo $term->name . ", ";
    }
}
    
respondido por el Henry 05.03.2012 - 00:12
1
function term_clean($postid, $term)
{
    $terms = get_the_terms($postid, $term); 
    foreach ($terms as $term) {  echo $term->name;   };

}
    
respondido por el Giovanni DUarte 18.08.2011 - 15:33
1

Si solo quieres los términos asignados a una publicación específica:

<?php $object_terms = wp_get_object_terms( $post_id, 'skills', array( 'fields' => 'names' ) );
if ( $object_terms ) { ?><ul><li><?php echo implode( '</li><li>', $object_terms ); ?></li></ul><?php } ?>

Si quieres TODOS los términos:

<?php $all_terms = get_terms( 'skills', array( 'fields' => 'names' ) );
if ( $all_terms ) { ?><ul><li><?php echo implode( '</li><li>', $all_terms ); ?></li></ul><?php } ?>
    
respondido por el Rachel Carden 14.03.2012 - 03:51
1

Ayer me encontré con un problema similar y encontré la siguiente solución:

function taxonomy_list( $taxonomy ) {
    $args = array('order'=>'ASC','hide_empty'=>false);
    $terms = get_terms( $taxonomy, $args );
    if ( $terms ) {
        printf( '<ul name="%s">', esc_attr( $taxonomy ) );
        foreach ( $terms as $term ) {
            printf( '<li>%s</li>', esc_html( $term->name ) );
        }
        print( '</ul>' );
    }
}

Luego, simplemente pegue <?php taxonomy_list( 'TAXONOMY ID' ); ?> en su archivo de plantilla, reemplazando el ID de TAXONOMÍA con cualquiera que sea el nombre de la taxonomía.

Mi uso original fue crear una lista de las categorías de trabajo que tengo en mi bolsa de trabajo. Cada uno luego vinculado al archivo de la taxonomía. Puede ver la función completa en mi respuesta por mi cuenta pregunta Stackoverflow .

    
respondido por el tristanojbacon 03.12.2013 - 18:33
1

Solo usa strip_tags

<?php echo strip_tags(get_the_term_list( $post->ID, 'CUSTOM-TAXONOMY', ' ',', ')); ?>
    
respondido por el Pete 18.04.2016 - 20:28
0
// to display taxonomy terms without links: separated with commas
// copy this code in your function.php

function get_taxonony_toDisplay($post_id, $taxonomy_name) {
$terms = wp_get_post_terms($post_id, $taxonomy_name);
$count = count($terms);
if ( $count > 0 ) {
    foreach ( $terms as $term ) {
        echo $term->name . ", ";
    }
}
}

Como tenía que mostrar 3 taxonomías separadas por comas, hice una función usando el código de Henry.

Para mostrar utiliza la siguiente línea:

<?php get_taxonony_toDisplay($post->ID, 'your_taxonomy_name' ); ?> 
    
respondido por el Mohammad Mursaleen 13.02.2014 - 09:14
0

Si desea que los términos se ordenen por slug en lugar de nombre, use esto ...

<?php if(has_term('', 'CUSTOM-TAX')) {?> 
<?php
    $custom_terms = get_the_terms( get_the_ID(), 'CUSTOM-TAX' );
    // Make sure we have terms and also check for WP_Error object
    if (    $product_terms
    && !is_wp_error( $product_terms )
    ) {
    @usort( $product_terms, function ( $a, $b )
    {
    return strcasecmp( 
    $a->slug,
    $b->slug
    );
    });
    // Display your terms as normal
    $term_list = [];
    foreach ( $custom_terms as $term ) 
    //$term_list[] = esc_html( $term->name );  // comment this line out if you want the terms linked  and visa versa
    $term_list[] = '<a href="' . get_term_link( $term ) . '">' . esc_html( $term->name ) . '</a>'; // comment this line out if you DON'T want the terms linked and visa versa
    echo implode( ', ', $term_list );
    }
?>                          
<?php } else { ?><?php }?>
    
respondido por el Pete 13.06.2016 - 10:35

Lea otras preguntas en las etiquetas