使用术语名称的类在SPAN中包装_Terms的结果

时间:2017-01-06 作者:kevngibsn

我使用以下函数返回自定义帖子类型的列表,其中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添加一个具有术语名称的类?

1 个回复
最合适的回答,由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\', \' , \' );

相关推荐

如何控制根据Taxonomy术语显示什么模板?

我正在建立一个商业目录,并将给出一些背景,然后在最后有2个问题。The development URL is: http://svcta.lainternet.biz/The website I am rebuilding is: https://www.visitsimivalley.com/当前网站要求每个分类法类型具有唯一的业务概要文件。例如,如果您是一家酒店,并且您也有会议室和婚礼场地,那么您最终会得到3个列表,一个用于酒店,一个用于会议,一个用于婚礼。我希望有一个主配置文件,其中包含我们将显示的