J'ai les boucles suivantes sur une page de mon site Web.
Quel est le meilleur moyen d’adapter le code ci-dessous pour arrêter la publication dans ma première boucle, puis de la répéter dans la seconde?
<?php query_posts('showposts=1&post_type=post'); ?>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<div id="latestpost" <?php
if ( $thumbnail_id = get_post_thumbnail_id() ) {
if ( $image_src = wp_get_attachment_image_src( $thumbnail_id, 'normal-bg' ) )
printf( ' style="background-image: url(%s);"', $image_src[0] );
}
?>>
<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
<a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>">
<h2><?php the_title() ;?></h2>
<div class="summary" style="color:#fff;">
<?php the_excerpt(); ?>
</div>
<!-- <?php the_post_thumbnail(); ?> -->
<?php endwhile; else: ?>
<p>Sorry, there are no posts to display</p>
</a><!-- permalink -->
<?php endif; ?>
</article>
</div><!-- latest post -->
<?php wp_reset_query(); ?>
<div id="postlist">
<h2>Personal finances</h2>
<?php query_posts('showposts=3&post_type=post&category_name=Personal');
?>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<!-- article -->
<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
<!-- post title -->
<div class="post-thumbnail">
<!-- post thumbnail -->
<?php if ( has_post_thumbnail()) : // Check if thumbnail exists ?>
<a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>">
<?php the_post_thumbnail(array(120,120)); // Declare pixel size you need inside the array ?>
</a>
<?php endif; ?>
<!-- /post thumbnail -->
</div>
<h3 class="postlist-article-header">
<a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a>
</h3>
<!-- /post title -->
</article>
<!-- /article -->
<?php endwhile; ?>
<?php else: ?>
<!-- article -->
<article>
<h2><?php _e( 'Sorry, nothing to display.', 'html5blank' ); ?></h2>
</article>
<!-- /article -->
<?php endif; ?>
<?php wp_reset_query(); ?>
Vous pouvez rassembler le ou les identifiants de publication de la première boucle d'un tableau, puis utiliser post__not_in arg dans la deuxième boucle.
$exclude = array();
if ( have_posts() ) : while ( have_posts() ) : the_post();
//first loop
$exclude[] = get_the_ID();
...
//second loop
$second_loop_args = array(
'showposts' => 3,
'post_type' => 'post',
'category_name' => 'Personal', //should make sure you're using category slug here
'post__not_in' => $exclude //this arg needs to be an array, hence moving from string to array format for query_post args
);
query_posts($second_loop_args);
....
** Je dirai cependant que vous devriez reconsidérer l'utilisation de WP_Query () pour vos boucles au lieu de query_posts comme détaillé ici: https://codex.wordpress.org/Class_Reference/WP_Query
C'est fondamentalement la même chose, mais au lieu d'utiliser query_posts, vous assignez simplement une variable à votre nouvelle classe WP_Query et vous la passez en boucle.