ちょいとつまづいたんでメモがてら調べた事をまとめ。

  • archive.phpをテンプレートに固定ページを作成。
  • 固定ページには「日付」と「記事タイトル(リンク付)」を20件表示。
  • そしてWP-Naviなどのプラグインを使わずにページネーションを行う。

というのを実装すべく色々と調べながらせっせと作ってました。
参考にしたのは以下のサイト。

【WordPress】全記事リストを投稿日と一緒に出力する
http://www.ep-melody.com/2011/11/wp-allentry_output/

WordPress:プラグインを使わずにページネーションを実装する方法
http://www.nxworld.net/wordpress/wp-no-plugin-pagination.html

この2つでやりたい事は完全にできるだろうと思ってたんですけども
このまま使うと以下の問題が発生しよりました。

  • ページ送りをした際のURL(page/2/)にアクセスしても表示は変わらず。
  • ページネーションの設置タグ部分でエラーを吐く。

まずはページ送り部分の問題を解決すべく色々と調べる。

そしてこの記事を発見。

諦めないで…!WordPressでページ送りがうまく行かない時の3つの対処法+究極奥義
http://webimemo.com/wordpress/1813

ここに書かれている「自分のページ番号がわからなくなっちゃってるのかも?」
今回の症状に当てはまるのではないのかと推測。
なので「【WordPress】全記事リストを投稿日と一緒に出力する」の
コードを以下の様に自分なりにarchive.phpに書いてみました。

<dl id="archive">
<?php query_posts('showposts=20&paged='.$paged); ?>
<?php if (have_posts()):while(have_posts()):the_post(); ?>
<dt><?php the_time(__('Y/m/d')); ?> </dt>
<dd><a href="<?php the_permalink(); ?>"><?php the_title_attribute(); ?></a></dd>
<?php endwhile; endif; ?>
</dl>

リスト内のループを日付と記事タイトルの定義リストに変更、
そしてphp_the_timeの書式もマルチランゲージ対応の為、日付書式を __() で括った。

これで直接/page/2などにアクセスしてもちゃんと次ページが表示できました。
ループ内に表示させる記事数はshowpost=20の数字で調整できます。

さて、次はページネーションが原因で発生したエラーの修正。
エラーは「Notice: Undefined variable: additional_loop」と
「Notice:Trying to get property of non-object」の2つが発生しているので
なんぞ変数関係がマズイんだろうな、と原因を探る。

紹介元の海外サイトを見てみると以下の記述がありました。

Finally, call the function in your theme (typically near the bottom of index.php or loop.php where it says “Older posts” or “Older entries”):

うーむ、archive.phpに書いてるからエラー出てるわけでもなさそうだけども
「定義されてない変数を参照している」って事なんで
functions.phpに足す側に全く定義されてない$additional_loopが原因なんだろうな、と
総ページ数の取得をwp_queryに変更して、設置タグを以下に改変。

<?php if (function_exists("pagination")) {
    pagination($wp_query->max_num_pages);
} ?>

これでエラーも消えて無事に動くようになりました。