query posts
if posts exist
then begin the loop
if post is even: <h1>title</h1><p>content</p>
if post is odd: <div>its image</div>
c’est ce que j’essaie d’obtenir: une sortie différente pour les publications impaires/paires: pour les publications paires, nous montrerons le titre et le contenu, tandis que pour les publications impaires, nous montrerons son image (la vignette, par exemple). Comment obtenir ce résultat?
J'interroge post de cette façon
query_posts('category_name=category-name');
alors je ne sais pas comment continuer
Vous n'avez pas besoin d'une nouvelle variable pour compter les articles, WordPress en a déjà une dans $wp_query->current_post
.
<?php while (have_posts()): the_post() ?>
<?php if ($wp_query->current_post % 2 == 0): ?>
even
<?php else: ?>
odd
<?php endif ?>
<?php endwhile ?>
Si vous utilisez une instance personnalisée de WP_Query
comme suggéré par iEmanuele, il s'agira plutôt de $query->current_post
.
S'il vous plaît ne pas utiliser query_posts (); , utilisez WP_Query
class ou get_posts();
à la place.
Pour cibler les publications impaires/paires dans votre boucle:
//I will use WP_Query class instance
$args( 'post_type' => 'recipe', 'posts_per_page' => 5 );
//Set up a counter
$counter = 0;
//Preparing the Loop
$query = new WP_Query( $args );
//In while loop counter increments by one $counter++
if( $query->have_posts() ) : while( $query->have_posts() ) : $query->the_post(); $counter++;
//We are in loop so we can check if counter is odd or even
if( $counter % 2 == 0 ) : //It's even
the_title(); //Echo the title of post
the_content(); //Echo the content of the post
else: //It's odd
if( has_post_thumbnail() ) : //If the post has the post thumbnail, show it
the_post_thumbnail();
endif;
endif;
endwhile; wp_reset_postdata(); endif;
J'espère que ça aide!
Vous pouvez avoir une nouvelle variable pour compter le nombre de publications, puis l'augmenter à l'intérieur de la boucle while , puis vérifier si elle est impaire ou paire. Voici un exemple de code du fichier loop.php de thème Blaskan } qui affiche les archives d'un auteur ...
<?php // Start the loop ?>
<?php while ( have_posts() ) : the_post(); ?>
<?php if ( ( is_archive() || is_author() ) && ( !is_category() && !is_tag() ) ) : // Archives ?>
<li>
<a href="<?php the_permalink(); ?>" title="<?php printf( esc_attr__( 'Permalink to %s', 'blaskan' ), the_title_attribute( 'echo=0' ) ); ?>"><?php the_title(); ?></a>
<time datetime="<?php the_date('c'); ?>"><?php print get_the_date(); ?></time>
</li>
<?php else: // Else ?>
Code modifié qui affiche la date de publication, uniquement sur les publications paires numérotées dans les archives de l'auteur ...
<?php $posts_count = 1; // Start the loop ?>
<?php while ( have_posts() ) : the_post(); ?>
<?php ++$posts_count; ?>
<?php if ( ( is_archive() || is_author() ) && ( !is_category() && !is_tag() ) ) : // Archives ?>
<li>
<a href="<?php the_permalink(); ?>" title="<?php printf( esc_attr__( 'Permalink to %s', 'blaskan' ), the_title_attribute( 'echo=0' ) ); ?>"><?php the_title(); ?></a>
<?php if($posts_count % 2): ?> <time datetime="<?php the_date('c'); ?>"><?php print get_the_date(); ?></time> <?php endif; ?>
</li>
<?php else: // Else ?>