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;
}
gblsm様
返信ありがとうございます!
まだ試してみませんが、取り急ぎお礼申し上げます。
関数に不慣れなので時間がかかるかもしれませんが、
結果は後ほどご報告いたします。
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的なものがあればいいのですが。
説明が下手かもしれませんが、よろしくお願いいたします。
Hiroyuki.I さん、私は解決方法がわからないのですが、他にアドバイスくださる方がいるかもしれません。このトピックは解決済みにして、新しくトピックを立てる(このトピックで途中まで解決していることを書いておきましょう)方が良いと思います。
gblsm様
ありがとうございます。
こちらでも少し考えてみてから、
改めてトピックを立てることにします。
今後とも、よろしくお願いいたします。