如何使用Get_the_Terms()显示多个术语?

时间:2020-04-15 作者:Jon Fergus

我使用以下代码在单个帖子的元数据中显示自定义分类法,但现在我需要显示多个用逗号分隔的术语,而不是只显示一个术语。只是不知道怎么做。有没有一种方法可以使用wp_sprintf_l 结合get_the_terms() 要做到这一点?或者其他方式?

以下是我当前的功能:

$sources = get_the_terms( $post->ID, \'source\' );
if ( ! empty( $sources ) && ! is_wp_error( $sources ) ){
foreach ( $sources as $source ) {
    $sourcename = $source->name;    
    }
$sourcelink = get_term_link( $source );
$sep2 = __( \',\' );
}
然后,我将其显示为:

echo "<span class=\'source-meta\'><a href=\'$sourcelink\'>$sourcename</a>$sep2</span>;

1 个回复
最合适的回答,由SO网友:Tony Djukic 整理而成

我要去某个地方测试一下,所以我可能需要进行编辑,但我想这应该可以帮你。。。正如Michael在评论中提到的,您必须将输出打包到foreach中。下面的方法将在每个逗号之后放置一个逗号,因此我将分隔符逗号包装在各自的范围内,然后使用CSS隐藏最后一个逗号。

$sources = get_the_terms( $post->ID, \'source\' );
if( !empty( $sources ) && !is_wp_error( $sources ) ) {
    echo \'<span class="source-meta">\';
    foreach( $sources as $source ) {
        $source_link = sprintf(
            \'<a href="%1$s">%2$s</a>%3$s\',
            esc_url( get_term_link( $source ) ),
            esc_html( $source->name ),
            \'<span class="sep">, </span>\'
        ); 
        echo sprintf( esc_html__( \'%s\', \'textdomain\' ), $source_link );   
    }
    echo \'</span>\';
}
在样式表(style.css)中,您需要以下内容:

.source-meta .sep:last-of-type{
     display:none;
}

相关推荐

在unctions.php文件中获取每个帖子的帖子术语‘wp_get_POST_Terms’

我使用了一个带有Ajax操作的表单来在提交时获取帖子信息。它很有魅力。然而,我使用了类别来将工作划分为不同的类别。其中之一就是品牌。在页面模板中,我使用的脚本有效,但在函数中使用时有效。php文件。它无法获得所需的结果。我认为这可能与何时触发对帖子的查询或如何设置add\\u操作有关。有人能帮我查一下ID为31的类别的名称吗?在函数中使用时。php。以下是我写的:if( $query->have_posts() ) : while( $query->have_posts() )