カスタムタクソノミに追加したカスタムフィールドの値をシングルページで取得する

カスタムフィールド

WordPressプラグインAdvanced Custom Fieldsでカスタムタクソノミに登録したカスタムフィールドの値をシングルページで取得するためのサンプルコードです。

フィールドの値を取得するコード

<?php
	//タームIDを取得
	$term_array = get_the_terms($post->ID,'column_cat');
	$term = $term_array[0];
	$term_id = $term->term_id;
	//カスタムフィールド取得用へ変換
	$acf_term_id = 'column_cat_'.$term_id;
	//カスタムフィールドの値を取得
	$acf_img = get_field( 'thumbnail', $acf_term_id );
	//画像のURLを取得(thumbnail、medium、largeなどサイズ指定)
	$acf_img_url = $acf_img['sizes']['large'];
	//画像のaltを取得
	$acf_img_alt = $acf_img['alt'];
?>

カスタムタクソノミのスラッグは「column_cat」で登録し、
カスタムフィールドに登録するときは以下の値で設定しています。

  • フィールド名:thumbnail
  • フィールドタイプ:画像

カスタムタクソノミに登録したカスタムフィールドの値を取得するには、IDの前に「カスタムタクソノミ のスラッグ名_」をつける必要があります。

別記事で紹介したカテゴリに追加したときの取得方法と似ていますね。

サンプルでは取得が面倒な画像を紹介しましたが他のタイプでも同じ考え方でいけると思います。

投稿IDが正常に取得できないとき

環境によっては「$post->ID」では記事IDが取得できない場合もあると思うのでそういったときは「get_queried_object」関数を使用して投稿IDを取得する方法もあります。

<?php
    $page_obj = get_queried_object();
    $post_id = $page_obj->ID;
        //タームIDを取得
    $term_array = get_the_terms($post_id,'column_cat');
?>
Akira

Akira

未経験から制作会社に入社し3年ほど技術周りをやってます。最近はJamstackに興味があってこのサイトもShifterというサービスを使用してJamstack化しています。

特集記事

TOP