サポート » プラグイン » Advanced Custom Fieldsで親タームに登録した画像をarchiveで一覧表示

  • 解決済 blocks222

    (@blocks222)


    ポストタイプjobにworkというタクソノミーをつくり、
    各タームにAdvanced Custom Fieldsで画像登録をしています。
    ポストタイプjobのarchive一覧ページに
    workタクソノミーの親ターム一覧メニューを表示し、各アイコンとして画像を表示したいのですが上手くいきません汗

    公式のacfのDocumentationを読んだり、
    こちらの過去の質問も参考にいたしましたが、お手上げでして。
    ご教示お願いいたします汗

    ` <?php
    if ($term_objs = get_terms(‘work’)) :
    foreach ($term_objs as $term_obj) :
    $term_link = get_term_link($term_obj,’work’);
    $term_title = esc_html($term_obj->name);
    $term_description= esc_html($term_obj->description);
    $tag_id = $term_obj->tag_ID;
    $post_id = ‘work_’.$tag_id;
    $tagimg = get_field(‘caseimg’,$post_id);
    $img = wp_get_attachment_image_src($tagimg, ‘full’);
    ?>
    <div class=”box”>
    <a href=”<?php echo $term_link; ?>”><?php echo $term_title;?>
    <img src=”<?php echo $img[0]; ?>” alt=”<?php echo $term_title;?>” />
    <p><?php echo $term_description;?></p></a>

    </div>

    <?php
    endforeach;
    endif;
    ?>`
    wordpressバージョン3.1.4
    Advanced custom fields 3.2.5

11件の返信を表示中 - 1 - 11件目 (全11件中)
  • モデレーター gatespace

    (@gatespace)

    http://www.advancedcustomfields.com/resources/functions/get_field/

    ACFで設定したタームのカスタムフィールドを取得するには get_field の第二引数の書き方が異なります。

    上記ページ内の Usage の下の方に例があります。
    指定するのは タクソノミー名_タームID です。

    あとは各変数を var_dump() して期待通りの値が返っているかどうか確認

    モデレーター gatespace

    (@gatespace)

    http://codex.wordpress.org/Function_Reference/get_terms

    あとそもそもタームIDを正しく取得していない気がします。

    トピック投稿者 blocks222

    (@blocks222)

    gatespace様ありがとうございます。
    参考urlを元に、変えてみました。
    が、うまくいかず・・・。
    いつもはかたつむりくんのカスタムフィールドを使用しておりましてACFは初めてです。
    そもそも、基礎が抜け落ちてます汗
    画像のフィールド名はcaseimgです。

    <?php if ($term_objs = get_terms('work')) :
    	foreach ($term_objs as $term_obj) :
    	$term_link = get_term_link(intval($term_obj->term_id), 'work');
    	$term_title = esc_html($term_obj->name);
    	$term_description= esc_html($term_obj->description);
    	 $term_id = $term_obj->term_id;
    	$post_id = 'work_'.$term_id;
    ?>
    	<div class="box">
    	<a href="<?php echo $term_link; ?>"><?php echo $term_title;?>
    	 <img src="<?php get_field('caseimg',$post_id); ?>" alt="<?php echo $term_title;?>" />
    	<p><?php echo $term_description;?></p></a>
    
    	</div>
    <?php
    	endforeach;
    	endif;
    	?>
    トピック投稿者 blocks222

    (@blocks222)

    $post_idをechoしたらちゃんとwork_3と出ましたです・・・。
    term_idはくるようになりました。

    トピック投稿者 blocks222

    (@blocks222)

    最新の様子

    <?php
         if ($term_objs = get_terms('work')) :
          foreach ($term_objs as $term_obj) :
          $term_link = get_term_link(intval($term_obj->term_id), 'work');
           $term_title = esc_html($term_obj->name);
          $term_description= esc_html($term_obj->description);
           $term_id = $term_obj->term_id;
          $term_deta = 'work_'.$term_id;
          $term_img = get_field('caseimg',$term_deta);
          $img = wp_get_attachment_image_src($term_img , 'full');
          ?>
    	<div class="box">
    
    	<a href="<?php echo $term_link; ?>"><?php echo $term_title;?>
    	<img src="<?php echo $img[0]; ?>" alt="<?php echo $term_title; ?>" />
    	<p><?php echo $term_description;?></p></a>
    
    	</div>
    
    <?php
    endforeach;
    endif;
    ?>

    $term_imgをechoしても何もでてこないので、そこらへんが怪しい気がしております・・。

    モデレーター gatespace

    (@gatespace)

    そもそも get_field('caseimg',$term_deta); が期待通りの値を返しているのかどうか。

    var_dump() つかって内容を確認してみてください。

    あとACFの画像フィールドはオブジェクトかIDカURLかで扱い方が異なるので、必ずリファレンスを参考に。
    http://www.advancedcustomfields.com/resources/field-types/image/

    トピック投稿者 blocks222

    (@blocks222)

    gatespace様、付き合ってくださってありがとうございます。

    $term_imgをvar_dumpしたらbool(false)と返ってきました。
    すみませんが、この結果を、どう考えていけばよろしいのでしょうか。
    一つ前の肯定の
    $term_deta = ‘work_’.$term_id;
    はきちんと出力されるので原因を疑うのは、get_field(‘caseimg’,$term_deta);
    だと思うのですが、これをどう見直せば良いのかわからないです。

    >ACFの画像フィールドはオブジェクトかIDカURLかで扱い方が異なる
    それは把握しております。が、画像が表示されないので、
    何回もurlやidにフィールドを変更しておりました。

    モデレーター gatespace

    (@gatespace)

    $term_deta = ‘work_’.$term_id;
    はきちんと出力されるので原因を疑うのは、get_field(‘caseimg’,$term_deta);
    だと思うのですが、これをどう見直せば良いのかわからないです。

    get_field() の戻り値がfalseだと

    • そもそもカスタムフィールド名が間違っている
    • タクソノミー名(work)が間違っている
    • そもそもカスタムフィールドが入力されていない

    かと。

    そうなってくると、実際にACFをどう設定しているか、とかダッシュボードでちゃんと入力して保存されているかなど、環境に依存してくる問題になるので、一つずつ確認していくしか方法がないです。

    トピック投稿者 blocks222

    (@blocks222)

    gatespace様

    なるほどです。
    それらは何度も確認しているので間違いはございません。
    考えられる原因を見直してみます!

    ありがとうございました!!!

    トピック投稿者 blocks222

    (@blocks222)

    追記途中報告
    タクソノミーに登録したカスタムフィールドではなくて
    投稿のフォーマットに登録したカスタムフィールドはきちんと表示されております。

    となるとタクソノミーに登録した情報限定でなにやらおかしいということですね。
    ループの書き方が悪いのかしら・・・。

    誰もみてないかもしれないですが追記です。

    トピック投稿者 blocks222

    (@blocks222)

    解決出来ました!
    gatespace様のおっしゃられたように管理画面の見直しをしておりました。
    ACFの投稿画面で’work’に登録したフィールドグループを複製して下書き保存しておりました。
    それを削除したらきちんと出力されました・・・。
    同じフィールド名が複数あることになりますもんね・・・。

    私のトンチンカンなミスでした。すみません、ありがとうございます!
    お世話になりました!!

11件の返信を表示中 - 1 - 11件目 (全11件中)
  • トピック「Advanced Custom Fieldsで親タームに登録した画像をarchiveで一覧表示」には新たに返信することはできません。