2017-01-17 25 views
2

私は食品を含むウェブサイトを持っており、レシピと呼ばれるカスタムポストタイプがあります。 私がする必要があるのは、製品に添付されているレシピカテゴリから3つの投稿を表示することです。 カスタムポストタイプを作成して製品に添付しましたが、動作させることができません!私は紛失しています。私はレシピをループして3つの投稿を得ることができましたが、レシピのカテゴリをフィルタリングする方法はわかりません。Wordpressカスタムポストタイプタクソノミ - 特定のコンテンツを入手

例:

-Recipe Categories 
Sauce 
Spicy 

は、私は、製品「麺」を持っていると私は醤油カテゴリから3件の投稿を表示したいとしましょう。私はそれを表示することはできません。私は常にレシピカテゴリごとに投稿を受け取ります。

これは3つの記事を表示する私のループです。

<?php $loop = new WP_Query(array('post_type' => 'recipes', 'posts_per_page' => 3)); 
     while ($loop->have_posts()) : $loop->the_post(); ?> 


      <a href="<?php the_permalink(); ?>">    

       <img src="<?php the_post_thumbnail_url(); ?>"> 
       <h4><?php the_title(); ?></h4> 
       </a> 

       <?php endwhile; ?> 

配列の引数にタクソノミのカテゴリを追加しようとしましたが、何も起こりません。

$mytaxonomy = 'recipe_category'; 
$myterms = get_the_terms($post, $mytaxonomy); 

と、私は、アレイ内の用語を追加することとしながら、上記と同様の使用: ここで(多くのバリエーションで)私はしようとしたものです。 誰か助けてくれますか?私は迷子になってしまいましたが、なぜそれが機能しないのかを知る必要があるため、自分自身を改善することができます。

答えて

2

WP_Queryもそれを試してみる、カテゴリー別のポストを得るためtax_queryをサポートしています。

global $post; 
$terms = get_the_terms($post->ID, 'recipe_category'); 
$recipe_cat_slug = array(); 
foreach ($terms as $term) 
{ 
    $recipe_cat_slug[] = $term->slug; 
} 
$args = array(
    'post_type' => 'recipes', 
    'posts_per_page' => 3, 
    'tax_query' => array(
     array(
      'taxonomy' => 'recipe_category', 
      'field' => 'slug', //can be set to ID 
      'terms' => $recipe_cat_slug //if field is ID you can reference by cat/term number; you can also pass multiple cat as => array('sauce', 'spicy') 
     ) 
    ) 
); 
$loop = new WP_Query($args); 

・ホープ、このことができます!

+0

これはうまく見えますが、私はこれを動的に行う必要があります。つまり、商品のレシピカテゴリを確認し、投稿したループに用語名を渡す必要があるということです。どうもありがとうございます! Didntはtax_queryについて知っています –

+0

あなたは製品にWooCommerceを使用していますか?それともカスタムポストタイプから来ていますか?あなたの 'product'と' recipes'は同じカテゴリ名のスラッグを共有していますか? –

+0

私はwoocommerceを使用しています。商品とレシピの両方に分類法recipe_categoriesを添付しました –