サポート » 使い方全般 » タームの指定がなかった場合の条件判断について

  • 解決済 mint-chan

    (@mint-chan)


    シングルページの時、タクソノミーのタームで条件分岐したいです。
    タームが何も指定されていなかったら何もしない
    タームがあれば、そのタームの名前を表示する
    という処理にしたいです。

    下記のコードで、タームを取得して表示することはできましたが、
    どこにどのように記述してよいかわかりません。
    仮にタクソノミーを area としました。

    <?php
    $terms = wp_get_post_terms( $post->ID, 'area' ); //分類で設定した名称
    $names = array();
         echo "【エリア名】"; //前の文字
         foreach ( $terms as $term ) {
              $names[] = $term->name;
         }
         echo implode( '、 ', $names ); //区切り文字を指定
    ?>

    どうぞよろしくお願いします。

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

    if ( $terms ) で空かどうか判定できます。
    なお、タクソノミーが存在しない場合も考慮しておいたほうがいいと思うので、下記のように条件を指定するといいかと。

    $terms = wp_get_post_terms( $post->ID, 'area' );
    if ( ! is_wp_error( $terms ) ) {
    	if ( $terms ) {
    		// タームの指定あり
    	}
    }
    • この返信は6年、 4ヶ月前にishitakaが編集しました。
    トピック投稿者 mint-chan

    (@mint-chan)

    ご回答くださいましてありがとうございます。

    教えていただいたものに元のコードをいれて下記のようにしました。
    うまくいきました。
    if ( $terms ) でよいのですね。ずっといろいろ試していたので、教えていただけて本当にありがたく思います。また、if ( ! is_wp_error( $terms ) ) { も教えて下さってありがとうございます。

    感謝です!!

    <?php
    $terms = wp_get_post_terms( $post->ID, 'area' );
    if ( ! is_wp_error( $terms ) ) {
    	if ( $terms ) {
    		// タームの指定あり
                    $names = array();
                    echo "【エリア名】"; //前の文字
                    foreach ( $terms as $term ) {
                    $names[] = $term->name;
         }
         echo implode( '、 ', $names ); //区切り文字を指定
    	}
    }
    ?>
    • この返信は6年、 4ヶ月前にmint-chanが編集しました。
2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「タームの指定がなかった場合の条件判断について」には新たに返信することはできません。