• 解決済 test 1234

    (@lifestyledesign7777)


    previous_post_link(),next_post_link()で第5引数でタクソノミーは指定できますが、タームを指定すると表示されません。

    それで検索したら、
    「Ambrosite Next/Previous Post Link Plus」のプラグインで同ターム内も再現できると書かれていたのですが、ver4.2.2では動きませんでした。
    <?php previous_post_link_plus( array(‘in_same_tax’ => true) ); ?>
    <?php next_post_link_plus( array( ‘in_same_tax’ => true) ); ?>

    現在、詰んでいる状態です。
    どなたか再現できる方法を知らないでしょうか?

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • previous_post_link(), next_post_link() の第3引数にtrue、第5引数にタクソノミースラッグを指定すると、現在の投稿についているターム(第5引数のタクソノミーのターム)と同じタームがついた前後の投稿へのリンクが表示される筈ですが、そういう使い方とは違うんでしょうか。

    なお、同じタクソノミーの複数のタームが投稿についている場合、どのタームを対象にするかは選べないそうです。ただし、リンク先の投稿を取得する関数get_adjacent_postのフィルター get_previous_post_where, get_next_post_where を使えばできるかもしれません。

    トピック投稿者 test 1234

    (@lifestyledesign7777)

    gblsmさん
    さっそくの回答ありがとうございます。

    タクソノミーA 全て(親),タームA,タームB,タームC,タームD(子4個) 5個
    タクソノミーB タームA,タームB,タームC,タームD,タームE,タームF 6個 親子なし

    カスタム投稿の1記事あたり
    タクソノミーAには全て+ABCDのどれか1個に属します
    タクソノミーBには1個~6個属します。

    <?php previous_post_link(‘%link’, ‘前の記事へ’, TRUE,”,タクソノミーA); ?>
    <?php next_post_link(‘%link’, ‘次の記事へ’, TRUE,”,タクソノミーA); ?>
    上記のように記述すると、タクソノミーA間のページ送りになってしまいます。

    構成がちょっと特殊なので、後者の可能性が高いですね。少々調べてみます。

    アイデアだけなんですが… フィルター get_{$adjacent}_post_where にフックした関数は、第2引数として $in_same_term(previous_post_link, next_post_link の第3引数)をそのまま受け取ります。$in_same_term は真偽値を渡す仕様で、ここにタームのID(ゼロではない)を渡しても true と判断してくれるので正常に動きます。しかし true の代わりにタームIDを渡すと、フックした関数がタームIDを受け取れるので、それを投稿取得クエリのWHERE句へANDで追加する(そのタームに限定する)ことができそうです。

    トピック投稿者 test 1234

    (@lifestyledesign7777)

    my_previous_post_join
    my_next_post_join
    my_previous_post_where
    my_next_post_where

    この4つのフィルターを組み合わせて解決できました!
    ありがとうございました♪

    トピック投稿者 test 1234

    (@lifestyledesign7777)

    get_previous_post_join
    get_next_post_join
    get_previous_post_where
    get_next_post_where

    あ!こっちでした

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • トピック「カスタム投稿のシングルページで同ターム内で前の記事、次の記事へ」には新たに返信することはできません。