function acf_maybe_get_field($selector, $post_id = false, $strict = true) { // complete init // this function may be used in a theme file before the init action has been run acf()->init(); // vars $field_name = false; // get valid post_id $post_id = acf_get_valid_post_id($post_id); // load field reference if not a field_key if (!acf_is_field_key($selector)) { // save selector as field_name (could be sub field name) $field_name = $selector; // get reference $field_key = acf_get_field_reference($selector, $post_id); if ($field_key) { $selector = $field_key; } elseif ($strict) { return false; } } // get field key $field = acf_get_field($selector); // bail early if no field if (!$field) { return false; } // Override name - allows the $selector to be a sub field (images_0_image) if ($field_name) { $field['name'] = $field_name; } // return return $field; }
function acf_delete_value($post_id = 0, $key = '') { // vars $field = false; $return = false; // string if (is_string($key)) { // find selector $field = acf_get_field_reference($key, $post_id); // get field key $field = acf_get_field($field); // field } elseif (is_array($key)) { // set vars $field = $key; $key = $field['name']; // bail early if not valid key } else { return false; } // action for 3rd party customization do_action("acf/delete_value", $post_id, $key, $field); if ($field) { do_action("acf/delete_value/type={$field['type']}", $post_id, $key, $field); do_action("acf/delete_value/name={$field['_name']}", $post_id, $key, $field); do_action("acf/delete_value/key={$field['key']}", $post_id, $key, $field); } // post if (is_numeric($post_id)) { $return = delete_metadata('post', $post_id, $key); delete_metadata('post', $post_id, '_' . $key); // user } elseif (strpos($post_id, 'user_') !== false) { $user_id = str_replace('user_', '', $post_id); $return = delete_metadata('user', $user_id, $key); delete_metadata('user', $user_id, '_' . $key); // comment } elseif (strpos($post_id, 'comment_') !== false) { $comment_id = str_replace('comment_', '', $post_id); $return = delete_metadata('comment', $comment_id, $key); delete_metadata('comment', $comment_id, '_' . $key); // option } else { $return = delete_option($post_id . '_' . $key); delete_option('_' . $post_id . '_' . $key); } // clear cache wp_cache_delete("load_value/post_id={$post_id}/name={$key}", 'acf'); // return return $return; }
function get_field_object($selector, $post_id = false, $format_value = true, $load_value = true) { // complete loading acf()->complete(); // compatibilty if (is_array($format_value)) { extract($format_value); } // vars $field_name = false; // get valid post_id $post_id = acf_get_valid_post_id($post_id); // load field reference if not a field_key if (!acf_is_field_key($selector)) { // save selector as field_name (could be sub field name) $field_name = $selector; // get reference $selector = acf_get_field_reference($selector, $post_id); // bail early if no reference for this field if (!$selector) { return false; } } // get field key $field = acf_get_field($selector); // bail early if no field found if (!$field) { return false; } // Override name - allows the $selector to be a sub field (images_0_image) if ($field_name) { $field['name'] = $field_name; } // load value if ($load_value) { $field['value'] = acf_get_value($post_id, $field); } // format value if ($format_value) { // get value for field $field['value'] = acf_format_value($field['value'], $post_id, $field); } // return return $field; }
function is_protected_meta($protected, $meta_key, $meta_type) { // if acf_get_field_reference returns a valid key, this is an acf value, so protect it! if (!$protected) { $reference = acf_get_field_reference($meta_key, $this->post_id); if (acf_is_field_key($reference)) { $protected = true; } } // return return $protected; }
function get_field_object($selector, $post_id = false, $format_value = true, $load_value = true) { // complete loading acf()->complete(); // compatibilty if (is_array($format_value)) { $format_value = acf_parse_args($format_value, array('format_value' => true, 'load_value' => true)); extract($format_value); } // vars $override_name = false; // filter post_id $post_id = acf_get_valid_post_id($post_id); // load field reference if not a field_key if (!acf_is_field_key($selector)) { $override_name = $selector; $reference = acf_get_field_reference($selector, $post_id); if ($reference) { $selector = $reference; } } // get field key $field = acf_get_field($selector); // bail early if no field found if (!$field) { return false; } // override name? // This allows the $selector to be a sub field (images_0_image) if ($override_name) { $field['name'] = $override_name; } // load value if ($load_value) { $field['value'] = acf_get_value($post_id, $field); } // format value if ($format_value) { // get value for field $field['value'] = acf_format_value($field['value'], $post_id, $field); } // return return $field; }