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コアの投稿ステータスのいずれかにある場合は、うまく機能します。
WP_Query
に バグ(#29167)publish
以外のステータスで(ほぼ?)投稿を取得しようとしたとき。このバグはtrunkで修正されているようです。テストしていないので、それがあなたのユースケースをカバーしているかどうかはわかりません。試してみて、うまくいかない場合は、そこでフィードバックを送ってください。
2つの回避策があります。
get_post( $post_id )
を使用してください。これは独自のクエリを実行し、このバグの影響を受けません。
投稿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 );