ハナモゲラボ / 試行錯誤の実験人生

日々、PCや各種デバイス、楽器等に翻弄されながら電脳の森をさまよう男の日常と様々な実験をさらりと記しております。

WordPressで最新記事一覧を表示させページネーションを行う方法

September 01 2013

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

  • 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);
} ?>

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

| Posted in Wordpress | Comments (2)

2 Comments

  1. りか
    Posted 2016年2月8日 at 3:59 PM |

    固定ページでのページ送りがうまくいかなくて、もう何日も悩んでいましたが、
    こちらの記事を参考にさせて頂いて、うまく動かすことができました。
    ずっと悩んでいたので、涙が出るほど嬉しかったです(笑)

    ありがとうございました^^

  2. Gaku@管理人
    Posted 2016年2月11日 at 9:55 AM |

    >りか様
    はじめまして!閲覧、そして書き込みありがとうございます。
    記事がお役に立てて何よりです。

    プラグイン使えば簡単に解決しそうなものですが、
    この記事を書いた時、多分「使わないでくれたまえ」という指令が出てたのだと思います(笑)

    恐らく今となっては「なぜ使わないのか」と逆に問い詰めそうな気がしますけどw

Post a Comment

※メールアドレス、URLは任意入力です。メールアドレスは入力しても公開されません。

« Oct 2017 November 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30