function acf_get_field($selector = null) { // vars $field = false; $k = 'ID'; $v = 0; // $post_id or $key if (is_numeric($selector)) { $v = $selector; } elseif (is_string($selector)) { if (acf_is_field_key($selector)) { $k = 'key'; } else { $k = 'name'; } $v = $selector; } elseif (is_object($selector)) { $v = $selector->ID; } else { return false; } // get cache key $cache_key = "load_field/{$k}={$v}"; // get cache $found = false; $cache = wp_cache_get($cache_key, 'acf', false, $found); if ($found) { return $cache; } // get field group from ID or key if ($k == 'ID') { $field = _acf_get_field_by_id($v); } elseif ($k == 'name') { $field = _acf_get_field_by_name($v); } else { $field = _acf_get_field_by_key($v); } // filter for 3rd party customization $field = apply_filters('acf/load_field', $field); // If a field has been found, apply filters if ($field) { $field = apply_filters("acf/load_field/type={$field['type']}", $field); $field = apply_filters("acf/load_field/name={$field['name']}", $field); $field = apply_filters("acf/load_field/key={$field['key']}", $field); } // set cache wp_cache_set($cache_key, $field, 'acf'); // return return $field; }
function acf_get_field($selector = null, $db_only = false) { // vars $field = false; $type = 'ID'; // ID if (is_numeric($selector)) { // do nothing // object } elseif (is_object($selector)) { $selector = $selector->ID; // string } elseif (is_string($selector)) { $type = acf_is_field_key($selector) ? 'key' : 'name'; // other } else { return false; } // return early if cache is found $cache_key = "get_field/{$type}={$selector}"; if (!$db_only && acf_isset_cache($cache_key)) { return acf_get_cache($cache_key); } // ID if ($type == 'ID') { $field = _acf_get_field_by_id($selector, $db_only); // key } elseif ($type == 'key') { $field = _acf_get_field_by_key($selector, $db_only); // name (rare case) } else { $field = _acf_get_field_by_name($selector, $db_only); } // bail early if no field if (!$field) { return false; } // validate $field = acf_get_valid_field($field); // set prefix (acf fields save with prefix 'acf') $field['prefix'] = 'acf'; // bail early if db only value (no need to update cache) if ($db_only) { return $field; } // filter for 3rd party customization $field = apply_filters("acf/load_field", $field); $field = apply_filters("acf/load_field/type={$field['type']}", $field); $field = apply_filters("acf/load_field/name={$field['name']}", $field); $field = apply_filters("acf/load_field/key={$field['key']}", $field); // update cache // - Use key instead of ID for best compatibility (not all fields exist in the DB) $cache_key = acf_set_cache("get_field/key={$field['key']}", $field); // update cache reference // - allow cache to return if using an ID selector acf_set_cache_reference("get_field/ID={$field['ID']}", $cache_key); // return return $field; }
function acf_get_field($selector = null, $db_only = false) { // vars $field = false; $type = 'ID'; // is $selector an ID if (is_numeric($selector)) { // do nothing // is $selector a string (name|key) } elseif (is_string($selector)) { $type = acf_is_field_key($selector) ? 'key' : 'name'; // is $selector an object } elseif (is_object($selector)) { $selector = $selector->ID; // selector not valid } else { return false; } // get cache key $cache_key = "get_field/{$type}={$selector}"; // get cache if (!$db_only) { $found = false; $cache = wp_cache_get($cache_key, 'acf', false, $found); if ($found) { return $cache; } } // get field group from ID or key if ($type == 'ID') { $field = _acf_get_field_by_id($selector, $db_only); } elseif ($type == 'name') { $field = _acf_get_field_by_name($selector, $db_only); } else { $field = _acf_get_field_by_key($selector, $db_only); } // bail early if db only value (no need to update cache) if ($db_only) { return $field; } // filter for 3rd party customization if ($field) { $field = apply_filters("acf/load_field", $field); $field = apply_filters("acf/load_field/type={$field['type']}", $field); $field = apply_filters("acf/load_field/name={$field['name']}", $field); $field = apply_filters("acf/load_field/key={$field['key']}", $field); } // set cache wp_cache_set($cache_key, $field, 'acf'); // return return $field; }