CHIPS

制作チップス

WordPressで最近記事の一覧を表示する方法-get_postsでの出力方法

2025年6月11日

カテゴリー: 制作チップス

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(); ?>