MENU

【2025】WordPressの前後記事取得「get_adjacent_post」がうまくいかなかった備忘録

WordPressではsingle.phpなどで記事ページを展開して、ページの最後尾の方に「前後記事のリンク」をつけることはよくあると思います。

今回、その取得処理で「コードは間違いなくあってるのになぜかリンクが生成されない」という状態になってしまい、その解決に若干時間をかかってしまったので見直し方法をまとめます。

TOC

該当のコード

ファイル名:single-xxx.php (カスタム投稿記事詳細ページ)

<?php
$prev_post = get_adjacent_post( false, '', false );
$next_post = get_adjacent_post( false, '', true );
?>
<div class="prev-next">

    <?php if ( $prev_post ): ?>
        <a href="/en/</?php echo get_permalink( $prev_post->ID ); ?>" rel="prev">前の記事</a>
    <?php endif; ?>

    <?php if ( $next_post ): ?>
        <a href="/en/</?php echo get_permalink( $next_post->ID ); ?>" rel="next">次の記事</a>
    <?php endif; ?>

    <a class="tolist" href="/en/xxxx_archive/">投稿一覧</a>
</div>

こんな感じでシンプルな前後記事の取得リンクを生成していました。

発生した問題

  • 前後記事のリンクが生成されない(if分岐内に入っていない)
  • var_dumpでそれぞれの変数を取得すると空文字(””)が出力されている

結論

発生した問題の結論から話すと、

作成した記事の公開状態が[非公開]の場合、get_adjacent_postでは取得出来ない

という初歩的な部分で躓いていました。

今回本番環境へ直接ファイルを書き換えて実装するというとんでも環境での作業だったので、
作成した記事などを一般の人に見られないように[非公開]設定で作成して動作確認していたのですが、
それが裏目に出てリンクが生成されなかったようです。

作成したテスト記事を[公開]状態にしたらちゃんとリンクは生成されるようになりました。

Summary

今回はWordPressで「get_adjacent_post」を使用した前後記事の取得する際のちょっとした仕様について備忘録がてらまとめました。

みなさんは本番環境で直接機能追加をするなんて環境で作業することがないことを祈りますが、
もしそのような環境で前後記事リンクを追加する場合は、記事の公開設定を確かめながら動作確認していきましょう(笑)

Let's share this post !

Author of this article

大阪在住
なんだかんだでIT / WEB開発10年経過

開発モットーは「誰が読んでもわかる枯れた構文で書くこと」

Comments

To comment

TOC