onefishtaco
  • 0
Новичок

Отображать миниатюру только для самого первого сообщения в цикле?

  • 0

Какой лучший способ использовать <?php the_post_thumbnail();?> в моем цикле, НО показывать только миниатюру в ПЕРВОМ сообщении? Это означает, что изображение будет отображаться только в первом сообщении в цикле?

Вот пример цикла, который показывает изображение для ВСЕХ постов:

<!-- 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>

Спасибо!

Share
    • добавить переменную перед циклом (до while), например $first = true;
    • добавить проверку внутри цикла для этой переменной
    • после использования изменить флаг

    Код:

    <!-- 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>
    
    • 0
  1. Этот код в вашем шаблоне будет отображать миниатюру сообщения только для первого сообщения:

    <?php 
        ! isset ( $loop_first ) and the_post_thumbnail();
        $loop_first = 1;
    ?>
    
    • 0
  2. Это то, что я использую в своих проектах, и это хорошо работает для меня. Я изменил код, который вы предоставили, чтобы он подходил. Просто вставьте его, и он отобразит миниатюру сообщения только для первого сообщения.

    <!-- 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; ?>
    
    • 0
  3. Просто проверьте current_post значение

    global $wp_query; // get the global query - works in custom queries too
    if(0 == $wp_query->current_post){ /**is the first post**/ }
    
    • 0

Оставить ответ

You must login to add an answer.