2017-03-08 77 views
3

我正在使用Javascript筛选器,它根据自己的类别显示和隐藏自定义帖子类型的列表(循环)。在循环中显示自定义帖子类型(专门针对该帖子)的WordPress类别

我想添加类别slu as作为一个类。但我只想显示分配给特定循环项目的类别。每个项目可以有多个类别。

我已经这样做了,但它会转储每个循环中的所有类别,而不是专门用于该循环项目的类别。

<?php 
    $pageID = get_the_ID(); 
    $loop = new WP_Query(array('post_type' => 'casestudies', 'posts_per_page' => -1)); 
    $taxonomy = 'custom_casestudies'; 
    $terms = get_terms($taxonomy); 
    while ($loop->have_posts()) : $loop->the_post(); 
?> 

<div class="block-wrap mix <?php foreach ($terms as $term) echo ' ' . $term->slug; ?>"> 
    // loop content 
</div> 

<?php endwhile; wp_reset_postdata(); ?> 

回答

1

get_terms返回给定分类中的所有术语。在这种情况下,您应该使用wp_get_post_terms,它会返回给定帖子的术语列表。 documentation更详细。

+0

我试过,甚至'$ terms = wp_get_post_terms($ pageID,'custom_casestudies');'但没有显示。文档提到'$ post-ID',但我从哪里得到该ID? –

+0

我也试过'$ terms = wp_get_post_terms($ loop-> id,'custom_casestudies');'这也行不通。 –

+0

尝试在WP_Query之前添加'''global $ post;'''。这应该允许你访问'''$ post-> ID'''。 –

1

如果这有助于任何人,并感谢马特(谁回答)这是工作。

<?php 
    global $post; 
    $loop = new WP_Query(array('post_type' => 'casestudies', 'posts_per_page' => -1)); 
    while ($loop->have_posts()) : $loop->the_post(); 
    $terms = wp_get_post_terms($post->ID, 'custom_casestudies'); 
?> 
<div class="block-wrap mix<?php foreach ($terms as $term) echo ' ' . $term->slug ?>"> 
    // content 
</div> 

<?php endwhile; wp_reset_postdata(); ?> 

该术语已经在while循环之后。

相关问题