最近の投稿をいくつか書きたいです。だから私は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');
}
}
?>
実際には、ポスト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();
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>
タグ内にサムネイルを入れました。)