Como faço para listar termos de taxonomia personalizados sem os links?

2

Eu pesquisei por toda parte para tentar encontrar uma resposta para minha pergunta. Eu estou esperando que eu possa conseguir ajuda aqui. Aqui vai ...

No momento, estou recuperando os termos da minha taxonomia personalizada usando:

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

O que estou tentando fazer é recuperar esses mesmos termos de taxonomia personalizados pós-específicos em uma lista sem que eles sejam exibidos como links. Eu tentei todas as "soluções" a seguir, mas nenhuma delas funciona. Qualquer ajuda seria apreciada.

Retorna os termos pós-específicos em uma longa string que não pode ser colocada em uma lista:

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

Retorna uma lista de todos os termos usados em todos os tipos de postagem personalizados:

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

Não retorna nada:

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

Eu até tentei get_the_terms , get_terms e get_categories sem sucesso.

    
por Certified K 21.07.2011 / 02:20

8 respostas

10

Pode tentar isto:

$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>
    
por 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 . ", ";
    }
}
    
por Henry 05.03.2012 / 00:12
1

Se você quiser apenas os termos atribuídos a uma postagem 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 } ?>

Se você quiser TODOS os termos:

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

Eu encontrei um problema semelhante ontem e encontrei a seguinte solução:

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

Em seguida, cole <?php taxonomy_list( 'TAXONOMY ID' ); ?> em seu arquivo de modelo, substituindo TAXONOMY ID por qualquer que seja o nome da taxonomia.

Meu uso original era criar uma lista das categorias de emprego que tenho no meu quadro de empregos. Cada um, então, vinculado ao arquivo da taxonomia. Você pode ver a função completa na minha resposta em minha própria pergunta do Stackoverflow .

    
por tristanojbacon 03.12.2013 / 18:33
1

Use apenas strip_tags

<?php echo strip_tags(get_the_term_list( $post->ID, 'CUSTOM-TAXONOMY', ' ',', ')); ?>
    
por Pete 18.04.2016 / 20:28
1
function term_clean($postid, $term)
{
    $terms = get_the_terms($postid, $term); 
    foreach ($terms as $term) {  echo $term->name;   };

}
    
por Giovanni DUarte 18.08.2011 / 15:33
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 . ", ";
    }
}
}

Desde que eu tive que exibir 3 taxonomias separadas por vírgulas, então eu fiz uma função usando o código de Henry.

Para exibir, use a seguinte linha:

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

Se você quiser os termos ordenados por slug ao invés de nome, então use isso ...

<?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 }?>
    
por Pete 13.06.2016 / 10:35