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.4.2
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;
}