2

次のようなカテゴリ構造があるとします。

food        (id = 1)
  chicken   (id = 2)
  beef      (id = 3)

beverage     (id = 11)
  soft-drink (id = 12)
  juice      (id = 13)

branch
  ... // not important

foodとからのすべての投稿を表示したいbeverageので、次のようにします。

$args = array('category__in' => array(1, 11) );
get_posts( $args );

子カテゴリのみにチェックを入れるため、そのコードは機能しません。

もちろんできますarray(1, 2, 3, 11, 12, 13)が、DRY ではありません。

親カテゴリの ID を使用してすべての投稿を取得する良い方法はありますか?

ありがとう

[以下の回答に基づく私のコード]

$args = array(
  'category' => implode(",", array(1, 11) )
);
get_posts( $args );
4

1 に答える 1

4

catの代わりcategory__inに使用する必要がありcategory__in、カテゴリの子は取得されません。この情報は次の場所で取得できます

これをチェックして:

カテゴリ ID を使用して、このカテゴリ (およびそのカテゴリのすべての子) を持つ投稿を表示します:
$query = new WP_Query( 'cat=1,11' );

そのコードは、そのカテゴリの子をもたらしますが、これは次のとおりです。

カテゴリ ID を使用して、このカテゴリ (そのカテゴリの子ではない) を持つ投稿を表示します:
$query = new WP_Query( 'category__in=1,11' );

そのIDのカテゴリからの投稿のみを取得しています。

複数のカテゴリ ID を cat に渡すために、ID を配列として持っている場合は、php implode 関数を使用して文字列を作成できます。

この例も確認できます。

$paged = get_query_var( 'paged' ) ? get_query_var( 'paged' ) : 1;
$sticky = get_option( 'sticky_posts' );
$args = array(
   'cat' => 1,
   'ignore_sticky_posts' => 1,
   'post__not_in' => $sticky,
   'paged' => $paged
);
$query = new WP_Query( $args );

のような猫の ID の配列を渡すことができるかどうかはテストしていませんが、テストして動作するかどうかを確認できます'cat'=>array(1,11)

于 2013-10-09T08:37:29.163 に答える