¿Mostrar la miniatura solo en la primera publicación del bucle?

3

¿Cuál es la mejor manera de usar <?php the_post_thumbnail();?> en mi bucle PERO solo muestra una miniatura en la PRIMERA publicación? Es decir, ¿solo la primera publicación en el bucle tendrá su imagen mostrada?

Aquí hay un ejemplo de un bucle que muestra la imagen de TODAS las publicaciones:

<!-- Start the Loop. -->
 <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
 <!-- Display the Title as a link to the Post's permalink. -->
 <h2><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2>
<!-- Display the posts Image thumbnail for the post -->
<?php the_post_thumbnail();?>
 <!-- Display the date and a link to other posts by this posts author. -->
 <small><?php the_time('F jS, Y') ?> by <?php the_author_posts_link() ?></small>
 <!-- Display the Post's Content in a div box. -->
 <div class="entry">
   <?php the_content(); ?>
 </div>

¡Gracias!

    
pregunta Pwn 25.03.2011 - 08:46

4 respuestas

12
  • agregue una variable antes del bucle (antes de while), por ejemplo $ first = true;
  • agregar una verificación dentro del bucle para esta variable
  • después del uso, cambia la bandera

Código:

<!-- Start the Loop. -->
 <?php $first = true; ?>
 <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
 <!-- Display the Title as a link to the Post's permalink. -->
 <h2><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2>
<!-- Display the posts Image thumbnail for the post -->
    <?php if ( $first ): ?>
      <?php the_post_thumbnail();?>
      <?php $first = false; ?>
    <?php endif; ?>
 <!-- Display the date and a link to other posts by this posts author. -->
 <small><?php the_time('F jS, Y') ?> by <?php the_author_posts_link() ?></small>
 <!-- Display the Post's Content in a div box. -->
 <div class="entry">
   <?php the_content(); ?>
 </div>
    
respondido por el petermolnar 25.03.2011 - 09:05
4

Este código en su plantilla mostrará la miniatura de la publicación solo para la primera publicación:

<?php 
    ! isset ( $loop_first ) and the_post_thumbnail();
    $loop_first = 1;
?>
    
respondido por el fuxia 25.03.2011 - 09:00
3

Esto es lo que uso en mis proyectos y funciona bien para mí. Modifiqué el código que me proporcionaste. Simplemente suéltelo y mostrará la miniatura de la publicación solo para la primera publicación.

<!-- Start the Loop. -->
 <?php $i = 1 ; ?>
 <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
 <!-- Display the Title as a link to the Post's permalink. -->
 <h2><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2>
<?php if ($i == 1): ?>
<!-- Display the posts Image thumbnail for the post -->
<?php the_post_thumbnail();?>
<?php endif; ?>
 <!-- Display the date and a link to other posts by this posts author. -->
 <small><?php the_time('F jS, Y') ?> by <?php the_author_posts_link() ?></small>
 <!-- Display the Post's Content in a div box. -->
 <div class="entry">
   <?php the_content(); ?>
 </div>
<?php $i++; endwhile; endif; ?>
    
respondido por el Dwayne Charrington 25.03.2011 - 12:00
0

Simplemente comprueba el valor current_post

global $wp_query; // get the global query - works in custom queries too
if(0 == $wp_query->current_post){ /**is the first post**/ }
    
respondido por el Maxwell s.c 20.10.2017 - 21:31

Lea otras preguntas en las etiquetas