ブロックテーマ増加中ですが、まだまだハイブリットテーマも存続していきそうな今日この頃。カスタムタクソノミーのアーカイブ背景に、タクソノミー毎に別の背景画像を表示する案件があったのでその方法を。

条件

  • カスタムフィールドは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の勉強しておこうかな。