J'essaie de créer une boucle simple, qui obtient le dernier message de 3 catégories sélectionnées. J'ai cherché quelque chose de similaire, mais la plupart sont excessivement complexes.
Pour le moment, j'ai:
<?php
// WP_Query arguments
$args = array (
'category_name' => array('lifestyle', 'fashion', 'beauty')
);
// The Query
$query = new WP_Query( $args[0] );
// The Loop
if ( $query->have_posts() ) {
while ( $query->have_posts() ) {
$query->the_post();
// do something
}
} else {
// no posts found
}
// Restore original Post Data
wp_reset_postdata();
?>
Je suppose que j'aurais besoin d'une boucle foreach
, mais je ne sais pas comment l'implémenter dans ce scénario, et uniquement pour le dernier de chaque message?
Toute aide est la bienvenue.
Il n'est pas possible d'obtenir une publication par catégorie avec une requête simple, et même une requête complexe prend plus de temps que 3 requêtes distinctes. Donc, si vous voulez plus simple, alors c'est la solution -
$cats = array('lifestyle', 'fashion', 'beauty');
$exclude_posts = array();
foreach( $cats as $cat )
{
// build query argument
$query_args = array(
'category_name' => $cat,
'showposts' => 1,
'post_type' => 'post',
'post_status' => 'publish',
'orderby' => 'date',
'order' => 'DESC'
);
// exclude post that already have been fetched
// this would be useful if multiple category is assigned for same post
if( !empty($exclude_posts) )
$query_args['post__not_in'] = $exclude_posts;
// do query
$query = new WP_Query( $query_args );
// check if query have any post
if ( $query->have_posts() ) {
// start loop
while ( $query->have_posts() ) {
// set post global
$query->the_post();
// add current post id to exclusion array
$exclude_posts[] = get_the_ID();
// do something
}
} else {
// no posts found
}
// Restore original Post Data
wp_reset_postdata();
}