サポート » 使い方全般 » カスタム投稿シングルページ内でタクソノミーごとのページ送りがしたい

  • いつもお世話になります。
    カスタム投稿内のページ送りでつまずいていて、やっとできた!と思ったらまだ足りませんでした。
    ご教授頂けないでしょうか。。

    やりたいこととしては、
    カスタム投稿AAAの中にタクソノミー、xxx、yyy、zzzがいます。
    xxxに属する記事のシングルページではxxxのみでのページ送り。
    yyyに属する記事のシングルページではxxxのみでのページ送り。。
    ということがしたいです。

    いろいろ調べまして下記コード↓

    <?php previous_post_link('%link','前の記事',TRUE,'','ここにタクソノミー名'); ?>
    <?php next_post_link('%link','次の記事',TRUE,'','ここにタクソノミー名'); ?>

    で、第5引数にタクソノミー名を入れれば行けることは分かったのですが、「ここにタクソノミー名」部分を、現在の記事のタクソノミーにしたいので、動的に出力する必要があるのですがその方法が分からず詰んでしまいました。。

    フォーラムの過去も調べましたがいまいち掴めず質問させて頂きました。
    拙い文章で申し訳ございませんが、よろしくお願いいたします。

8件の返信を表示中 - 1 - 8件目 (全8件中)
  • 失礼とは思いますが、「タクソノミー」と「ターム」を混同していませんか。
    xxx, yyy, zzz はタームですよね。

    まず、確認ですがxxx,yyy,zzzはそれぞれタクソノミーですか?タームですか?

    例えばwordpressをインストールしたデフォルトの状態では
    categoryがタクソノミー
    未分類がターム
    というような感じになっています。

    トピック投稿者 sasasa24

    (@sasasa24)

    gblsm様、jdbb様
    大変失礼しました…パニックになっておりました。
    ご指摘の通り、「タクソノミー」ではなく「ターム」です。申し訳ございません。

    タクソノミーとタームの区別がはっきりしてよかったです。解決したでしょうか?

    トピック投稿者 sasasa24

    (@sasasa24)

    gblsm様

    はい、ありがとうございました。
    ですが、まだ分からないのですみません…教えて頂きたいです。
    現在の記事のタームを取得するにはどうすれば良いのでしょうか?
    また、最初に書いたコードで実現可能なのでしょうか?
    よろしくお願いいたします。

    カスタム投稿タイプ AAA にカスタムタクソノミー BBB(タクソノミーのスラッグが BBB)のタームがつくように AAA と BBB を設定してあるとします。この場合は次のように書きます。

    <?php previous_post_link( '%link', '前の記事', TRUE, '', 'BBB' ); ?>
    <?php next_post_link( '%link', '次の記事', TRUE, '', 'BBB' ); ?>

    AAA の投稿が P1,P2,P3,P4 の4つ(新しい順)あって、P1とP3にタームxxx(BBBのターム)、P2にタームyyy、P4にタームzzzがつけてあるとします。この場合、現在の投稿が P1 なら上記の previous_post_link は P3 を指します。現在の投稿が P3 なら上記の next_post_link は P1 を指します。このように「指定したタクソノミーの中で同じタームがついている、次(前)の投稿」へのリンクを表示してくれます。

    トピック投稿者 sasasa24

    (@sasasa24)

    gblsm様

    ありがとうございます。
    タームを動的に取得したいのですが、そこで躓いております…。
    投稿タイプがworksで、タクソノミーはcategoryで、その中にタームが複数あり、今後も増える可能性があるので動的にしておきたいのですが…。
    以下記述してみたコードです。

    <?php $terms = get_the_terms($post -> ID, 'category');
           $term_slug = $term -> slug;
    if($term_slug) : foreach($terms as $term) : setup_postdata( $post );?>
    <?php previous_post_link( '%link', '前の記事', TRUE, '', $term_slug ); ?>
    <?php next_post_link( '%link', '次の記事', TRUE, '', $term_slug ); ?>
    <?php	endforeach; ?>
    <?php else : ?>
    <?php endif; ?>

    previous_post_linkとnext_post_linkの第5パラメータは必ずタクソノミー(今回はcategory)ですよ。タームを与えても期待したように動作しませんから、別の方法を探してください。

    特定のタームを取得する部分はsasasa24さんの「以下記述してみたコードです。」のget_the_termsでよいですが、タームをひとつ限定してpreviousとnextのリンクを出させるにはフィルターフックを幾つか組み合わせて使う必要があると思います。参考になりそうなトピックがあったのでご紹介します。コピペは無理ですが考え方は似ています。
    https://ja.forums.wordpress.org/topic/159037?replies=10

8件の返信を表示中 - 1 - 8件目 (全8件中)
  • トピック「カスタム投稿シングルページ内でタクソノミーごとのページ送りがしたい」には新たに返信することはできません。