WP-Pagenaviを使わずにページナビゲーションを表示
- Category: WordPress関係
「吟遊詩人の戯言 » ページナビゲーション機能を改版してみたり」より。
function bmPageNavi() {
global $wp_rewrite;
global $wp_query;
global $paged;
$paginate_base = get_pagenum_link(1);
if*1 {
$paginate_format = '';
$paginate_base = add_query_arg('paged', '%#%');
} else {
$paginate_format = (substr($paginate_base, -1 ,1) == '/' ? '' : '/') .
user_trailingslashit('page/%#%/', 'paged');;
$paginate_base .= '%_%';
}
$result = paginate_links( array(
'base' => $paginate_base,
'format' => $paginate_format,
'total' => $wp_query->max_num_pages,
'mid_size' => 5,
'current' => ($paged ? $paged : 1),
));
echo '<ul class="pageNav">'."\n\t<li>".$result."</li>\n</ul>\n";
endif;
}
functions.phpに書いておいて使う。ul要素にするのが嫌だって場合は、最後のecho文を好みの出力形式に変えればいいと思う。
追記
WordPress 3.0.1 *2を利用していて、query_posts関数のパラメータposts_per_pageで1ページ当たりの記事数を指定したときに、ページ送りが上手くいかず、2ページ目以降がNot Foundになることがあった。詳しい条件は不明。そこまで調べる気もないし。
その場合はWordPressの管理画面から設定→表示設定の中にある「1ページに表示する最大投稿数」をposts_per_pageに指定した値よりも小さくすればいい。