【Wordpress】カスタム投稿タイプの「archive-*****.php」ページャー を実装する。

電脳備忘録

本記事のソースコードの利用によって生じた損害について、当方は一切の責任を負いません。ご自身の判断と責任のもとで参照・ご利用ください。

この記事は最終更新から7年以上経過しています。

カスタム投稿タイプの「archive-*****.php」ページャー を実装する。

例えばカスタム投稿タイプ「success-story」の1ページあたりの記事数を6、カスタム投稿タイプ「news」」の1ページあたりの記事数を3にしたい場合、function.phpに追記。

function change_posts_per_page($query) {
	if ( is_admin() || ! $query->is_main_query() ) {
	  return;
	}
	if ( $query->is_post_type_archive('success-story')){
	  $query->set( 'posts_per_page', '6' );//ここで表示件数を設定
	}elseif ( $query->is_post_type_archive('news')) {//ここでタクソノミー名を設定
		$query->set( 'posts_per_page', '3' );//ここで表示件数を設定
	}
}
add_action( 'pre_get_posts', 'change_posts_per_page' );

「archive-*****.php」にはページャー を表示させる構文を記載しておくこと

<?php global $wp_rewrite;
    $paginate_base = get_pagenum_link(1);
    if (strpos($paginate_base, '?') || ! $wp_rewrite->using_permalinks()) {
      $paginate_format = '';
      $paginate_base = add_query_arg('paged', '%#%');
    } else {
      $paginate_format = (substr($paginate_base, -1 ,1) == '/' ? '' : '/') .
      user_trailingslashit('page/%#%/', 'paged');;
      $paginate_base .= '%_%';
    }
    echo paginate_links( array(
      'base' => $paginate_base,
      'format' => $paginate_format,
      'total' => $wp_query->max_num_pages,
      'mid_size' => 5,
      'current' => ($paged ? $paged : 1),
    ));
  ?>

これでカスタム投稿タイプごとに表示件数を指定いてページャー を設定することができる様になった。

0%