2017-12-21 8 views
1

次のクエリでは、カテゴリ番号28の4つの投稿が表示されます。カテゴリ番号28の3つの投稿とカテゴリ番号32の1つの投稿が表示されます。コードに何が間違っているかわかりません。このカスタムワードプレスループは、奇妙な結果をもたらしています。誰かがそれを修正してもらえますか?

   <?php $CstmLoop = new WP_Query(

       array('cat=28','posts_per_page' => 4) 

       ); ?> 


       <?php if ($CstmLoop->have_posts()) : ?> 

       <?php /* Start the Loop */ ?> 
       <?php while ($CstmLoop->have_posts()) :$CstmLoop->the_post(); ?> 



        <?php 

          get_template_part('template-parts/content', get_post_format()); 


        ?> 




       <?php endwhile; ?> 
       <?php else : ?> 

        <?php get_template_part('template-parts/content', 'none'); ?> 

       <?php endif; ?> 

       <?php WP_reset_postdata(); ?> 

しかし、ここでは面白い部分です - 私は配列を使用し、単に唯一の引数として「猫= 28」を通過しない場合、それはあなたが試すことができ、カテゴリ28

+0

他のカテゴリ(32)はカテゴリ28の子カテゴリですか?そして、それは、定義によると ''カテゴリIDを使ってこのカテゴリ(そしてそのカテゴリの子供)を持つ投稿を表示します(ここ[https://codex.wordpress.org/Class_Reference/WP_Query]から) – malte

+0

ありがとうたくさん。いいえ、それは子供のカテゴリーではありません。しかしカテゴリ32は最後に作成されたカテゴリであり、カテゴリ28はそれ以前に作成されたものです。しかし、32は28の子カテゴリではありません。しかし、ここで興味深い部分があります。配列を使用せず、単に「cat = 28」を唯一の引数として渡すと、カテゴリ28のすべての投稿が表示されます。 –

答えて

3

のすべての投稿を表示します以下のように。あなたのWP_Query引数として

array('cat' => 28,'posts_per_page' => 4)

。 これは、クエリ文字列をcat=28として直接クエリに提供することと、query_optionsで完全な配列を追加することの違いです。

+0

ありがとう。これで修正されました。今はうまくいきます。 "="と "=>"の違いは何ですか? –

+1

'' ''に関する相違に注意してください。 'cat_28'を' WP_Query'クラスのパラメータとして直接使用すると、文字列値を渡します。 'WP_Query'クラスは、' key = value&key2 = value2'の形式の文字列とオプションの配列の両方を扱うことができます。 '=>'を使って配列を構築するのは、PHPで連想型(キー値ベース)の配列を作成する方法です。 – malte

+0

ありがとう@マレ –

関連する問題