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]; }
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; }
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); }
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; }