ホームページの作成や運用ノウハウについて、プロのクリエイターが情報を無料公開!

ホームページTIPS
facebook twitter mail

このサイトはコーディング初心者〜中級者向けの情報サイトです。掲載コードの転用制限はありませんが、
動作保証は行なっておりません。ご意見については、フォームからお知らせください。

wordpressに関するTips

更新日:2018.4.18

テンプレート別、カスタム投稿タイプ別にアーカイプページの記事数を指定する(functions.php)

解 説

WordPressの記事一覧を表示させるテンプレートは、年月別アーカイブ、カテゴリー別アーカイブ、記事の作成者別アーカイブなどいくつか種類があり、さらに、カスタム投稿タイプのアーカイブ、カスタムタクソノミー(カスタム投稿タイプのカテゴリー)のアーカイブもあります。今回は、それぞれのテンプレート別に、一覧表示させたい記事の数を、任意で設定する方法をご紹介します。

1functions.phpに以下のコードを設定すればOKです。必要に応じてコメントアウト(//)を解除してください
/*===================================================================
*テンプレート、カスタム投稿タイプ・カスタムタクソノミーごとの表示件数を設定
===================================================================*/
add_action('pre_get_posts','my_pre_get_posts');
  function my_pre_get_posts( $query ) {

  //  if(is_admin() || ! $query -> is_main_query()) return;
  //  if($query -> is_front_page()) { //フロントページ
  //    $query -> set('posts_per_page',10); //10件
  //  }

  //  if($query->is_home()){ // トップページ
  //    $query->set( 'posts_per_page',20); //20件
  //  }

  //  if($query->is_month()){ // 月別アーカイブ
  //    $query->set('posts_per_page',-1); // -1ですべて表示
  //  }

  //  if($query->is_year()){ //年別アーカイブ
  //    $query->set('posts_per_page',10); //10件
  //  }

  //  if($query->is_author()){ // 作成者アーカイブ
  //     $query->set('posts_per_page',10); // 10件
  //   }

  //  if($query->is_category()){ // カテゴリーアーカイブ
  //    $query->set('posts_per_page',10); // 10件
  //  }

  //shoplistというカスタム投稿タイプのアーカイブページ
  //  if($query -> is_post_type_archive('shoplist')){
  //  $query -> set('posts_per_page',200); //200件
  //  $query -> set('order','ASC'); //昇順
  //  $query -> set('orderby', 'date'); //日
  //  }

  //newscatというタクソノミーの一覧ページ
  //  if ($query -> is_tax('newscat')) {
  //    $query -> set('posts_per_page', 10); //10件
  //    $query -> set('order', 'DESC'); //降順
  //    $query -> set('orderby', 'date'); //日
  //  }  
}
2トップページには「投稿」を10件表示、カスタム投稿タイプ「shoplist」のアーカイブページには200件表示させる場合
/*===================================================================
*テンプレート、カスタム投稿タイプ・カスタムタクソノミーごとの表示件数を設定
===================================================================*/
add_action('pre_get_posts','my_pre_get_posts');
  function my_pre_get_posts( $query ) {

  //  if(is_admin() || ! $query -> is_main_query()) return;
  //  if($query -> is_front_page()) { //フロントページ
  //    $query -> set('posts_per_page',10); //10件
  //  }

    if($query->is_home()){ // トップページ
      $query->set( 'posts_per_page',10); //10件
    }

  //  if($query->is_month()){ // 月別アーカイブ
  //    $query->set('posts_per_page',-1); // -1ですべて表示
  //  }

  //  if($query->is_year()){ //年別アーカイブ
  //    $query->set('posts_per_page',10); //10件
  //  }

  //  if($query->is_author()){ // 作成者アーカイブ
  //     $query->set('posts_per_page',10); // 10件
  //   }

  //  if($query->is_category()){ // カテゴリーアーカイブ
  //    $query->set('posts_per_page',10); // 10件
  //  }

  //shoplistというカスタム投稿タイプのアーカイブページ
    if($query -> is_post_type_archive('shoplist')){
    $query -> set('posts_per_page',200); //200件
    $query -> set('order','ASC'); //昇順
    $query -> set('orderby', 'date'); //日
    }

  //newscatというタクソノミーの一覧ページ
  //  if ($query -> is_tax('newscat')) {
  //    $query -> set('posts_per_page', 10); //10件
  //    $query -> set('order', 'DESC'); //降順
  //    $query -> set('orderby', 'date'); //日
  //  }  
}

上記のように使いたいテンプレートの部分だけ、コメントアウトを解除してもらえばOKです。

トップへ