ACF: фильтр acf/update_value для нормализации значения
Модификация значения поля перед сохранением через acf/update_value. Без побочных записей в БД. По документации ACF.
Как использовать
- Добавьте в тему (functions.php) или плагин. Замените my_field на имя поля (name). В фильтре только возвращайте новое значение, не вызывайте update_field().
Фильтр acf/update_value вызывается перед записью значения поля в БД. В нём нужно только вернуть изменённое значение; вызовы update_field() или update_post_meta() внутри фильтра приводят к рекурсии и нестабильному сохранению. Для побочной записи других полей используйте хук acf/save_post.
Нормализация строки (trim)
add_filter('acf/update_value/name=my_field', function ($value, $post_id, $field) {
return is_string($value) ? trim($value) : $value;
}, 10, 3);
$value— значение, которое ACF собирается записать; возвращённое значение будет сохранено.- Не возвращайте
nullдля обычного поля, если не хотите очистить его: пустая строка или скорректированное значение.
Именованный фильтр для одного типа поля
add_filter('acf/update_value/name=my_field', 'my_acf_normalize_my_field', 10, 3);
function my_acf_normalize_my_field($value, $post_id, $field) {
if (!is_string($value)) {
return $value;
}
$value = trim($value);
return $value === '' ? $value : mb_convert_case($value, MB_CASE_TITLE, 'UTF-8');
}
- Нормализация (trim, регистр) — допустимо; запись в другие meta или вызов
update_field()— только вacf/save_post.
Подробнее: WordPress: ACF поле не сохраняется — чиним запись meta.