Advanced Custom Fields(ACF)をあれやこれやしてみる
WordPressでAdvanced Custom Fields(ACF)を利用するケースはあるかと思いますが今回は、ACFの値を投稿以外のページで値として利用したと思って調べてみました。
目次
POST_TYPE
acf-fieldがフィールド
acf-field-groupがフィールドをまとめたグループ
post_name
acf-field⇒「field_」
acf-field-group⇒「group_」
という名称で保存されます。
これがKEYになります。
post_excerpt
ここに格納されているのがカスタムフィールドとして設定したフィールド名が入っています。
通常投稿から利用する場合
get_filed(‘フィールド名’)やget_field_object(‘フィールド名’)で値を取得することが可能
※これにはPOST_IDが必要。
投稿以外のページからACFのフィールドの情報を取得するには?
Key名って?いうとACFはフィールドを増やす毎にユーザーが指定したフィールド名以外にキーとなる名称を付けています。
ということで、「get_field_object(‘Key名’)」で取得できるようです。
じゃあ、フィールド名⇒KEYに変換できるのか?というとfunctionを作ればできる?
※post_excerpt⇒post_nameを取得する
「$wpdb->get_results」を利用してクエリを書いてみた。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
function getCustomfieldToFieldKey($column) { if(empty($column)) return false; global $wpdb; $query = " SELECT post_excerpt, post_name FROM $wpdb->posts AS p WHERE p.post_type = 'acf-field' AND p.post_status = 'publish' AND p.post_excerpt = '{$column}' "; $results = $wpdb->get_results( $query ); if(!empty($results[0]->post_name)) { return $results[0]->post_name; } return false; } |
これでpost_name(KEY)が取り出せる。
もちろん重複している場合はNGなのでカスタムフィールドを設計する際には気を付けないといけない。
あとは「get_field_object」にKEYを入れて内容を取り出す。
チェックボックスは検索向きじゃないのでタクソノミーで代用
これでなんとか。