2017-03-08 11 views
3

私は、カテゴリに基づいてカスタム投稿タイプのリスト(ループ)を表示および非表示にするJavascriptフィルタを使用しています。ループ内のカスタム投稿タイプ(特にその投稿用)のWordPressカテゴリを表示します

私はクラスとしてクラスのスラッグを追加しようとしています。しかし、私は特定のループアイテムに割り当てられているカテゴリを表示したいだけです。各項目は複数のカテゴリを持つことができます。

私はこのようにしましたが、各ループのすべてのカテゴリをダンプします。ループアイテム専用のカテゴリはダンプしません。

<?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を使用する必要があります。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

これが他の人に役立つ場合は、Matt(ありがとう)のおかげでこれは機能しています。

<?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のループの後にあったものです。

関連する問題