私はWP_Query
パラメータafter
、および私はその日付の後に最も近いポストが欲しい _で_ date_query
をしています、しかし私は日付から将来最も近いものを得ます。これを制御するためのパラメータはありますか? 'near_to' => 'past/future'
、またはWP_Queryのようなものは常に最新のものを取得しますか?これは私のコードです:
$my_query = new WP_Query(array(
'post_type' => 'event',
'posts_per_page' => 1,
'date_query' => array(
'after' => date('Y-m-d h:i',time())
)
));
私はイベントサイトを持っています、そして私は最も近いものではなく、次のものを見せたいです。
確認された日付が今日であり、私が探している投稿が将来であるという事実を無視してください。関係ありません(いいえ、違います)。
私はコーデックスでおしゃべりをしていましたが、何も見つかりませんでした。すべての投稿をクエリして$my_query->posts
配列の最後の投稿に移動する必要がありますか。
編集:私は自分の結果を注文したくない、私は最新ではなく、古い投稿でそれらを制限したい(デフォルト)。将来の日付(イベント)の投稿がいくつかありますが、次のイベントが欲しいです。このパラメータ'posts_per_page' => 1
だけでクエリを実行すると、最新の投稿が表示されます。最も古い投稿が必要です。
ありがとうございます。
解決策はパラメータ'order' => 'ASC'
を使用することです。 @PieterGoosenと@webtoureに感謝します。それでは、私の質問が100%正解ではなかった理由とそれが機能する理由を説明しましょう。
私は'order'
でテストしませんでした。私は間違った投稿を1つしか持っていなかったので(私は思っていました)、注文するものはありませんでしたが、WP_Query
はそのようには動作しません私自身が この答え で説明したように、WP_Query
は最初に基準に一致する投稿を見つけ、それからそれらを注文し、ページネーションなどをします。だからあなたは日付'after'
を検索することができます。 'ASC'
で投稿し、'posts_per_page' => 1
で1件だけ投稿します。
あなたは実際にあなたのコードで'after' => date('Y-m-d h:i',time())
を使っていますか?それは常に投稿を求めます 年上 そのクエリが実行された正確な現在時刻。このようなもの:
'after' => date( 'Y-m-d h:i', time() - 60 * 60 * 24 )
過去24時間の参考になります。
上の部分は歴史のためのものです。この答えの解決策は であり、 - あっという間でした。
結果が "backwords"(逆の場合ではなく最新のもの)であることに関しては、あなたのスニペットにorder
節を追加することをお勧めします(私はそれをテストしていません)
$my_query = new WP_Query( array(
'post_type' => 'post',
'order' => 'ASC',
'posts_per_page' => 1,
'date_query' => array(
array(
'after' => date( 'Y-m-d h:i', time() ),
)
),
) );
最終編集(テスト済みおよび動作中)。 WordPressはデフォルトで 'DESC'をクエリするので、order
節が必要です。コードをテストして自分の目で確かめてください。