Advanced Custom Fieldでフィールド名を変数にする方法を紹介します。
目次
ACFのフィールド名取得で陥りがちな問題は条件分岐が必要
Advanced Custom Fieldの中身の出力の基本構文が以下になっていることにより、field名を特定のフィールド名(例えば’bag’など)にしないと出力できないので、変数を指定できないのではないか?というものです。
1 2 |
$post = get_field($field_name, $post_id, $format_value); echo $field; |
ACFのフィールド名を変数で条件分技する場面
- フィールド名が、ある条件と合致する場合にのみ出力したい場合に、if文を設定して使います
ACFのフィールド名を変数で条件分岐する方法コピペ
1 2 3 4 5 6 7 8 9 10 11 |
<?php $taxonomyName = "goods"; $args = array( 'parent' => 0, 'hide_empty' => 0 ); $terms = get_terms($taxonomyName,$args); if( get_field($term->slug) ) : $posts = get_field($term->slug); endif; ?> |
ACFのフィールド名を変数で条件分岐する方法解説
1 2 3 4 5 6 7 |
<?php $taxonomyName = "goods"; $args = array( 'parent' => 0, 'hide_empty' => 0 ); $terms = get_terms($taxonomyName,$args); |
例えば商品種類一覧を出力したい場合、タクソノミー 名を「goods」として、中身の商品種類である「バッグ」「財布」などを出力することになります。このとき、’parent’ => 0,とすることで、親カテゴリがないもののみ出力しています。例えば、「バッグ>ショルダーバッグ」のような商品カテゴリ設定をしている場合、「ショルダーバッグ」は出力しません。
1 2 3 |
if( get_field($term->slug) ) : $posts = get_field($term->slug); endif; ?> |
今回は上で設定した、タクソノミーのスラッグ名($term->slug)を、Advanced Custom Fieldの変数とします。こうすることで、のちに、「タクソノミーのスラッグ名とAdvanced Custom Fieldのフィールド名が同じ場合」という条件をつけることもできます。
ここでif文を設定しているのは、フィールド名にタクソノミーのスラッグ名と一致するものがないとエラーが出ることがあるからです。