カスタム投稿タイプから投稿IDをランダムに取得する必要があり、投稿は30日以内に投稿されます。
しかし、私は本当に解決策を見つけることができません。どうすればいいの?
これが私の質問です。
query_posts("post_type='random_posts'&order='DESC'&posts_per_page=10");
//shuffle(query_posts())
事前に2つの注意事項
(CPTを作成した場合を除き) 投稿タイプrandom_posts
はありません。
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
これまでのところ、30日後の年齢制限は、1回のクエリでは簡単に達成できませんでした。今月から投稿を簡単に取得することができます。
$args = array(
'posts_per_page' => '10',
'orderby' => 'Rand',
'monthnum' => intval( date( 'n' ) )
);
// rest same as above
これは特定の月の終わりにはうまくいくでしょうが、月の最初の日には悪い結果を返します(つまり何もしません)。
もう1つの選択肢は、必要な10件よりもはるかに多くの投稿をクエリし、結果をループしながら日付を確認することでした。ハッキーも感じます。
幸い、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