私はWP_queryを書きましたが、その振る舞いは奇妙です。私はほとんどすべてを試しましたが、それはうまくいきません。解決策を見つけたが理解しようとする。
以下のクエリは常に最初のケアからの投稿を返します(id:15、slug:slug1)。
$args = array(
'post_type' => 'post',
'post_status' => 'publish',
'category__in' => array(15, 17),
'posts_per_page' => 4
);
$query = new WP_Query($args);
$items = $query->get_posts();
OR
$args = array(
'post_type' => 'post',
'post_status' => 'publish',
'cat' => '15,17',
'posts_per_page' => 4,
);
$query = new WP_Query($args);
$items = $query->get_posts();
OR
$args = array(
'post_type' => 'post',
'post_status' => 'publish',
'category_name' => 'slug1,slug2',
'posts_per_page' => 4,
);
$query = new WP_Query($args);
$items = $query->get_posts();
OR
$args = array(
'post_type' => 'post',
'post_status' => 'publish',
'posts_per_page' => 4,
'tax_query' => array(
array(
'taxonomy' => 'category',
'field' => 'term_id',
'terms' => array(15,17),
),
),
);
$query = new WP_Query($args);
$items = $query->get_posts();
解決策はWP_query-> get_posts()の代わりにquery_post($ args)を使うことでした。
$args = array(
'post_type' => 'post',
'post_status' => 'publish',
'category__in' => array(15, 17),
'posts_per_page' => 4
);
$items = get_posts($args);
どこに問題があるのか教えていただけますか。
Milo の答えに続いて、私はうまくいく別の回避策を見つけました。
$args = array(
'post_type' => 'post',
'post_status' => 'publish',
'category__in' => array(15, 17),
'posts_per_page' => 4
);
$query = new WP_Query();
$items = $query->query($args);