遷移元の一覧の種類を条件分岐タグ(例えば is_category)で判別したあと、next_post_linkとprevious_post_linkテンプレートタグのパラメーター(in_same_termとtaxonomy)を指定すればよいのでは?
条件分岐タグのかわりに、テーマのテンプレートを使い分けてもよいですね。テンプレート階層を参考にどうぞ。
gblsm様
ご連絡が遅れてしまい誠に申し訳ございません。
ご教示頂いた内容を試してみたいと思います。
不明点などあればまたご質問するかと思いますが引き続きよろしくお願いいたします。
wp_cast1eさん、違うトピック https://ja.forums.wordpress.org/topic/152310?replies=3 へコメントをつけておられましたが、こちらで続けたいと思います。
恐縮ですが、具体的な修正版の記述をお教え願えませんでしょうか?
すみませんが、修正よりも「追加する行数がとても多く」なりそうなので、アイデアを示すだけにとどめます。無理に難しくしているつもりはなく、wp_cast1eさんがやりたいことをやるには例えばこういう中身になるんだとお考えください。
- どのアーカイブページから遷移したかを記事個別ページ(投稿ページ)へ伝えるために、カスタムクエリ変数 arckey と arcval を新たに定義します(query_vars フィルター)。
- 例えばカテゴリー c1 のアーカイブでは、投稿ページのパーマリンクの後ろに
/?arckey=cat&arcval=c1
をつけます(post_link フィルター)。タグ t1 なら /?arckey=tag&arcval=t1
を、2015年7月のアーカイブなら /?arckey=month&arcval=201507
です。
- 遷移先の投稿ページでは、最初にカスタムクエリ変数を取得して(get_query_var 関数)どのアーカイブから来たかを確かめます。カテゴリーから来た場合(arckey=’cat’)、前後の投稿へのリンクを表示するテンプレートタグ(※ previous_post_linkとnext_post_link)に「同じカテゴリーの前後の投稿」というパラメータを増やします(in_same_term=true と taxonomy=’category’)。
- タグから来た場合(arckey=’tag’)、テンプレートタグ(※)に「同じタグの前後の投稿」というパラメータを増やします(in_same_term=true と taxonomy=’tag’)。
- 月のアーカイブから来た場合(arckey=’month’)は、テンプレートタグ(※)にパラメータを増やさず、ひとつ古いかひとつ新しい投稿へのリンクにします。
さらに、これだけだとうまくいかないときがあるので、いくつか工夫が必要です。例えば
- 「カテゴリーが複数ついた投稿」の場合、アーカイブページで見ていたカテゴリー c1 のまま前や次に行きたいわけですが、テンプレートタグ(※)は複数あるカテゴリーのどれをたどって前や次に行くか指定できません。これを c1 に限るのに工夫がいります。
- 月のアーカイブから来た場合、次の投稿が違う月になってしまうときがあります。そういうときに次の投稿へ遷移するリンクを表示しないためにも工夫がいります。
説明が下手で申し訳ありません。もっとシンプルな方法をご存知のかたがコメントしてくださるとよいのですが。