スポンサーリンク

| キーワード:

category.phpのループ実装例 (WP_Query)

一番外側のdivの前後はhtmlやheadやbodyやnaviを入れる領域です。このコードを囲むループは存在しません。

 

<div class="contents">
  <?php
  $cat_info = get_category( get_query_var( 'cat' ) );      //現在のページのカテゴリ情報を取得
  $my_paged = get_query_var( 'paged', 0 );  //現在のページのページ番号を取得
  ?>

  <?php

  // 記事一覧
  $args = array(
    'post_type' => array('post'),
    'post_status' => array('publish'),
    'order'=>'desc',
    'orderby'=>'post_date',
    'paged' => $my_paged,
    'posts_per_page' => 20,
      'category_name' => $cat_info->slug
    );

  $query = new WP_Query($args);// $argsで指定した条件に合う記事群を取得
  
  /* タイトル表示 */
  echo '<h1>' . esc_html( $cat_info->name );
  echo '(';
  echo (0 == $my_paged ? 1 : get_query_var( 'paged', 1 )) . '/';
  echo $query->max_num_pages;
  echo ')';
  echo '</h1>';


  // 記事表示用ループ
  if ( $query->have_posts() ) :
    while ( $query->have_posts() ) : 
      $query->the_post();
  ?>
        <div>
          <time><?php the_modified_date('Y/m/d'); ?></time> <!-- 更新日 -->
          <p><a href="<?php the_permalink(); ?>"><?php esc_html( the_title() ); ?></a></p> <!-- タイトル -->
        </div>
        <div>
          <div><?php /* the_content(); */ /*本文を表示する場合は左のコメントを外す*/ ?></div>
        </div>
  <?php
    endwhile;
  endif;
  wp_reset_postdata();
  ?>

  <?php
  //ページネーション
  $big = 999999999;
  $links = paginate_links(array(
    'base' => str_replace($big, '%#%', esc_url(get_pagenum_link($big))),
    'show_all' => true,
    'type' => 'array',
    'format' => '?paged=%#%',
    'current' => max(1, $my_paged ),
    'total' => $query->max_num_pages,
    'prev_text' => '前へ',
    'next_text' => '次へ',
  ));
  ?>
  <!-- ページネーション表示 -->
  <?php if( $links){ ?>
  <div>
    <?php foreach($links as $lnk){ ?>
    <span><?php echo $lnk ?></span>
  <?php }} ?>
  </div>
  
</div>

 

 

 

 

 

 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)


この記事のトラックバックURL: