Advanced Custom Fields で登録したタームのフィールド値を取得する方法

Advanced Custom Fields で登録したタームのフィールド値を取得する方法

WordPress タームに設定したカスタムフィールド値をの取得方法を紹介します。
例えば、タームに「キーカラー」を設定して、カテゴリごとに色分したいときに便利な方法です。
昔の記述方法と合わせて新しい指定方法を記載します。最新のプラグインを使用している場合は新しい記述をご利用ください。

  1. タームに紐づくカスタムフィールド値の基本的な取得方法
  2. タームに登録された画像の表示方法
  3. タームに登録したカスタムフィールド値(キーカラー)を表示する方法

タームに紐づくカスタムフィールド値の基本的な取得方法

まずは Advanced custom field(以下 ACF) を使って、タームに紐づくカスタムフィールドを作成します。
例えば、タームに「カラー」というカスタムフィールドを追加、値を「#ffffff」に設定したとします。
次のコードは、タームに追加したカスタムフィールド「カラー(カスタムフィールド名)」の値を取得する方法です。

新しい記述方法(単一選択の場合)

事前にタームの情報オブジェクトを呼び出してないときは以下の記述でタームの情報を取得してください。

<?php $term = get_queried_object(); ?>

$term でタームの情報オブジェクトを取得していることを条件に、以下の記述を追加してください。

<?php the_field('カラー', $term); ?>

$term はタームオブジェクトを指定してください。
タームの取得方法に不安がある場合はWordPress タームの取得と表示方法をご確認ください。

古い記述方法(上記の記述でうまくいかない場合にご利用ください)

<?php get_field('カラー','タクソノミースラッグ_'.$term_id); ?>

タクソノミースラッグは適宜変更してください。
タクソノミースラッグの最後の「_(アンダーバー)」は必須です。消さないように気をつけましょう。

例えば、タクソノミースラッグ「works-category」、フィールド名が「フィールド名」の場合の出力は次のようになります。

<?php echo get_field('フィールド名','works-category'.'_'.$term_id); ?>

$term_id にはタームのIDが出力されるように調整してください。

タームに登録された画像の表示方法

タームに紐づくカスタムフィールド値に画像を登録した場合の表示方法を紹介します。
例えば、カスタムフィールド名が「画像」の時に、次のコードをテンプレートのタームの値を取得できるループ内に追加します。

新しい記述方法

<?php $image = get_field('画像', $term); if( !empty($image) ): ?>
<img src="<?php echo $image['url']; ?>" alt="<?php echo $image['alt']; ?>" />
<?php else: ?>
<img src="<?php echo get_template_directory_uri(); ?>/img/pic_dammy.jpg" alt="">
<?php endif; ?>

こちらも同様に $term はタームオブジェクトを指定してください。
タームの取得方法に不安がある場合はWordPress タームの取得と表示方法をご確認ください。

古い記述方法

<?php $image = get_field('タームフィールド名','タクソノミースラッグ_'.$term_id); if( !empty($image) ): ?>
<img src="<?php echo $image['url']; ?>" alt="<?php echo $image['alt']; ?>" />
<?php else: ?>
<img src="<?php echo get_template_directory_uri(); ?>/img/pic_dammy.jpg" alt="">
<?php endif; ?>

画像の表示内容をカスタマイズしたい場合はAdvanced Custom Fields の取得と表示方法の画像の取得方法をご確認ください。

タームに登録したカスタムフィールド値(キーカラー)を表示する方法

前項を参考に、投稿に紐づくタームに設定したカラーピッカーのカスタムフィールド値の取得方法を紹介します。
例えば、タクソノミースラッグが information-category 、登録されたカスタムフィールドの値が #009933 の時。
アンカータグの背景色に選択した値を付与する場合に、次のコードをテンプレートのループ内に追加します。

古い記述方法

<?php // 投稿に紐づくタームを表示
$terms = wp_get_object_terms($post->ID, 'information-category'); // タクソノミーのタームを取得
if(!empty($terms)){
if(!is_wp_error($terms)){
echo '<ul>';
foreach($terms as $term){
$term_link = get_term_link($term->slug, $custom_post_cat); // タームアーカイブのリンクを取得
$term_name = $term->name; // ターム名の取得
$term_id = $term->term_id; // タームIDの取得
$term_color = get_field('キーカラー','information-category_'.$term_id); // カスタムフィールドの取得
echo '<li><a href="'.$term_link.'" style="background-color:'.$term_color.';">'.$term_name.'</a></li>'; // タームの表示
}
echo '</ul>';
}
}
?>

表示がうまくいかない場合は、タクソノミースラッグ(上記のサンプルコードでは二箇所)を変更しているかを確認。
二箇所目の _ が残っていることを確認。ループ内にコードを設置しているかを確認してください。

まとめ

WordPress のプラグイン ACF を使って、タームに登録したカスタムフィールドの値を取得して表示する方法を紹介しました。
カテゴリやタームに登録したカスタムフィールドの値が取得できれば表現の幅が広がると思います。
取得に少し癖がありますが頑張ってチャレンジしてみてください。