Je souhaite afficher tous les messages, mais exclure uniquement le message NOUVEAU de la catégorie "En vedette", les autres messages de ce chat devraient s'afficher. Une idée de ce que je devrais ajouter à la boucle pour y parvenir? Je veux que tous les autres messages d'autres chats soient également affichés!
Étant donné que par défaut, la boucle récupère les publications dans l'ordre décroissant, vous pouvez effectuer les opérations suivantes:
En dehors de la boucle:
$featured_flag = false;
Dans la boucle:
if(in_category('Featured')) {
if($featured_flag) {
the_content();
}
else {
$featured_flag = true;
}
}
else {
the_content();
}
La première fois qu'un article de la catégorie En vedette est rencontré (c'est-à-dire le plus récent), il sera ignoré et le $featured_flag
sera défini sur true
. Les temps suivants dans la boucle the_content()
seront affichés.
Edit : Pour tenir compte de la pagination, vous pouvez remplacer $featured_flag
par une variable $_SESSION
. Ainsi, la valeur true/false persistera sur plusieurs pages et, une fois définie, les articles true
continueront à s'afficher correctement. Merci de signaler l'erreur de mes manières Bainternet :)
Il y a quelque temps, j'ai posté une fonction simple qui obtient le dernier message dans une certaine catégorie :
function get_lastest_post_of_category($cat){
$args = array( 'posts_per_page' => 1, 'order'=> 'DESC', 'orderby' => 'date', 'category__in' => (array)$cat);
$post_is = get_posts( $args );
return $post_is[0]->ID;
}
Donc, une fois que vous avez cette fonction, vous pouvez utiliser WP_Query ou query_posts et utiliser le paramètre post__not_in
pour exclure cette publication.
query_posts(array(`post__not_in` => array(get_lastest_post_of_category($CAT_ID))));
remplacez simplement $ CAT_ID par l'id de la catégorie actuelle