1. トップ
  2. ブログ
  3. WordPress
  4. WordPressで固定ページの順序通りに前後へのリンクを出力する方法

WordPressで固定ページの順序通りに前後へのリンクを出力する方法

ホームページの図です。記事の終わりに前後ページへのリンクを表示しています。

実際にやってみてできたので、その方法を紹介します。

具体例

例えば、階層ありのカスタム投稿タイプ(固定ページ型)『sukinamono』があるとします。その構成は以下のようになっています。括弧内はページ属性を表します。(親の順序,投稿の順序)

(親なし,0)動物、(0,1)しまうま、(0,2)うさぎ、(0,3)トラ

(親なし、4)食べもの、(4,5)カツ丼、(4,6)天丼、(4,7)親子丼

(親なし,8)おでかけ、(8,9)海、(9,10)山

現在、(4,7)親子丼のページを表示しているとき、前のページへのリンクは(4,6)天丼、次のページへのリンクは(親なし,8)おでかけを出力するようにします。

手順

その1

現在見ているページの投稿を表示しているWordPressループ内で、get_the_ID関数を使って、その投稿のIDを取得します。新しく変数を定義し、取得したIDをその変数に代入します(以下、この変数を変数Aと呼びます)。

その2

WordPressループが終わったあと、新しいWordPressクエリを実行します。このときの抽出条件は、全件出力、順序で昇順、ポストタイプはpage、もしくは定義したカスタム投稿タイプの名前、フィールドは投稿IDのみです。

その3

新しいWordPressループに入る前に、新しく配列を定義します(以下、配列Bと呼びます)。配列B〔0〕に0(ゼロ)を代入します。

その4

WordPressループ内で投稿IDを取得し、一件ずつ配列Bに代入していきます。

その5

WordPressループを抜けたら、配列Bに0(ゼロ)を代入します。

その6

array_search関数を使い、現在の投稿IDが配列Bの何番目にあるかを検索し、そのキーを取得します。新しく変数を定義し、取得したキーをその変数に代入します(以下、この変数を変数Cと呼びます。)

その7

配列B〔変数C-1〕を参照すれば、前のページの投稿IDが取得できます。配列B〔変数C+1〕を参照すれば、次のページの投稿IDが取得できます。後はその投稿IDを使ってリンクを出力します。配列Bの値を参照して0(ゼロ)だった場合は現在の投稿が最初もしくは最後なので、IF文などを使ってリンクを出力しないように制御すればよいです。