Get term slug of current post

时间:2014-01-23 作者:Robbert

我正在开发一个单一的帖子类型模板,其中显示一个导航菜单,其中包含指向同一学期所有帖子的链接。

现在我想将此模板用于所有不同的术语,因此$term\\u slug需要保留当前帖子的术语slug,以便它们可以对应于其他帖子。

我在互联网上多次发现此代码可以完成此工作,但它对我不起作用:

$terms = get_term_by( \'slug\', get_query_var( \'term\' ), get_query_var( \'taxonomy\' ) );
$term_slug = $term->slug;
这篇文章说,这将完成这项工作:http://www.wpbeginner.com/wp-themes/how-to-show-the-current-taxonomy-title-url-and-more-in-wordpress/

我做错了什么?

$args = array(
    \'post_type\'     => \'myposttype\',
    \'mytaxonomy\'    => $term_slug,
    \'order\'         => \'ASC\'
);              

$current_id = get_the_ID();
$the_query = new WP_Query( $args );
if($the_query->have_posts() ) {
    while ($the_query->have_posts()) { $the_query->the_post();

        echo \'<li><a\' . ($current_id == $post->ID ? \' class="current"\' : \'\') . \' href=" \' . get_permalink() . \' ">\' . get_the_title() . \'</a></li>\'; 

    } 
}

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

您的代码工作在查询术语的页面上(分类术语存档),而不是一篇文章。

对于单个帖子,您需要获取属于该帖子的术语。

$terms = get_the_terms( $post->ID, \'your-taxonomy\' );
if ( !empty( $terms ) ){
    // get the first term
    $term = array_shift( $terms );
    echo $term->slug;
}

SO网友:Sanj2cool

如果要显示多个术语,下面的代码效果很好:-

echo get_the_term_list( 
    $post->ID, 
    \'styles\', 
    \'<ul class="styles"><li>\', 
    \',</li><li>\', 
    \'</li></ul>\' 
); 

SO网友:Jules

您不需要for循环。

$slugs = wp_get_post_terms($post_id,\'your-taxonomy\',[\'fields\'=>\'slugs\']);
$slugs 将是your-taxonomy 分配给具有$post_id

资料来源:

结束