protected function get_field_objects($id)
{
if (empty($id)) {
return false;
}
$fields = array();
$fields_tmp = array();
if (function_exists('acf_get_field_groups') && function_exists('acf_get_fields') && function_exists('acf_extract_var')) {
$field_groups = acf_get_field_groups(array('post_id' => $id));
if (is_array($field_groups) && !empty($field_groups)) {
foreach ($field_groups as $field_group) {
$field_group_fields = acf_get_fields($field_group);
if (is_array($field_group_fields) && !empty($field_group_fields)) {
foreach (array_keys($field_group_fields) as $i) {
$fields_tmp[] = acf_extract_var($field_group_fields, $i);
}
}
}
}
} else {
if (strpos($id, 'user_') !== false) {
$filter = array('ef_user' => str_replace('user_', '', $id));
} elseif (strpos($id, 'taxonomy_') !== false) {
$filter = array('ef_taxonomy' => str_replace('taxonomy_', '', $id));
} else {
$filter = array('post_id' => $id);
}
$field_groups = apply_filters('acf/location/match_field_groups', array(), $filter);
$acfs = apply_filters('acf/get_field_groups', array());
if (is_array($acfs) && !empty($acfs) && is_array($field_groups) && !empty($field_groups)) {
foreach ($acfs as $acf) {
if (in_array($acf['id'], $field_groups)) {
$fields_tmp = array_merge($fields_tmp, apply_filters('acf/field_group/get_fields', array(), $acf['id']));
}
}
}
}
if (is_array($fields_tmp) && !empty($fields_tmp)) {
foreach ($fields_tmp as $field) {
if (is_array($field) && isset($field['name'])) {
$fields[$field['name']] = $field;
}
}
}
return $fields;
}