web-dev-qa-db-ja.com

ドラフトがwp_queryの一部として返されるのはなぜですか?

私はプラグインとしていくつかのコードを持っていて、それを私はサイトのページからAJAXを通して呼び出します。 2つのドロップダウン値を取得し、それらをtax_queryで使用して投稿を取得します。質問:下書きがデフォルトで結果に含まれるのはなぜですか?これを防ぐには'post_status' => 'publish'のコメントを外す必要があります。

ユーザーはログインしていません、そしてドキュメントは言う

「デフォルト値は 'publish'ですが、ユーザがログインしている場合は 'private'が追加されます。また、クエリが管理コンテキストで実行されている場合は保護ステータスも追加されます。 「保留中」

これはドラフトが「公開」と見なされたことを意味しますか?これらは通常の投稿です。ここではカスタム投稿タイプのものはありません。それともtax_queryがどういうわけかデフォルトの振る舞いを上書きしているのでしょうか?困惑しています。

これがクエリパラメータのコードです。

  $args = array(
    'posts_per_page' => 5,
    //'post_status' => 'publish',
    'tax_query' => array(
      'relation' => 'AND',
      array(
        'taxonomy' => 'height_category',
        'field' => 'slug',
        'terms' => array( $_POST['height'] )
      ),
      array(
        'taxonomy' => 'age_category',
        'field' => 'slug',
        'terms' => array( $_POST['age'] )
      )
    )
  );
1
montrealist

問題はあなたが言及した引用で説明されています:

"デフォルト値は 'publish'ですが、ユーザがログインしている場合は 'private'が追加されます。そしてクエリが管理コンテキストで実行されている場合デフォルトでは、保護状態は 'future'、 'draft'、 'pending'です。

Ajaxの呼び出しは常に管理コンテキストからのものと見なされます。

3
david.binda