web-dev-qa-db-ja.com

特定の日付/特定の年齢の間でランダムに投稿する

カスタム投稿タイプから投稿IDをランダムに取得する必要があり、投稿は30日以内に投稿されます。
しかし、私は本当に解決策を見つけることができません。どうすればいいの?

これが私の質問です。

query_posts("post_type='random_posts'&order='DESC'&posts_per_page=10");
//shuffle(query_posts())
1
pulla

事前に2つの注意事項

  1. (CPTを作成した場合を除き) 投稿タイプrandom_postsはありません。

  2. query_posts を使用しないでください。

それが言われて、次はあなたが望むことをするでしょう:

ランダムさだけ

$args = array(
     'posts_per_page' => '10',
     'orderby' => 'Rand' 
);
$random_posts = get_posts( $args );

foreach( $random_posts as $random_post ) {
    // do something
    echo $random_post->ID . '<br />\n'; // access Post ID, for instance
}

参照: get_posts

3.7より前の日付

これまでのところ、30日後の年齢制限は、1回のクエリでは簡単に達成できませんでした。今月から投稿を簡単に取得することができます。

$args = array(
     'posts_per_page' => '10',
     'orderby' => 'Rand',
     'monthnum' => intval( date( 'n' ) )
);
// rest same as above

これは特定の月の終わりにはうまくいくでしょうが、月の最初の日には悪い結果を返します(つまり何もしません)。

もう1つの選択肢は、必要な10件よりもはるかに多くの投稿をクエリし、結果をループしながら日付を確認することでした。ハッキーも感じます。
幸い、WP 3.7はもうすぐです...

WP 3.7から始まる日付

WordPress 3.7ではdate_queryパラメータ が導入されます。 (これは素晴らしいです)
- > 用法

これはあなたの要求を簡単にするでしょう:

$args = array(
    'posts_per_page' => '10',
    'orderby' => 'Rand',
    'date_query' => array(
        array(
            'column' => 'post_date_gmt',
            'after'  => '1 month ago'
        )
    )
);
// rest same as above   
2
Johannes Pille