WordPressで最近記事の一覧を表示する方法-get_postsでの出力方法
get_postsでの出力方法
トップページなどで、最新記事の「投稿日」と「投稿タイトル」を10件表示させたい場合
(get_postsでは、’numberposts’と’posts_per_page’のどちらも使用可能)
<ul>
<?php
$posts = get_posts(array(
'numberposts' => 10,
'post_status' => 'publish',
));
if ($posts):
foreach ($posts as $post):
setup_postdata($post); // ← これが重要です
?>
<li>
<span><?php echo get_the_date('Y年m月d日'); ?></span>
<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
</li>
<?php
endforeach;
wp_reset_postdata();
endif;
?>
</ul>
「投稿タイトル」が長い場合、30文字に制限して表示させたい場合
<ul>
<?php
$posts = get_posts(array(
'numberposts' => 10,
'post_status' => 'publish',
));
if ($posts):
foreach ($posts as $post):
setup_postdata($post);
?>
<li>
<span><?php echo get_the_date('Y年m月d日'); ?></span>
<a href="<?php the_permalink(); ?>">
<?php
$title = $post->post_title;
if (mb_strlen($title) > 30) {
echo esc_html(mb_substr($title, 0, 30)) . '・・・';
} else {
echo esc_html($title);
}
?>
</a>
</li>
<?php
endforeach;
wp_reset_postdata();
endif;
?>
</ul>
最新記事をサムネイル付きで一覧表示させたい場合
<ul>
<?php
$posts = get_posts(array(
'numberposts' => 10,
'post_status' => 'publish',
));
if ($posts):
foreach ($posts as $post):
setup_postdata($post);
?>
<li>
<a href="<?php the_permalink(); ?>">
<div class="thumb">
<?php if ( has_post_thumbnail() ): ?>
<?php the_post_thumbnail('thumbnail'); ?>
<?php else: ?>
<img src="<?php echo esc_url(catch_first_image()); ?>" alt="<?php echo esc_attr(get_the_title()); ?>">
<?php endif; ?>
</div>
<div class="title">
<span><?php echo get_the_date('Y年m月d日'); ?></span> <?php the_title(); ?>
</div>
</a>
</li>
<?php
endforeach;
wp_reset_postdata();
endif;
?>
</ul>
カテゴリを絞って表示させたい場合
(ループ外で使う場合のコード)
<?php
$arg = array(
'posts_per_page' => 10,
'orderby' => 'date',
'order' => 'DESC',
'category_name' => 'works',
);
$posts = get_posts($arg);
if ($posts): ?>
<ul>
<?php foreach ($posts as $post): setup_postdata($post); ?>
<li>
<a href="<?php the_permalink(); ?>">
<div class="thumb">
<?php if (has_post_thumbnail()): ?>
<?php the_post_thumbnail('thumbnail'); ?>
<?php else: ?>
<img src="<?php echo esc_url(catch_first_image()); ?>" alt="<?php echo esc_attr(get_the_title()); ?>">
<?php endif; ?>
</div>
<div class="title">
<span><?php echo get_the_date('Y年m月d日'); ?></span>
<?php the_title(); ?>
</div>
</a>
</li>
<?php endforeach; ?>
</ul>
<?php endif; wp_reset_postdata(); ?>
