ブロックテーマ増加中ですが、まだまだハイブリットテーマも存続していきそうな今日この頃。カスタムタクソノミーのアーカイブ背景に、タクソノミー毎に別の背景画像を表示する案件があったのでその方法を。
条件
- カスタムフィールドはACFで作成
- フィールドタイプは「画像」、戻り値の形式はここでは「画像配列」
<?php
$term_id = get_queried_object_id();
$term_gfid = $taxonomy .'_'. $term_id;
$field = get_field('visual_category', $term_gfid);
?>
<?php if($field ): ?>
<style>
.visual{
background-image:url(<?php echo $field[url]; ?>);
background-size:cover;
}
</style>
<?php endif; ?>
この記述で画像のURLを取得することが出来ます。ポイントになるのは、$term_gfid です。フィールドの値を取得する時に、タクソノミーのスラッグとタームのidを「_」で結合した値を設定しないと取得できないのです。当然、カテゴリーのケースでも同様ですが、ここは少々わかりにくい。
ここのところブロックテーマの作成ばかり勉強していて、久々にACF PROを触ったら、カスタムポストとタクソノミーが作成出来ることになっている。驚き。今後はCustom Post Type UIは不要なのか。値の取得とか今までと違ったりするとめんどい。しかしACFだけで完結できるならその方が便利そう。ブロックテーマの登場でACFも活躍場所が減ってくるかもしれないので、そのあたりの生き残り合戦だろうか。栄枯盛衰激しい。Jamstackの勉強しておこうかな。