如何在没有链接的情况下列出自定义分类术语?

时间:2011-07-21 作者:Certified K

我到处寻找,试图找到我问题的答案。我希望我能在这里得到帮助。这是。。。

我当前正在使用以下方法检索自定义分类法的术语:

<?php echo get_the_term_list( $post->ID, \'skills\', \'<ul><li>\', \'</li><li>\', \'</li></ul>\' ); ?>
我要做的是在列表中检索这些相同的特定于帖子的自定义分类术语,而不将它们作为链接输出。我已经尝试了以下所有“解决方案”,但没有一个有效。任何帮助都将不胜感激。

返回一个长字符串中的特定于post的术语,该字符串不能放入列表中:

$terms_as_text = get_the_term_list( $post->ID, \'skills\', \'<ul><li>\', \'</li><li>\', \'</li></ul>\' ) ;
echo strip_tags($terms_as_text);
返回所有自定义帖子类型中使用的所有术语的列表:

<ul>
<?php $args = array( \'taxonomy\' => \'skills\', \'orderby\' => \'ID\', \'order\' => \'ASC\' );
$categories = get_categories( $args );
foreach($categories as $category) { echo \'<li> \'. $category->name . \'</li>\'; } 
                ?>
</ul>
不返回任何内容:

<?php $args = array(\'orderby\' => \'name\', \'order\' => \'ASC\', \'fields\' => \'all\');
wp_get_object_terms( $post->ID, $skills, $args );
?>
我甚至试过get_the_terms, get_terms, 和get_categories 无济于事。

8 个回复
最合适的回答,由SO网友:Wyck 整理而成

Can try this:

$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>
SO网友:Pete

Just use strip_tags

<?php echo strip_tags(get_the_term_list( $post->ID, \'CUSTOM-TAXONOMY\', \' \',\', \')); ?>
SO网友:Henry
$terms = wp_get_post_terms($post->ID, \'TAXONOMYNAME\');
$count = count($terms);
if ( $count > 0 ) {
    foreach ( $terms as $term ) {
        echo $term->name . ", ";
    }
}
SO网友:Giovanni DUarte
function term_clean($postid, $term)
{
    $terms = get_the_terms($postid, $term); 
    foreach ($terms as $term) {  echo $term->name;   };

}
SO网友:Rachel Carden

如果您只想将术语分配给特定职位:

<?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 } ?>
如果需要所有条款:

<?php $all_terms = get_terms( \'skills\', array( \'fields\' => \'names\' ) );
if ( $all_terms ) { ?><ul><li><?php echo implode( \'</li><li>\', $all_terms ); ?></li></ul><?php } ?>

SO网友:tristanojbacon

我昨天遇到了类似的问题,并提出了以下解决方案:

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>\' );
    }
}
然后,只需粘贴<?php taxonomy_list( \'TAXONOMY ID\' ); ?> 在模板文件中,将分类法ID替换为分类法的任何名称。

我最初的用法是在我的工作板上创建一个工作类别列表。然后每一个都链接到分类法的存档。你可以在我自己的回答中看到全部功能Stackoverflow question.

SO网友:Mohammad Mursaleen

// 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 . ", ";
    }
}
}
因为我必须显示3个用逗号分隔的分类法,所以我使用Henry的代码创建了一个函数。

要显示,请使用以下行:

<?php get_taxonony_toDisplay($post->ID, \'your_taxonomy_name\' ); ?> 

SO网友:Pete

如果您希望术语按slug而不是名称排序,请使用此。。。

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

结束

相关推荐

Get_Terms()多少才是太多?

我正在修改我的一个插件,当我注意到wp_count_terms() 反映的号码与呼叫的号码不同count( get_terms() ) 使用相同的$args传递。我很确定这是WordPress中的一个bug,我将在稍后提交一份trac记录单。我想得到一个可靠的工作解决方案,所以我只打了一个电话给get_terms() 然后使用count() 以获取计数。我的问题是:“有多少条款可以在不拖慢一切的情况下被退回”。在分类法中有很多术语的情况下,可能会出现缩放问题,但有多少术语太多了?1000?10000?只是