WordPress:the_terms() 没有按预期呈现我的分类法链接,为什么?

WordPress: the_terms() is not rendering my taxonomy links as expected, why?

我在我的 WordPress 插件中使用数据表来显示标题和分类法,但我无法在输出中正常工作。

这一行:

$return .="<td>" . the_terms( $post->ID , 'authors', '', ', ' ) . "</td>";

结果:

<a href="www.example.com/author1/" rel="tag">Author 1</a>
<a href="www.example.com/author2/" rel="tag">Author 2</a>

并将 <td></td><td></td> 留空。

我想要这个结果:

<td>
    <a href="www.example.com/author1/" rel="tag">Author 1</a>
</td>
<td>
    <a href="www.example.com/author2/" rel="tag">Author 2</a>
</td>

多位作者应按以下方式分隔:,

有什么解决办法吗?

the_terms() 函数 立即回显 值,这就是为什么您的 post 标签在 td 标签之外呈现的原因。

来自文档:

Displays the terms for a post in a list.

当您想将返回值分配给您想要使用 get_the_terms() 的变量时,例如(未经测试但应该让您走上正确的轨道):

$term_obj_list = get_the_terms( $post->ID, 'authors' );
$term_links = array();

if ( $term_obj_list && ! is_wp_error( $term_obj_list ) ) :

    foreach( $term_obj_list as $term ):
        $term_links[] = '<a href="' . esc_attr( get_term_link( $term->slug, 'authors' ) ) . '">' . $term->name . '</a>';
    endforeach;

    $return .= "<td>" . join( ', ', $term_links ) . "</td>";

endif;