サポート » 使い方全般 » 特定のタームを除外して取得し、変数に格納したい

  • 解決済 tokitahidemi

    (@tokitahidemi)


    カスタム投稿の個別記事ページ内で、記事が属するターム(階層ありのカテゴリ型)を1個取得する場合
    ※カスタム投稿とタクソノミーはCPT UIで作っております。

    $term = array_shift(get_the_terms($post->ID, ‘タクソノミー名’));

    上記のように最終的には変数に入れたいのですが、
    記事に充てたタームの中で、特定のタームを除外して取得したいです。

    具体的な意図としては
    記事に対して複数タームを充てているのですが、うち一つはラベル的なもので、ユーザーには出したくない、というものです(アーカイブへのリンクで使うため)

    こちらのPHPの記述を教えていただくことは叶いますでしょうか。
    何卒、よろしくお願いいたします。

    WordPress5.8.2
    PHP7.4.25

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • こんにちは

    wp_get_post_terms() を使用するはどうでしょうか?

    $term = wp_get_post_terms( $post->ID, 'タクソノミー名', array( 'number' => 1, 'exclude' => 123 ) );

    ※ 123 は除外するタームの ID。

    トピック投稿者 tokitahidemi

    (@tokitahidemi)

    @ishitaka さま
    ありがとうございます!
    本日のうちに試してみます。
    まずは御礼までにて失礼します。

    トピック投稿者 tokitahidemi

    (@tokitahidemi)

    @ishitaka さま
    先ほどはありがとうございました!
    おかげさまで思い通りに動いてくれているみたいです。

    下記が全体像になるのですが、もしよろしければ変な箇所が無いか見ていただいてもよろしいでしょうか?
    除外タームのIDはスラッグから取得してみました。

    次いで恐縮なのですが、もし可能であればお目通しいただけますと嬉しいです。

    
    <?php
    $term_slug = get_term_by('slug', 'ターム名', 'タクソノミー名');
    $term_id = $term_slug->term_id;
    $link_term = array_shift(wp_get_post_terms( $post->ID, 'タクソノミー名', array( 'number' => 1, 'exclude' =>  $term_id ) ));
    $link_taxonomy = 'タクソノミー名';
    ?>
    <a href="<?php echo get_term_link( $link_term, $link_taxonomy ); ?>">アーカイブへのリンク</a>

    wp_get_post_terms() の戻り値をチェック(空の場合)したほうがいいのでは?

    $terms = wp_get_post_terms( $post->ID, 'タクソノミー名', array( 'number' => 1, 'exclude' => $term_id ) );
    if ( ! empty( $terms ) ) {
    	$link_term = $terms[0];
    
    	:
    }
    トピック投稿者 tokitahidemi

    (@tokitahidemi)

    ありがとうございます!
    確認〜実施いたします。

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • トピック「特定のタームを除外して取得し、変数に格納したい」には新たに返信することはできません。