Advanced Custom Fieldを使ってフィールドグループのラベル名を投稿に動的に出力する例です。
ACFの内容を「フィールド名」と「値」をワンセットで表示するようなことがよくあるかと思います。
名前:山田たろう
年齢:19歳
趣味:読書
これのフィールド名を変更したいような場合、
氏名:山田たろう
年齢:19歳
好きなこと:読書
フィールド名を手打ちで差し替えても良いのですが、あらかじめACFのフィールドグループのデータから動的に取得しておけば、のちのちラベルを変更した場合でも差し替える必要が無いので便利です。
$html = '';
$args = array(
'post_type' => 'acf-field',
'post_parent' => 000, //ACFフィールドグループID
'posts_per_page' => -1,
'order' => 'ASC',
'orderby' => 'menu_order'
);
$fields = get_posts($args);
if (!empty($fields)) {
$html = '<dl>';
foreach ($fields as $field) {
$html .= '<dt>' . $field->post_title . '</dt>'; //フィールド名の出力
$fieldobject = get_field_object($field->post_excerpt); // フィールドの設定を取得
switch ($fieldobject['type']) { // 設定に応じた値の出力
case 'image': // 画像(URL)の場合
$html .= '<dd><img src="' . get_field($field->post_excerpt, false) . '"></dd>';
break;
default: // その他の場合
$html .= '<dd>' . get_field($field->post_excerpt, false) . '</dd>';
break;
}
$html .= '</dl>';
}
}
echo $html;
'post_parent' => 000,
の「000」にはACFのフィールドグループのIDが入ります。ACFのフィールド編集画面を開き、URLにあるhttps://***/wp-admin/post.php?post=000&action=edit
の数字部分を入力してください。
また、この例ではget_field_object
を使ってそれぞれのフィールドの設定によってHTMLの出力内容を調整しています。サンプルでは画像用の分岐を入れていますが、そのほかにも複数選択の項目やリンクなど、フィールドグループの内容に応じて追記してください。
コメント