サポート » 使い方全般 » シングルページでのページャーを特定の投稿者のみの表示にしたい。

  • Hiroyuki.I

    (@hiroyukii)


    投稿者が複数いるサイトを運営しています。

    投稿者別のアーカイブページから「続きを読む」などのリンクで、個別記事ページへ移動したとします。

    その個別記事ページでの「次のページ」・「前のページ」のリンクを、そのページで表示している投稿者のみに絞りたいのですが、可能でしょうか。

    previous_post_link()/next_post_linkでは、カテゴリーで絞ることはできても、投稿者で絞ることができないようなので、他に方法がないか探しています。

    よろしくお願いいたします。

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • gblsm

    (@gblsm)

    previous_post_link() と next_post_link() の内部で、前後の投稿を取得するときに get_adjacent_post() が使われています。その中に投稿の検索条件を変更できるフィルターがあるので、投稿者を限定する自作関数をフックすればよいでしょう。

    get_{$adjacent}_post_where | Hook | WordPress Developer Resources

    add_filter( 'get_next_post_where', 'my_get_next_post_where', 10, 5 );
    function my_get_next_post_where( $where, $in_same_term, $excluded_terms, $taxonomy, $post ) {
    	if ( ! is_admin() && is_single() ) {
    		$where .= " AND p.post_author = " . $post->post_author;
    	}
    	return $where;
    }
    
    add_filter( 'get_previous_post_where', 'my_get_previous_post_where', 10, 5 );
    function my_get_previous_post_where( $where, $in_same_term, $excluded_terms, $taxonomy, $post ) {
    	if ( ! is_admin() && is_single() ) {
    		$where .= " AND p.post_author = " . $post->post_author;
    	}
    	return $where;
    }
    トピック投稿者 Hiroyuki.I

    (@hiroyukii)

    gblsm様

    返信ありがとうございます!
    まだ試してみませんが、取り急ぎお礼申し上げます。
    関数に不慣れなので時間がかかるかもしれませんが、
    結果は後ほどご報告いたします。

    トピック投稿者 Hiroyuki.I

    (@hiroyukii)

    gblsm様

    previous_post_link()/next_post_linkの直前にご指示いただいた関数を挿入することで、
    「次のページ」・「前のページ」のリンクを、そのページで表示している投稿者のみに絞ることができました。ありがとうございます。

    ただ、ここで次の問題に気付きました。
    投稿者別アーカイブページからと、「Blog」カテゴリーのアーカイブページ(投稿者複数)から、それぞれ個別記事ページへ移動した場合、previous_post_link()/next_post_linkの仕様を変えたいという点です。

    1)特定の投稿者だけの記事を見たい
    投稿者別アーカイブページ

    個別記事ページ(single.php)
    ☆previous_post_link()/next_post_linkでは、そのページで表示している投稿者のみに絞る
    ※今回教えていただいた関数で絞り込みは可能

    2)
    カテゴリーが「Blog」のアーカイブページ(複数の投稿者による記事抜粋が並ぶ)

    個別記事ページ(single.php)
    ☆previous_post_link()/next_post_linkでは、複数の投稿者による個別記事へのリンク
    ※こちらは通常の前後ページへのリンク(絞り込みなし)となります

    現在、single.phpひとつでまかなっているため、1)と2)のどちらかを優先するしかありません。

    single.php内で、リンク元のページによってprevious_post_link()/next_post_linkの仕様を変えたいのですが、これも可能でしょうか。

    もしも、single-author.php的なものがあればいいのですが。

    説明が下手かもしれませんが、よろしくお願いいたします。

    gblsm

    (@gblsm)

    Hiroyuki.I さん、私は解決方法がわからないのですが、他にアドバイスくださる方がいるかもしれません。このトピックは解決済みにして、新しくトピックを立てる(このトピックで途中まで解決していることを書いておきましょう)方が良いと思います。

    トピック投稿者 Hiroyuki.I

    (@hiroyukii)

    gblsm様

    ありがとうございます。
    こちらでも少し考えてみてから、
    改めてトピックを立てることにします。

    今後とも、よろしくお願いいたします。

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • トピック「シングルページでのページャーを特定の投稿者のみの表示にしたい。」には新たに返信することはできません。