web-dev-qa-db-ja.com

ループの最初の投稿にのみサムネイルを表示しますか?

私のループで<?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>

ありがとうございました!

3
Pwn
  • ループの前(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>
13
petermolnar

あなたのテンプレートのこのコードは最初の投稿に対してのみ投稿のサムネイルを表示します。

<?php 
    ! isset ( $loop_first ) and the_post_thumbnail();
    $loop_first = 1;
?>
4
fuxia

これが私のプロジェクトで使用しているもので、私にとってはうまく機能しています。あなたが提供するコードをそれに合うように修正しました。単にそれをドロップインして、それは最初の投稿のためだけに投稿のサムネイルを表示します。

<!-- 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; ?>
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
Maxwell s.c