プラグインを使わずにページネーションを表示する場合、コリスさんのWordPressにプラグイン無しでページネーションを設置する方法 | コリスを使っています。
<?php
if (function_exists("pagination")) {
kriesi_pagination($additional_loop->max_num_pages);
} ?>
additional_loopのところをwp_queryにしても同じ。
<?php
if (function_exists("pagination")) {
pagination($wp_query->max_num_pages);
}
?>
これはたとえばカスタム投稿タイプのarchive-×××.phpでは表示されますが、固定ページでarchive-×××.phpというテンプレートを選択して記事一覧を表示させる場合は、全く表示されませんでした。
原因はページに記述した表示記事数とWPの表示設定が異なっていること
長く放置していたこの件、原因がわかりました。
ページネーションを設置しているページのテンプレートには、get_posts(‘post_type=hoge&posts_per_page=1’);のposts_per_page=1と書いていました。これがWPの表示設定と違っていて、なおかつ投稿数がWPの表示設定数に足りていないことが原因でした。
たとえばWPの表示設定では表示記事数を3としているのに、posts_per_page=1で表示記事数を1としているとします。この場合、投稿総数が3記事以下の場合、WPの表示設定の表示記事数=3が基準となり、そのページがposts_per_page=1としていても、ページネーションは表示されません。
※4記事以上投稿すると、ページネーションは表示されるようになります(しかし、ページに表示される記事数にはposts_per_page=1が効いているので、。2記事目3記事目は記事一覧に表示されません)。
posts_per_page=1を削除すれば問題は解決します。また、posts_per_page=2とすれば、上手くいく方法はありました(こちらの記事→ページネーション(ページャー)が動かない!!wordPressの意外な落とし穴 | XTRA BLOG)。
しかし、posts_per_page=1のままでうまくいく方法は見つけられていません。
【追記】
taxonomy-{ターム名}.phpにおけるページネーションの2ページ目以降が404になるでpre_get_postsを使うべし、という書き込みがあり、【wordpress】pre_get_postsを使ってみませんか?がわかりやすかった。そもそもpre_get_postsを使えばこの悩みからは解放されそう。