我使用以下函数返回自定义帖子类型的列表,其中the_terms
显示分类术语。
function projectCards() {
$args = array( \'post_type\' => \'rneh_projects\', \'posts_per_page\' => 6 );
$loop = new WP_Query( $args );
echo \'<ul>\';
while ( $loop->have_posts() ) : $loop->the_post();
echo \'<li class="project-card d-1of3 cf">\';
the_terms( $post->ID, \'rneh_status\', \' \', \' \' );
echo \'<p><a href="\' . get_post_permalink() . \'">\' . get_the_title() . \'</a></p>\';
the_terms( $post->ID, \'rneh_author\', \' \', \' , \' );
echo \'</li>\';
endwhile;
echo \'</ul>\';
}
表面上看,这是我想要它做的,但在尝试包装时
the_terms( $post->ID, \'rneh_status\', \' \', \' \' );
在一段时间内,就像
echo \'<span>\' . the_terms( $post->ID, \'rneh_status\', \' \', \' \' ) . \'</span>\';
因此,我可以将其作为样式的目标,输出将分类术语放在范围之外,如下所示。
<a href="http://localhost/ne-heritage/research/ongoing/" rel="tag">Ongoing</a>
<span></span>
如何获取输出以显示范围内的术语,并向其中添加一个具有术语名称的类,或者,向已包装术语名称的a href添加一个具有术语名称的类?
最合适的回答,由SO网友:Dave Romsey 整理而成
一般来说,在WordPress世界中,函数前缀为the_
将立即输出结果。前缀为的函数get_
将返回结果而不输出它们。
功能get_the_terms()
可用于实现预期结果。这是一个完整的函数,它本质上是get_the_terms()
有一点额外的格式:
/**
* Outputs a list of terms with special formatting
*
* @param $post_id string|int ID for post
* @param $taxonomy_slug string taxonomy name
* @param $separator string separator for terms
*/
function wpse251476_the_terms( $post_id, $taxonomy_slug, $separator = \' \' ) {
$terms = get_the_terms( $post_id, $taxonomy_slug );
$separator = sprintf( \'<span class="term-sep">%1$s</span>\', esc_html( $separator ) );
// Bail if there are no terms.
if ( ! $terms || is_wp_error( $terms ) ) {
return false;
}
$links = array();
// Wrap each term link in a span and give the span the class name of the term\'s slug.
foreach ( $terms as $term ) {
$links[] = sprintf( \'<span class="%1$s"><a href="%2$s">%3$s</a></span>\',
esc_attr( $term->slug ),
esc_url( get_term_link( $term->slug, $taxonomy_slug ) ),
esc_html( $term->name )
);
}
// Output the terms.
?>
<div class="term-list <?php echo esc_attr( __( $taxonomy_slug, \'text-domain\' ) ); ?>">
<?php echo implode( $separator, $links ); ?>
</div><?php
}
Usage examples based on original code:
wpse251476_the_terms( get_the_ID(), \'rneh_status\', \' \' );
以及
wpse251476_the_terms( get_the_ID(), \'rneh_author\', \' , \' );