function get_sub_field_choice_label($selector, $value)
 {
     $row = acf_get_loop('active');
     if (!$row) {
         return NULL;
     }
     $sub_field = get_row_sub_field($selector);
     if (!$sub_field || !isset($sub_field['choices']) || !isset($sub_field['choices'][$value])) {
         return NULL;
     }
     return $sub_field['choices'][$value];
 }
Ejemplo n.º 2
0
function get_sub_field_object($selector, $format_value = true, $load_value = true)
{
    // vars
    $row = acf_get_loop('active');
    // bail early if no row
    if (!$row) {
        return false;
    }
    // attempt to find sub field
    $sub_field = get_row_sub_field($selector);
    // bail early if no sub field
    if (!$sub_field) {
        return false;
    }
    // load value
    if ($load_value) {
        $sub_field['value'] = get_row_sub_value($sub_field['key']);
    }
    // format value
    if ($format_value) {
        // get value for field
        $sub_field['value'] = acf_format_value($sub_field['value'], $row['post_id'], $sub_field);
    }
    // return
    return $sub_field;
}
Ejemplo n.º 3
0
function update_sub_field($selector, $value, $post_id = false)
{
    // filter post_id
    $post_id = acf_get_valid_post_id($post_id);
    // vars
    $field = false;
    // within a have_rows loop
    if (is_string($selector)) {
        // get current row
        $row = acf_get_loop('active');
        // override $post_id
        $post_id = $row['post_id'];
        // attempt to find sub field
        $field = get_row_sub_field($selector);
        // create dummy field
        if (!$field) {
            $field = acf_get_valid_field(array('name' => "{$row['name']}_{$row['i']}_{$selector}", 'key' => '', 'type' => ''));
        }
    } elseif (is_array($selector)) {
        // validate
        if (count($selector) < 3) {
            return false;
        }
        // vars
        $parent_name = acf_extract_var($selector, 0);
        // load parent
        $field = acf_maybe_get_field($parent_name, $post_id);
        // add to name
        $name = $field['name'];
        // sub fields
        foreach ($selector as $s) {
            if (is_numeric($s)) {
                // get row index
                $row_i = intval($s) - 1;
                // add to name
                $name .= "_{$row_i}";
            } else {
                // update parent
                $field = acf_get_sub_field($s, $field);
                // create dummy field
                if (!$field) {
                    $field = acf_get_valid_field(array('name' => $s, 'key' => '', 'type' => ''));
                }
                // add to name
                $name .= "_{$field['name']}";
            }
            // if
        }
        // foreach
        // update name
        $field['name'] = $name;
    }
    // delete
    if ($value === null) {
        return acf_delete_value($post_id, $field);
    }
    // update
    return acf_update_value($value, $post_id, $field);
}
Ejemplo n.º 4
0
 public static function acf_get_row()
 {
     global $acf;
     if ($acf and version_compare($acf->settings['version'], '5.3.6.0') >= 0) {
         return acf_get_loop('active');
     } elseif (!empty($GLOBALS['acf_field'])) {
         return end($GLOBALS['acf_field']);
     }
     // return
     return false;
 }