web-dev-qa-db-ja.com

サムネイルで最近の投稿を取得する

最近の投稿をいくつか書きたいです。だから私はwp_get_recent_postsを使います。しかし、私は最初の画像しか得られません。

<?php $args = array( 'numberposts' => '3' );

$recent_posts = wp_get_recent_posts($args);
foreach( $recent_posts as $recent ){
    echo '<li><a href="' . get_permalink($recent["ID"]) . '">' . $recent["post_title"].'</a> </li> ';
        if ( has_post_thumbnail() ) { 
        the_post_thumbnail('thumbnail');
    }
}
?>
2

実際には、ポストIDを関数 has_post_thumbnail() に渡していないため、条件は常にfalseを返しており、関数は常にnullであるデフォルト値を取得しています。

has_post_thumbnail( $recent["ID"] )

関数 get_the_post_thumbnail() と同じです。

get_the_post_thumbnail( $recent["ID"] )


$args = array( 'numberposts' => '3' );

$recent_posts = wp_get_recent_posts($args);

foreach( $recent_posts as $recent ){
   if ( has_post_thumbnail( $recent["ID"]) ) {
      echo  get_the_post_thumbnail($recent["ID"],'thumbnail');
    }
}

しかし、WordPress The_Loop 内で関数has_post_thumbnail();get_the_post_thumbnail()を使用する場合、投稿IDを渡す必要はありません。


$args = array( 'posts_per_page' => '3' );
$recent_posts = new WP_Query($args);
while( $recent_posts->have_posts() ) { 

   $recent_posts->the_post() ; 

   if ( has_post_thumbnail() ) {
      echo  get_the_post_thumbnail();
    }
}

wp_reset_postdata();
3

the_post_thumbnailを使うためには、ループを初期化する必要があります。だから、このようにもっと:

<?php 
$args = array( 'posts_per_page' => '3' );
$recent_posts = new WP_Query($args);
while( $recent_posts->have_posts() ) :  
    $recent_posts->the_post() ?>
    <li>
        <a href="<?php echo get_permalink() ?>"><?php the_title() ?></a> 
        <?php if ( has_post_thumbnail() ) : ?>
            <?php the_post_thumbnail('thumbnail') ?>
        <?php endif ?>    
    </li>
<?php endwhile; ?>
<?php wp_reset_postdata(); # reset post data so that other queries/loops work ?> 

<li>または<li>内の<ol>以外は無効なhtmlであるため、私は<ul>タグ内にサムネイルを入れました。)

2
guiniveretoo