acf_update_field()
acf_update_field
Updates a field in the database.
Хуки из функции
Возвращает
Массив
.
Использование
acf_update_field( $field, $specific );
- $field(массив) (обязательный)
- The field array.
- $specific(массив)
- An array of specific field attributes to update.
По умолчанию: array()
Список изменений
С версии 5.7.10 | Введена. |
Код acf_update_field() acf update field ACF 6.0.4
function acf_update_field( $field, $specific = array() ) { // Validate field. $field = acf_validate_field( $field ); // May have been posted. Remove slashes. $field = wp_unslash( $field ); // Parse types (converts string '0' to int 0). $field = acf_parse_types( $field ); // Clean up conditional logic keys. if ( $field['conditional_logic'] ) { // Remove empty values and convert to associated array. $field['conditional_logic'] = array_filter( $field['conditional_logic'] ); $field['conditional_logic'] = array_values( $field['conditional_logic'] ); $field['conditional_logic'] = array_map( 'array_filter', $field['conditional_logic'] ); $field['conditional_logic'] = array_map( 'array_values', $field['conditional_logic'] ); } // Parent may be provided as a field key. if ( $field['parent'] && ! is_numeric( $field['parent'] ) ) { $parent = acf_get_field_post( $field['parent'] ); $field['parent'] = $parent ? $parent->ID : 0; } /** * Filters the $field array before it is updated. * * @date 12/02/2014 * @since 5.0.0 * * @param array $field The field array. */ $field = apply_filters( 'acf/update_field', $field ); // Make a backup of field data and remove some args. $_field = $field; acf_extract_vars( $_field, array( 'ID', 'key', 'label', 'name', 'prefix', 'value', 'menu_order', 'id', 'class', 'parent', '_name', '_prepare', '_valid' ) ); // Create array of data to save. $save = array( 'ID' => $field['ID'], 'post_status' => 'publish', 'post_type' => 'acf-field', 'post_title' => $field['label'], 'post_name' => $field['key'], 'post_excerpt' => $field['name'], 'post_content' => maybe_serialize( $_field ), 'post_parent' => $field['parent'], 'menu_order' => $field['menu_order'], ); // Reduce save data if specific key list is provided. if ( $specific ) { $specific[] = 'ID'; $save = acf_get_sub_array( $save, $specific ); } // Unhook wp_targeted_link_rel() filter from WP 5.1 corrupting serialized data. remove_filter( 'content_save_pre', 'wp_targeted_link_rel' ); // Slash data. // WP expects all data to be slashed and will unslash it (fixes '\' character issues). $save = wp_slash( $save ); // Update or Insert. if ( $field['ID'] ) { wp_update_post( $save ); } else { $field['ID'] = wp_insert_post( $save ); } // Flush field cache. acf_flush_field_cache( $field ); /** * Fires after a field has been updated, and the field cache has been cleaned. * * @date 24/1/19 * @since 5.7.10 * * @param array $field The field array. */ do_action( 'acf/updated_field', $field ); // Return field. return $field; }