サポート » 使い方全般 » カスタムタクソノミーにカスタムフィールドで画像を追加、カスタム投稿のsingleページで出力

  • 解決済 norisukesan

    (@norisukesan)


    カスタムタクソノミーを追加し、そのカスタムタクソノミーに
    カスタムフィールド(acf使用)で画像を追加、記事にはそれぞれ複数のタームを指定することが出来る状態で、カスタム投稿のsingleページにタームに属するのカスタムフィールド(画像)を引っ張ってくるために現在以下のサイトを参考に作成しています。

    http://kotori-blog.com/wordpress/taxonomy_customfields/

    「single.phpで記事が属しているタームの画像を表示する場合」を参考に1つの画像だけは持ってこれるのですが、2つ目以降の画像が取得できず困っています。

    記事が属しているターム”全て”の画像とターム名を取得したい場合は
    どのように設定したらよろしいでしょうか。

    <?php
    $term_sp = get_the_terms( $post->ID, ‘mupacat’ ); //mupacatは自分のタクソノミー名に置き換えて
    foreach($term_sp as $term_s){
    $term_id = $term_s->term_id;
    $term_name = $term_s->name;
    break;
    }
    $term_idsp = ‘mupacat_’.$term_id;
    $photo = get_field(‘thumb’,$term_idsp);
    $photosp = wp_get_attachment_image_src($photo, ‘full’);
    ?>
    ” alt=”<?php echo $term_name; ?>”>
    <span class=”title”><?php echo $term_name; ?></span>

    ここのforeach文の中に、
    画像を取得するコードも入れてしまえば、理屈では複数タームの画像を表示することができるはずなのですが、うまくいきません。

    どなたかご教授いただけますでしょうか。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • norisukesanさん

    こんな感じで大丈夫だと思いますよ。
    もしうまく出力されない場合はACFの画像取得のタイプがIDになっていることを確認してみてください。

    
    //タームを取得
    
    $taxonomy = 'mupacat';
    $terms = array();
    $term = array();
    
    $post_id = intval($post -> ID);//記事の投稿IDを取得
    
      $terms = get_the_terms($id, $taxonomy);//$idは投稿IDです
      if($terms):
        foreach($terms as $term):
        
          //reset
          $term_id = '';
          $term_idsp = '';
          $photo = '';
          $photosp = array();
          
          $term_id = intval($term->term_id);//term_id(カテゴリーID)を配列に
          $term_idsp = $taxonomy.'_'.$term_id; //カスタムフィールドを取得するのに必要なtermのIDは「taxonomyname_ + termID」
          $photo = get_field('thumb',$term_idsp);//attachmentIDが出力される
    
          if($photo): //画像があった場合の処理
            $photosp = wp_get_attachment_image_src($photo, 'full');
    
          endif;
    
        endforeach;//END $terms
    
      endif;//END
    
    

    photographer hiro. 様

    ご丁寧にありがとうございます。
    こちらの表示法の方がシンプルかつわかりやすいですね。
    感謝いたします。
    解決いたしましたのでトピックを閉めさせていただきます。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • このトピックに返信するにはログインが必要です。