get_field() のパラメータ指定を間違えたので訂正します。すみません。
検証していませんが、こんな考え方のコードはどうでしょう?
<?php
$cat = get_queried_object_id(); // 現在のカテゴリーのID
$args = array( 'parent' => $cat ); // 子カテゴリーを取得(孫なし)
$childs = get_categories( $args );
foreach( $childs as $child ) { // 子カテゴリーそれぞれ
$image = get_field( 'カスタムフィールド名', $child->term_id );
if ( ! empty( $image ) ) { // カスタムフィールドが入力されている
// 画像を出力
}
}
?>
gblsm様
ご教示頂きましたコードで試しましたが、カテゴリが表示されませんでしたので、下記のようなコードに一部変更してみました。
——————————————
<?php
$args = array(
'parent' => $cat //現在のカテゴリーの直近子カテゴリーを取得
);
$catChildren = get_categories( $args ); //上記の条件でカテゴリー情報を取得
if($catChildren){ //子カテゴリーがある場合、子カテゴリーを表示する
echo '<ul>';
foreach($catChildren as $catChild){
echo '<li><a>term_id). '">'. $catChild -> name. '</a></li>';
※ここにアドバンスドカスタムフィールドを表示したい
}
echo '</ul>';
}
?>
——————————————
1階層下のカテゴリは表示されたのですが、以下のようなコードで試しましたがアドバンスドカスタムフィールド出力ができませんでした。
①<?php echo post_custom(‘フィールド名’); ?>
②<?php
$cat_id = get_queried_object()->cat_ID;
$post_id = ‘category_’.$cat_id;
?>
<?php the_field(‘フィールド名’,$post_id); ?>
◆表示したいアドバンスドカスタムフィールド名
画像:カスタムフィールド名「cat-img」
テキスト:カスタムフィールド名「txt」
便乗で詳しい人の解説があると嬉しいので書いておく。
wp_list_categoriesのコールバックのwalkerにオリジナルのwalkerを指定してやるとかじゃないだろうか。
クラスリファレンス/Walker
okyanさん
検証しなかったのが悪いといえばそれまでですが、私のコードが間違っていました。
カテゴリーにつけたカスタムフィールドの取り出し方は Advanced Custom Filelds のマニュアルに記載がありますが、お読みになりましたか?
https://www.advancedcustomfields.com/resources/get_field/
上記ページ内 Get a value from other places の例に出てきます。
$post_id = "category_2"; // target a specific category
$value = get_field( "text_field", $post_id );
これを参考にコードを書いてみました。
以下のコードを category.php に書いて検証
<pre>
<?php
$cat = get_queried_object_id(); // 現在のカテゴリーのID
$args = array( 'parent' => $cat ); // 子カテゴリーを取得(孫なし)
$childs = get_categories( $args );
echo "子カテゴリーの一覧\n";
foreach( $childs as $child ) { // 子カテゴリーそれぞれ
echo 'term_id: ', $child->term_id, ' | ';
echo 'name: ', $child->name, ' | ';
echo 'slug: ', $child->slug, "\n";
$cat_id = 'category_' . $child->term_id; // カテゴリー(ターム)を指定
echo 'カスタムフィールド cat-img: ';
$image = get_field( 'cat-img', $cat_id );
echo '<img src="' . $image['url'] . '">' . "\n";
$txt = get_field( 'txt', $cat_id );
echo 'カスタムフィールド txt: ', $txt, "\n";
}
?>
</pre>
gblsm様
検証までしていただき、ありがとうございます。
上記のコードで出力ができました!
get_fieldでフィールドを指定する方法、お恥ずかしながら知りませんでした。
Advanced Custom Filelds のマニュアルは見たことがなかったので、この機会に目を通してみます。
本当にありがとうございました。
get_field() の第2パラメータに、カテゴリーのオブジェクトを渡しても大丈夫だそうです。
これと
$cat_id = 'category_' . $child->term_id;
$image = get_field( 'cat-img', $cat_id );
$txt = get_field( 'txt', $cat_id );
これは同じ。短く書けるのでこちらの方が分かりやすいかも。
// $child はカテゴリー(ターム)オブジェクト
$image = get_field( 'cat-img', $child );
$txt = get_field( 'txt', $child );