I'm trying to find a way (using the wordpress plugin ACF) to output an entire group of fields.
I have two "Field Groups" and I want to say if either of them is "Active" (with a checkbox) to echo them to my template.
The question is, how do I get an array of all the fields data from one "Field Group"?
Right now I am attempting something like the following:
<?php
$group_ID = 37;
$fields = array();
$fields = apply_filters('acf/field_group/get_fields', $fields, $group_ID);
echo "<pre>";
print_r($fields);
echo "</pre>";
?>
It outputs an array of fields but as far as I can tell it contains no actual data:
Array
(
[0] => Array
(
[key] => field_537b79d92081f
[label] => Active-1
[name] => active-1
[_name] => active-1
[type] => true_false
[order_no] => 0
[instructions] =>
[required] => 0
[id] => acf-field-active-1
[class] => true_false
[conditional_logic] => Array
(
[status] => 0
[rules] => Array
(
[0] => Array
(
[field] => null
[operator] => ==
)
)
[allorany] => all
)
[message] =>
[default_value] => 0
[field_group] => 37
)
[1] => Array
(
[key] => field_537b78a4c743e
[label] => Title-1
[name] => title-1
[_name] => title-1
[type] => text
[order_no] => 1
[instructions] =>
[required] => 0
[id] => acf-field-title-1
[class] => text
[conditional_logic] => Array
(
[status] => 0
[rules] => Array
(
[0] => Array
(
[field] => field_537b79d92081f
[operator] => ==
[value] => 1
)
)
[allorany] => all
)
[default_value] =>
[placeholder] =>
[prepend] =>
[append] =>
[formatting] => html
[maxlength] =>
[field_group] => 37
)
[2] => Array
(
[key] => field_537b78c6c743f
[label] => Info-1
[name] => info-1
[_name] => info-1
[type] => textarea
[order_no] => 2
[instructions] =>
[required] => 0
[id] => acf-field-info-1
[class] => textarea
[conditional_logic] => Array
(
[status] => 0
[rules] => Array
(
[0] => Array
(
[field] => field_537b79d92081f
[operator] => ==
[value] => 1
)
)
[allorany] => all
)
[default_value] =>
[placeholder] =>
[maxlength] =>
[rows] =>
[formatting] => br
[field_group] => 37
)
)
I would like to basically do the following (excuse the sudo/broken code, PHP isn't my language):
<?php
$group_ID1 = 37;
$fields = array($group_ID1);
if ($fields1['active'] !== null) {
echo "<h1>";
echo $fields1['active']['text'];
echo $fields1['title']['text'];
echo $fields1['content']['text'];
echo "<h1>";
}
$group_ID2 = 38;
$fields2 = array($group_ID2);
if ($fields2['active'] !== null) {
echo "<h1>";
echo $fields2['active']['text'];
echo $fields2['title']['text'];
echo $fields2['content']['text'];
echo "<h1>";
}
?>
I can also get a specific fields data like below:
<?php
$field_key = "field_537b78c6c743f";
$field = get_field_object($field_key);
if($field) {
echo "<pre>";
print_r($field);
echo "</pre>";
}
?>
Which outputs the following:
Array
(
[key] => field_537b78c6c743f
[label] => Info-1
[name] => info-1
[_name] => info-1
[type] => textarea
[order_no] => 2
[instructions] =>
[required] => 0
[id] => acf-field-info-1
[class] => textarea
[conditional_logic] => Array
(
[status] => 0
[rules] => Array
(
[0] => Array
(
[field] => field_537b79d92081f
[operator] => ==
[value] => 1
)
)
[allorany] => all
)
[default_value] =>
[placeholder] =>
[maxlength] =>
[rows] =>
[formatting] => br
[field_group] => 37
[value] => testtesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttest
)
But do I really need to call each field key for each "Field Group"? Is there not an array of all the fields in one "Field Group"?