ウェブログ

[WordPress]固定ページで次/前の投稿を取得して表示する


備忘録として。WordPressは次の投稿記事や前の投稿記事は簡単に取得できるのですがひとつ次の固定ページひとつ前の固定ページを簡単に習得するテンプレートタグがありません。

今回、「同じ親固定ページに属する前後のページを表示」する必要があり、プラグインを導入する方法や直接MySQLを書く方法を探したのですがもっとスマートに書く方法があるのではとコードを書いてみたところ動いたので備忘録として書いておきます。間違っていたらお知らせください。

簡単な解説

get_adjacent_post()は前後の記事情報を取得するテンプレートタグです。
3つ目の引数にtrueを設定すると前のページ、falseだと次のページを取得します。
固定ページ上で使っていれば前後の固定ページ情報を取得します。ただこれだと同じ親に属するというカテゴライズができません。
そこで現在のページをget_post(注:get_postsではない!)を使って取得します。これで現在の情報が配列で取得できるのですが、その中にpost_parentという親のページIDを返す情報があります。
現在のページと前|後のページの親が一緒かどうかを判別し、同じだったら(=親IDが同じに属する記事だったら)実行、という形で振り分けます。

同じ親に属さなくてよければ「$thepost = get_post();」関係が不要ですね。

参考リンク

関数リファレンス/get adjacent post – WordPress Codex 日本語版
関数リファレンス/get post – WordPress Codex 日本語版

この記事を書いた人

池田祐太郎

池田祐太郎

WordPress好きの池田です。Webの仕事の前はライブハウスでブッキングや音響をしてました。PHP, JavaScriptを自由に操りたいと思いつつ、つい訪れたサイトのソースコードを見てしまいます。


CONTACTお問い合わせ / お見積もり