web-dev-qa-db-ja.com

WP_query category__は機能していません。最初のカテゴリからのみプルします

私は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);

どこに問題があるのか​​教えていただけますか。

1
Ludovic M.

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);
1
Ludovic M.