如何从分类中获取当前标记?

时间:2017-07-16 作者:dem0n

因此,我制定了两个自定义分类法,将多个类别添加到页面/项目中。(single work.php)默认值(内置类别)为project type, 两个新的是clientagency.

基本上,我对这三个都使用相同的代码,但我注意到它对这两个自定义类别所做的工作基本上是读取我添加到不同项目中的每个标记,而不是只显示为特定页面选择的标记。

换句话说,它基本上只是显示“从最常用的标签中选择”区域下可以找到的每个标签。尽管每个项目只选择了一个标记。

我希望这有点清楚:)

下面是我使用的代码:

<?php $terms = get_terms( \'portfolio_tags_client\' );
    foreach ( $terms as $term ) {
        $term_link = get_term_link( $term );
        if ( is_wp_error( $term_link ) ) {
            continue;
        }
    echo \'Client: <a href="\' . esc_url( $term_link ) . \'">\' . $term->name . \'</a>&nbsp;<br />\';
    }
?>
这是它的分类法,如果这有帮助的话:

register_taxonomy(
    \'portfolio_tags_client\',  //The name of the taxonomy. Name should be in slug form (must not contain capital letters or spaces). 
    \'work\', // Post type name
    array(
        \'hierarchical\'  =>  false,
        \'label\'         =>  \'Clients\', // Display name
        \'singular_name\' =>  \'Client\',
        \'query_var\'     =>  true,
        \'rewrite\'       =>  array(
        \'slug\'          =>  \'client\', // This controls the base slug that will display before each term
        \'with_front\'    =>  false // Don\'t display the category base before 
        )
    )
);
有人知道会是什么吗?我花了比我想承认的更多的时间来解决这个问题:)

UPDATE 固定的非常感谢你们的帮助。我真的很感激。以下是最终代码:

<?php $post_tags = get_the_terms(get_the_ID(), \'portfolio_tags_client\'); 
    if ($post_tags) {
        foreach($post_tags as $tag) {
        echo \'Client: <a href="\'.get_tag_link($tag->term_id).\'" title="\'.$tag->name.\'">\'. $tag->name .\'</a>&nbsp;<br />\';
        }
    }
?>

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

你要找的是get_the_terms(). 您可以使用以下代码获取当前帖子的自定义条款:

$post_tags = get_the_terms(get_the_ID(), \'portfolio_tags_client\'); 
if ($post_tags) { ?>
    <div class="tags-div">
        <h3><?php _e( \'Tags\', \'text-domain\' ); ?></h3>  
        <div class="post-tags"><?php
            foreach($post_tags as $tag) {
                echo \'<a href="\'.get_tag_link($tag->term_id).\'" title="\'.$tag->name.\'">\'. $tag->name .\'</a>\'; 
            } ?>
        </div>      
    </div><?php 
}
这应该用在你的single.php 或者呈现文章内容的模板。get_the_term() 它本身可以在任何地方使用,但由于必须将帖子的ID传递给它,因此应该在适当的模板文件中使用它。

SO网友:kero

这是get_terms(). 您可以使用wp_get_object_terms() 相反

$terms = wp_get_object_terms( $post->ID, \'portfolio_tags_client\' );
如果在循环中,可以使用以下选项

$terms = wp_get_object_terms( get_the_ID(), \'portfolio_tags_client\' );

结束

相关推荐

更改_Terms中的最后一个分隔符

我如何展示the_terms 带逗号和“&;”在最后一个之前示例:标记:书籍、评论和;历史我需要在术语和a之间显示“,”&上学期之前。我使用以下代码来显示the_terms 在单个岗位上:<?php the_terms( $post->ID, \'post_tag\', \'Tags: \', \', \', \' \' ); ?>