ミギムキ

[ACF/SCF] アーカイブページでタームに設定したカスタムフィールドを取得したい

Advanced Custom FieldsSmart 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です。