如何在div类元素中获得3种不同的分类类型术语?

时间:2015-01-19 作者:nerijusgood

我有这样的情况,我需要根据分类法(有3种不同的分类法)过滤特定的帖子类型,因为我使用的是同位素,所以我需要在我的class元素中使用它们。我已经用它成功了,我相信我走了一条“漫长”的路。我真的不太会用php,这是我可以从codex得到的。。。

1) 我在里面找到了定制的post type entries2)

$terms = get_the_terms( $post->ID, \'resource_roles\' );  
if ( $terms && ! is_wp_error( $terms ) ) : 

    $links = array();

    foreach ( $terms as $term ) {
        $links[] = $term->name;
    }

    $tax_links = join( " ", str_replace(\' \', \'-\', $links));          
    $tax = strtolower($tax_links);
else :  
    $tax = \'\';                  
endif; 

echo \'<div class="color-shape resource-block \' . $tax . \'">\';
echo \'<h1>\' . the_title() . \'</h1>\';
echo \'</div>\';
正如代码中所示,现在它添加了“resource\\u roles”分类元素,现在我需要添加“resource\\u media”和“resource\\u theme”:/我相信还有更简短的方法,社区,你能帮我把这段代码简洁明了吗?

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

如果使用get\\u the\\u术语,您只需为每个分类法执行一次If循环,然后在三个循环后将它们连接起来。

当然,使用以下工具可能更有效:

wp_get_post_terms( $post_id, $taxonomy, $args );
然后,您可以执行以下操作:

wp_get_post_terms( $post_id, array( \'resource_roles\', \'resource_media\', \'resource_theme\' ) );
这将在一个查询中提取所有术语。

要将它们回显到类属性中,请使用它们都是相同类型时使用的代码:

$extra_classes = \'\';
$terms = wp_get_post_terms( $post_id, array(\'resource_roles\',\'resource_media\',\'resource_theme\');
if ( is_wp_error( $terms ) ) {
   # Log the error, notify someone, etc.
} else if ( 0 < count( $terms ) ) {
   $slugs = array();
   foreach ( $terms as $term ) {
      $slugs[] = $term->slug;
   }
   $extra_classes = implode(\' \', $slugs);
}
$title = get_the_title();
echo <<<HTML
<div class="color-shape resource-block {$extra_classes}">
   <h1>{$title}</h1>
</div>
HTML;

结束