[WordPress]get_postsとWP_Queryでカスタムループを生成するスニペット。

[WordPress]get_postsとWP_Queryでカスタムループを生成するスニペット。

2017年02月02日 /最終更新:2017年08月17日

get_postsとWP_Queryでカスタムループを生成するスニペットです。

[WordPress]get_postsとWP_Queryでカスタムループを生成するスニペット。

投稿のループを「get_posts」で取得する場合は以下のようにカスタムループを生成します。

get_posts

  $args = array(
    'post_type' => '投稿タイプ',
    'posts_per_page' => 10 // 表示数
  );
  $my_posts = get_posts( $args );
  if ( $my_posts ) {
    echo ' <dl>' . "\n";
    foreach ( $my_posts as $post ) {
      setup_postdata( $post );
      echo ' <dt>' . date('Y.m.d', strtotime($post->post_date)) . '</dt>'."\n";
      echo ' <dd><a href="' . get_permalink() . '">' . get_the_title() . '</a></dd>' . "\n";
    } //endforeach;
    wp_reset_postdata();
    echo ' </dl>' . "\n";
  }

それに対し、「WP_Query」でのカスタムループの生成は以下のように。

WP_Query

  $args = array(
    'post_type' => '投稿タイプ',
    'posts_per_page' => 10 // 表示数
  );
  $my_posts = new WP_Query( $args );
  if ( $my_posts ) {
    echo ' <dl>' . "\n";
    while ( $my_posts->have_posts() ) {
      $my_posts->the_post();
      echo ' <dt>' . date('Y.m.d', strtotime($post->post_date)) . '</dt>'."\n";
      echo ' <dd><a href="' . get_permalink() . '">' . get_the_title() . '</a></dd>' . "\n";
    } //endwhile;
    wp_reset_postdata();
    echo ' </dl>' . "\n";
  }

といった感じですね。