• 記事個別ページで前後の記事へのリンクを表示したいです。

    現在記事一覧の種類としては、アーカイブ(時系列)、カテゴリ、タグの3種類があります。

    仕様として、遷移元の一覧の種類に合わせたルールのリンクを出したいと考えています。
    ・アーカイブ一覧から遷移した場合、時系列での前後の記事を表示
    ・カテゴリ一覧から遷移した場合、同一カテゴリの前後の記事を表示
    ・タグ一覧から遷移した場合、同一タグの前後の記事を表示

    何卒ご教授のほどよろしくお願いいたします。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • 遷移元の一覧の種類を条件分岐タグ(例えば is_category)で判別したあと、next_post_linkとprevious_post_linkテンプレートタグのパラメーター(in_same_termとtaxonomy)を指定すればよいのでは?

    条件分岐タグのかわりに、テーマのテンプレートを使い分けてもよいですね。テンプレート階層を参考にどうぞ。

    トピック投稿者 wp_cast1e

    (@wp_cast1e)

    gblsm様

    ご連絡が遅れてしまい誠に申し訳ございません。
    ご教示頂いた内容を試してみたいと思います。
    不明点などあればまたご質問するかと思いますが引き続きよろしくお願いいたします。

    wp_cast1eさん、違うトピック https://ja.forums.wordpress.org/topic/152310?replies=3 へコメントをつけておられましたが、こちらで続けたいと思います。

    恐縮ですが、具体的な修正版の記述をお教え願えませんでしょうか?

    すみませんが、修正よりも「追加する行数がとても多く」なりそうなので、アイデアを示すだけにとどめます。無理に難しくしているつもりはなく、wp_cast1eさんがやりたいことをやるには例えばこういう中身になるんだとお考えください。

    1. どのアーカイブページから遷移したかを記事個別ページ(投稿ページ)へ伝えるために、カスタムクエリ変数 arckey と arcval を新たに定義します(query_vars フィルター)。
    2. 例えばカテゴリー c1 のアーカイブでは、投稿ページのパーマリンクの後ろに /?arckey=cat&arcval=c1 をつけます(post_link フィルター)。タグ t1 なら /?arckey=tag&arcval=t1 を、2015年7月のアーカイブなら /?arckey=month&arcval=201507 です。
    3. 遷移先の投稿ページでは、最初にカスタムクエリ変数を取得して(get_query_var 関数)どのアーカイブから来たかを確かめます。カテゴリーから来た場合(arckey=’cat’)、前後の投稿へのリンクを表示するテンプレートタグ(※ previous_post_linkとnext_post_link)に「同じカテゴリーの前後の投稿」というパラメータを増やします(in_same_term=true と taxonomy=’category’)。
    4. タグから来た場合(arckey=’tag’)、テンプレートタグ(※)に「同じタグの前後の投稿」というパラメータを増やします(in_same_term=true と taxonomy=’tag’)。
    5. 月のアーカイブから来た場合(arckey=’month’)は、テンプレートタグ(※)にパラメータを増やさず、ひとつ古いかひとつ新しい投稿へのリンクにします。

    さらに、これだけだとうまくいかないときがあるので、いくつか工夫が必要です。例えば

    • 「カテゴリーが複数ついた投稿」の場合、アーカイブページで見ていたカテゴリー c1 のまま前や次に行きたいわけですが、テンプレートタグ(※)は複数あるカテゴリーのどれをたどって前や次に行くか指定できません。これを c1 に限るのに工夫がいります。
    • 月のアーカイブから来た場合、次の投稿が違う月になってしまうときがあります。そういうときに次の投稿へ遷移するリンクを表示しないためにも工夫がいります。

    説明が下手で申し訳ありません。もっとシンプルな方法をご存知のかたがコメントしてくださるとよいのですが。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「記事個別ページで遷移元一覧ルールでの前後記事リンクを表示したい」には新たに返信することはできません。