single.phpの追加した部分(前のトピックで追加した部分含む)の記述は、一旦消してください。
その上で、投稿者で絞り込むための記述を functions.php に追記します。
add_filter( 'get_next_post_where', 'my_get_post_where', 10, 5 );
add_filter( 'get_previous_post_where', 'my_get_post_where', 10, 5 );
function my_get_post_where( $where, $in_same_term, $excluded_terms, $taxonomy, $post ) {
if ( ! is_admin() && is_single() && isset( $_GET['from'] ) && 'author' == $_GET['from'] ) {
$where .= " AND p.post_author = " . $post->post_author;
}
return $where;
}
※ 同じ記述があるので、簡略化しました。
この状態で、個別投稿ページのURLに ?from=author を付けると、前後ページへのリンクが投稿者で絞り込まれるはずです。
つまり、投稿者アーカイブから個別投稿ページのリンク、および from=author が付いてアクセスされた際の前後リンクに from=author を追加する処理が必要になります。
functions.php に、さらに以下を追記してみてください。
function add_from_query_arg( $permalink ) {
$permalink = add_query_arg( array( 'from' => 'author' ), $permalink );
return $permalink;
}
add_filter( 'post_link', 'add_from_query_arg' );
この追記によって、個別投稿ページのリンクに from=author が付加されるようになります。
ただし、個別投稿ページの全てのリンクについてしまうため、ブログのアーカイブページからの前後リンクは、複数の投稿者またがったものという条件に反してしまいます。
これを解消するために、投稿者のアーカイブからのリンク、および、from=author がある場合の前後リンクのみ from=author がつくようにします。
functions.php の
add_filter( 'post_link', 'add_from_query_arg' );
を削除し、author-[name].php のループの直前に
<?php add_filter( 'post_link', 'add_from_query_arg' ); ?>
ループ後に
<?php remove_filter( 'post_link', 'add_from_query_arg' ); ?>
を追加します。これによって、author-[name].php のループ内でのみ、パーマリンクに from=author がつくようになります。
また、singie.php の previous_post_link / next_post_link の直前に
<?php if ( isset( $_GET['from'] ) && 'author' == $_GET['from'] ) {
add_filter( 'post_link', 'add_from_query_arg' );
} ?>
直後に
<?php remove_filter( 'post_link', 'add_from_query_arg' ); ?>
を追記します。これによって、from=author がついてきた場合の前後リンクにも from=author がつくようになり、このリンクから遷移した個別投稿ページの前後リンクも投稿者での絞込が効くようになります。