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;
}
Beispiel #3
0
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;
}
Beispiel #4
0
 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;
 }
Beispiel #5
0
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;
}