Home > | >

WordPressページで「前へ・次へ」(Prev/Next)リンクを実現する

2009年04月27日 (月) [Read Comment2個のコメント] [2,829 views] tweebuzz icon Hatena icon
この記事を読むのに必要な時間の目安: 7分ぐらい →→ あとで読む

WordPressページで「前へ・次へ」(Prev/Next)のナビゲーションリンクを表示するプラグインを見つけたので、使い方も含めてメモっておきます。

そもそもWordPressの「投稿(post)」では、get_next_post関数やget_previous_post関数が用意されていて、簡単に「前へ・次へ」を表示できるのよ。だけど「ページ」に関しては、ナゼか前後を取得する方法が用意されていません。

でも「前へ・次へ」のナビゲーションリンクを用意してあげないと、複数ページを続け読みするのはとっても不便。そんなわけで頑張って前後へのリンクを自動生成する方法を模索したワケです。

「前へ・次へ」の取得

「前へ・次へ」のリンク取得は、earthman100氏作「Next-Previous Page」(Version:0.6)で実現できました。このプラグインは『オノケンノート ≫ 同じ親ページを持つ子ページ間でnext-page等のナビゲーションを表示するプラグイン[WORDPRESS]』経由の『WordPress : Support ≫ Prev/Next Page plugin? (wordpress Pages, not Posts)』で見つけました。

せっかくのGPLライセンスだし、ウチのサイトにも置いときます。

ダウンロード:NextPreviousPage.zip [1.47KB]

zipを展開して出てきたNextPreviousPage.phpをプラグインフォルダに入れ、プラグインを有効化することにより「next_page関数」と「previous_page関数」が使えるようになります。

ただし、おいらはプラグインとして使っておらず、該当関数をfunctions.phpに書き写して使ってます。深い理由はないんだけど、デザインに係わる機能なのでテンプレート側に記述した方が良いかな~とかそんな感じ。普通はプラグインで良いと思うよ。

Next-Previous Pageプラグインの使い方

PHP:
  1. /*使い方*/
  2. <?php next_page('orderby', 'link', 'before', 'after', 'title_attr', 'parent_id'); ?>
  3. <?php previous_page('orderby', 'link', 'before', 'after', 'title_attr', 'parent_id'); ?>
  4.  
  5. /*初期値*/
  6. $orderby = 'post_date', $link='Previous/Next Page: %',
  7. $before='', $after='', $title_attr='Previous/Next Page: %',
  8. $parent_id = 0
  9.  
  10. /*実際の使用例*/
  11. <div id="prev_next_links">
  12. <?php
  13. $parentid = $post->post_parent;
  14. previous_page('menu_order', '&lsaquo;&lsaquo; %', '<span class="prev_link">', '</span>', '%', $parentid);
  15. next_page('menu_order', '% &rsaquo;&rsaquo;', '<span class="next_link">', '</span>', '%', $parentid);
  16. ?>
  17. </div>

簡単なオプション解説。

  • orderby:ソート方法。‘post_date’ か ‘menu_order’ で日付順かメニュー順(ページ順)を選択。
  • link:リンク用文字列。%はページタイトルを表す。
  • before:リンクの前に付ける文字列。
  • after:リンクの後に付ける文字列。
  • title_attr:リンクタイトル。マウスオーバー時のツールチップ表示文字列だと思いねぇ。
  • parent_id:探索する親ページのID。「隣の隣」とか「親の親」を取得するときに活用するんだと思う。

「前へ・次へ」表示で一工夫

前述のプラグインを使用することにより、「前へ・次へ」が表示できようになりました。しかしウチのブログではulリストのli要素に「前へ・次へ」を割当てており、前後共にリンクのないページでli要素が消滅、HTML validにならない問題が発生しました。

これを解決するため、以下のようなコードを記述しました。

PHP:
  1. <?php
  2.     $parentid = $post->post_parent;
  3.     $children = wp_list_pages('title_li=&child_of='.$post->ID.'&echo=0');
  4.     if ($parentid | $children) {  ?>
  5.         <ul>
  6.         <?php
  7.             previous_page(~hoge~);
  8.             next_page(~fuge~);
  9.         ?>
  10.         </ul>
  11. <?php } ; ?>

簡単に説明すると親IDか、子のページリスト、いずれかが取得できた場合にのみUL,LIのリスト表示を行います。これにより階層構造を持つページ群のみ、「前へ・次へ」が表示されるはずです。

実際の表示例

実際の表示例は『NTSCについて - Hinemosu』や『カタンの戦略 - Hinemosu』をご覧ください。

ページ右上、もしくは本文下にページナビゲーションを示すリンクが生成されていることが確認できると思います。


参考リンク:WordPress : Support ≫ Prev/Next Page plugin? (wordpress Pages, not Posts)
参考リンク:オノケンノート ≫ 同じ親ページを持つ子ページ間でnext-page等のナビゲーションを表示するプラグイン[WORDPRESS]
Related Posts with Thumbnails

現在のコメント: 2RSS icon


  1. n
    2010/07/17(土) 8:47
    JAPAN Windows Google Chrome

    「Next-Previous Page」(Version:0.6) をプラグインフォルダに入れて有効化もさせたのですが、
    ブログの表示は何一つ変わりません。 前へ、次へ に相当するリンクも何も現れません。
    これだけの情報では何もしようはないとは思いますが、何か分りますか??
    現在のワードプレスのヴァージョンには対応してないということなのでしょうかね??
    何か名案はないでしょうか??  尚、私は「functions.phpに書き写して」等のレベルのことは全く未経験でわかりません。


    • hide10
      2010/07/17(土) 17:31
      JAPAN Windows Google Chrome

      有効化させただけだと表示は変化しません。
      「Next-Previous Pageプラグインの使い方」の項に詳細がありますが、
      このプラグインを使うには、テンプレートファイルを編集し、「前へ」「次へ」を表示させたい場所に、PHPのコードを書かないと動きません。

コメントをどうぞ







メールアドレスが未記入だったり、一度もコメントしたことのないメールアドレスの場合、管理者に承認されるまでコメントが表示されません。
アバターをオリジナル画像に変更したい場合は、Gravatarサービスに登録してください。

現在のトラックバック数 : 1

trackback from KOBAYASHI Hideto 09-04-27 (月) 17:37

WordPressページで「前へ・次へ」(Prev/Next)のナビゲーションリンクを表示するプラグインを見つけたので、使い方も含めてメモっておきます。
そもそもWordPressの「投稿(post)」で [...] http://tinyurl.com/dn4za7

トラックバックアドレス

Trackback URL for this entry

Home > | > WordPressページで「前へ・次へ」(Prev/Next)リンクを実現する

このページの先頭へ戻る