acf_rest_sanitize_user_data()
Replaces formatted User field data with REST-safe values based on the field definition.
Recurses into Group, Clone, Repeater, and Flexible Content containers so nested User fields are handled the same way as top-level User fields.
No Hooks.
Returns
Mixed.
Usage
acf_rest_sanitize_user_data( $formatted_value, $raw_value, $field );
- $formatted_value(mixed) (required)
- The formatted field value.
- $raw_value(mixed) (required)
- The raw field value.
- $field(array) (required)
- The field array.
Changelog
| Since 6.8.7 | Introduced. |
acf_rest_sanitize_user_data() acf rest sanitize user data code ACF 6.8.8
function acf_rest_sanitize_user_data( $formatted_value, $raw_value, $field ) {
if ( empty( $field['type'] ) ) {
return $formatted_value;
}
if ( 'user' === $field['type'] ) {
if ( ! $formatted_value ) {
return $formatted_value;
}
if ( ! empty( $field['multiple'] ) && is_array( $formatted_value ) ) {
$user_ids = array();
foreach ( $formatted_value as $user ) {
$user_ids[] = acf_idval( $user );
}
return $user_ids;
}
return acf_idval( $formatted_value );
}
if ( ! is_array( $formatted_value ) ) {
return $formatted_value;
}
$is_clone = 'clone' === $field['type'];
$is_group = 'group' === $field['type'];
if ( $is_group || $is_clone ) {
$output_property = $is_clone ? '__name' : '_name';
return acf_rest_sanitize_user_sub_fields(
$formatted_value,
$raw_value,
$field['sub_fields'] ?? array(),
$output_property
);
}
if ( 'repeater' === $field['type'] ) {
$raw_value = is_array( $raw_value ) ? $raw_value : array();
foreach ( $formatted_value as $row_index => $formatted_row ) {
$raw_row = array_key_exists( $row_index, $raw_value ) ? $raw_value[ $row_index ] : array();
$formatted_value[ $row_index ] = acf_rest_sanitize_user_sub_fields(
$formatted_row,
$raw_row,
$field['sub_fields'] ?? array(),
'_name'
);
}
return $formatted_value;
}
if ( 'flexible_content' === $field['type'] ) {
$raw_value = is_array( $raw_value ) ? $raw_value : array();
foreach ( $formatted_value as $row_index => $formatted_row ) {
if ( ! is_array( $formatted_row ) ) {
continue;
}
$raw_row = array_key_exists( $row_index, $raw_value ) && is_array( $raw_value[ $row_index ] )
? $raw_value[ $row_index ]
: array();
$layout_name = $formatted_row['acf_fc_layout'] ?? $raw_row['acf_fc_layout'] ?? '';
foreach ( $field['layouts'] ?? array() as $layout ) {
if ( ! isset( $layout['name'] ) || $layout_name !== $layout['name'] ) {
continue;
}
$formatted_value[ $row_index ] = acf_rest_sanitize_user_sub_fields(
$formatted_row,
$raw_row,
$layout['sub_fields'] ?? array(),
'_name'
);
break;
}
}
}
return $formatted_value;
}