web-dev-qa-db-ja.com

投稿がカスタムpost_statusにある場合、投稿IDによるWP_Queryは機能しません

WP_Query() を使用して、IDで単一の投稿を表示したいです。これを行うには、次の引数を使用します。

$args = array(
   'p' => 61202);

それはうまくいくはずですが、うまくいかないようです if 投稿がカスタムのpost_statusにある.

これを修正するために、私は以下を試しました:

$args = array(
   'p' => 61202, // id of post
   'post_type' => 'any', // apply to all post types
   'post_status' => 'my_custom_status' // the custom post status
);

しかし、これはまだうまくいきません。 なぜ?!

既知のバグはありますか?私はこのコードをwp-admin領域で実行しています。投稿がWPコアの投稿ステータスのいずれかにある場合は、うまく機能します。

5

WP_Queryバグ(#29167)publish以外のステータスで(ほぼ?)投稿を取得しようとしたとき。このバグはtrunkで修正されているようです。テストしていないので、それがあなたのユースケースをカバーしているかどうかはわかりません。試してみて、うまくいかない場合は、そこでフィードバックを送ってください。

2つの回避策があります。

  1. get_post( $post_id )を使用してください。これは独自のクエリを実行し、このバグの影響を受けません。

  2. 投稿IDがわからない場合は、カスタムDBクエリを使用してください。

    $sql      = "SELECT * FROM $wpdb->posts WHERE post_status = %s AND post_type = %s";
    $prepared = $wpdb->prepare( $sql, $status, $post_type );
    $posts    = $wpdb->get_results( $sql );
4
fuxia