カスタム投稿タイプの一覧系ページを固定ページで作成する方法を紹介します。コード例はよく使われるパラメーターを使用しています。
WP_Queryを使ってページネーションに対応させる
ページネーションに対応させるために、WP_Queryを使って情報を取得する例です。
アーカイブ一覧を固定ページに設置する
<?php
$paged = get_query_var('paged') ? get_query_var('paged') : 1 ; //ページの判定
$args =	array(
		'posts_per_page' => 20, //表示件数
		'orderby' => 'date', //ソートの基準
		'order' => 'DESC', //DESC降順 ASC昇順
		'post_type' => 'post', //投稿タイプ名postは通常の投稿
		'post_status' => 'publish', //公開状態
		'caller_get_posts' => 1, //取得した記事の何番目から表示するか
		'paged' => $paged //ページネーションに必要
);
$wp_query = new WP_Query($args);
while ($wp_query->have_posts()) : $wp_query->the_post();
?>
//ループ内の処理
<?php endwhile; ?>
タームの一覧を固定ページに設置する
projects投稿タイプのprojectscatというタクソノミー名でpublishedというターム名の一覧を取得する場合。
<?php
$paged = get_query_var('paged') ? get_query_var('paged') : 1 ;
$args =	array(
		'posts_per_page' => 20,
		'orderby' => 'date',
		'order' => 'DESC',
		'post_type' => 'projects',
		'tax_query' => array(
			array(
				'taxonomy' => 'projectscat', //タクソノミー名
				'field' => 'slug',
				'terms' => 'published' //タームのスラッグ
				)
			),
		'post_status' => 'publish',
		'caller_get_posts' => 1,
		'paged' => $paged
);
$wp_query = new WP_Query($args);
while ($wp_query->have_posts()) : $wp_query->the_post();
?>
//ループ内の処理
<?php endwhile; ?>
ページネーション
前述のループに対応したページネーションです。当サイトもこの設定です。
<?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,
'type' => 'list', //ul liで出力
'mid_size' => 1, //カレントページの前後
'end_size' => 0,
'current' => ($paged ? $paged : 1),
'prev_text' => '<',
'next_text' => '>',
));
?>





