[ACF/SCF] アーカイブページでタームに設定したカスタムフィールドを取得したい
Advanced Custom FieldsやSmart Custom Fieldsといったカスタムフィールドの設定プラグインでは、タクソノミー(ターム)にもカスタムフィールドを設定することができます。
本記事では、タームのアーカイブページでカスタムフィールドの内容を表示するときの方法を解説します。
Advanced Custom Fieldsの場合
$term_id = get_queried_object_id();
$term_gfid = $taxonomy .'_'. $term_id;
$field = get_field('cf_xxx', $term_gfid);
Advanced Custom Fieldsでは「get_field」という関数を使います。
第一引数にはカスタムフィールド名を指定します(例:cf_xxx)。
第二引数には、タクソノミーのスラッグとタームのidを「_」で結合した値を設定します。
例えば「itemtype」というスラッグであれば、第二引数には「itemtype_100」といった値を指定します。
「taxonomy-xxx.php」などのタームのアーカイブページでは、グローバル変数「$taxonomy」にはタクソノミー名(ラベルではなくスラッグ)が格納されています。
(今回のサンプルでは使用していませんが、同じように「$term」にはタームのスラッグが格納されています)
グローバル変数と「get_queried_object_id」で取得したタームのidを使って第二引数用の値を取得、設定しています。
Smart Custom Fieldsの場合
$term_id = get_queried_object_id();
$field = SCF::get_term_meta($term_id, $taxonomy, 'cf_xxx');
Advanced Custom Fieldsでは「SCF::get_term_meta」という関数を使います。
第一引数にはタームのidを、第二引数にはタクソノミーのスラッグ名を、第三引数にはカスタムフィールド名を指定します。
値の結合がいらない分、Advanced Custom Fieldsの「get_field」よりもわかりやすいですね。
ご質問など受け付けています
記事の中でわかりにくかったところ、もっと知りたかったこと、間違っていることなど、何でもお気軽にご連絡ください。
ご連絡は下記フォームを利用いただくか、ツイッターアカウント@flat8migi宛てでもOKです。