web-dev-qa-db-ja.com

Get_next_post_link()またはget_previous_post_link()が必要なリンクを返さないのはなぜですか?

Wordpress、Divにあります。それは私には簡単な作業に思えましたが、どういうわけか私はコーディングとテストに何時間も費やして正しい結果を得ることができなかったのです。現在私は投稿があるウェブサイトに取り組んでいます、そして私はユーザーがそれらを指している単純なリンクで隣接する投稿にジャンプする可能性を与えるつもりです。私はそれらをfunctions.phpに入れ、それからsingle.phpに入れようとしましたが、同じ結果になりました…何もしません。 Wordpressのdebug.logで確認したところ、関数がまったく値を返さないことがわかりました。 debug.logについて言及したことに注意してください。出力をあそこに転送したからです。

add_filter( 'the_content', 'post_navigation', 10, 2 );
function post_navigation($content) {
    $post = get_post();
    $post_type = get_post_type( $post );

    if ( $post_type == 'post' ) {
        $next_p = get_previous_posts_link();
        $content = $content . $next_p;

        return $content;
    } else {
        return $content;    
    }

}

それは正しいフォーマットされた出力を持っていません、しかし最初に私はただ結果を得たいと思いました。注:debug.logは、the_contentフックが2回表示された簡単な投稿で2回呼び出されたことを示しています。

You are being timed-out out due to inactivity. Please choose to stay signed in or to logoff.</p>
<p>Otherwise, you will be logged off automatically.</p>

どんな助けでも高く評価されるでしょう!

3
Geeocode

警告編集:Mark Kaplunの答えは非常に良い点をもたらします - これはあなたのコンテンツを予期せぬ方法で修正するでしょう。たとえば、WordPress APIからこの投稿コンテンツを読み取る別のアプリケーションがあるとします。そのコンテンツにもこれらのリンクが含まれているため、おそらく必要なものではありません。この情報をコンテンツ自体に追加するのではなく、実際にこれらのメソッドをテーマテンプレートに適用する必要があります。フロントエンドで投稿を表示しているときにのみこの操作を行うようにするために、global $pagenow変数に対するチェックなどの健全性チェックを使用することもできます。

間違った方法を使っているようです。 WordPressは時々ちょっとトリッキーです、そしてこの場合あなたはget_previous_post_linkの代わりにget_previous_posts_linkを使いたいと思います(:違いはあなたが呼んでいるメソッドで、 posts は複数形です - あなたが望む方法では、 post は単数形です)。

だからこれらに打撃を与える

EDIT:これはあなたのコードに基づいて更新された例です。

add_filter( 'the_content', 'post_navigation', 10, 2 );

function post_navigation($content) {
    $post = get_post();

    if ( 'post' === $post->post_type ) {
        $next_p  = get_next_post_link();
        $prev_p  = get_previous_post_link();
        $content = "{$content}<br/>{$prev_p} | {$next_p}";
    }

    return $content;    
}
4
phatskat

しないでください。 the_contentフィルタは自動的にコンテンツを修正しますが、あなたがやろうとしているのはコンテンツではなく装飾を追加することです。フィルタを正確にどこに設定したか、そして意図した使用後にフィルタをどの程度除去したかによって、非常に予想外の方法で怪我をすることになります。 (たとえば、グローバルスコープに配置すると、抜粋してリンクが表示される場合があります)

装飾を追加して表示されているコンテンツを操作する必要がある場合は、他の場所ではなくテーマの中で行います。

3
Mark Kaplun