Je dois obtenir des identifiants de publication à partir d'un type de publication personnalisé de manière aléatoire et les publications sont publiées dans un délai de 30 jours.
Mais je ne trouve pas vraiment de solution. Comment puis-je le faire?
Ceci est ma requête.
query_posts("post_type='random_posts'&order='DESC'&posts_per_page=10");
//shuffle(query_posts())
Deux notes à l'avance:
Il n'y a pas (sauf si vous avez créé un CPT) un type de messagerandom_posts
.
Cela étant dit, ce qui suit fera ce que vous voulez:
$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
}
Référence: get_posts
Jusqu'ici, votre restriction de 30 jours après l'âge n'était pas facilement réalisable en une seule requête. Vous pouvez facilement récupérer les publications du mois en cours uniquement de la manière suivante:
$args = array(
'posts_per_page' => '10',
'orderby' => 'Rand',
'monthnum' => intval( date( 'n' ) )
);
// rest same as above
Ce qui fonctionnerait bien pour vous à la fin d’un mois donné, mais renverrait de mauvais résultats (c’est-à-dire rien) le premier jour du mois.
L'autre option aurait été de rechercher beaucoup plus de messages que le 10 requis et de vérifier les dates tout en parcourant les résultats. Se sent aussi hacky.
Heureusement, WP 3.7 est au coin de la rue ...
WordPress 3.7 introduira le paramètre date_query
. (Ce qui est génial génial.)
-> Utilisation
Cela rendra votre exigence simple comme bonjour:
$args = array(
'posts_per_page' => '10',
'orderby' => 'Rand',
'date_query' => array(
array(
'column' => 'post_date_gmt',
'after' => '1 month ago'
)
)
);
// rest same as above