acf/update_value
Позволяет изменить значение произвольного поля ACF перед его сохранением в базу данных.
Этот фильтр вызывается при обновлении значения поля ACF и даёт возможность изменить сохраняемое значение. Работает как при сохранении записи, так и при сохранении пользовательских полей через другие интерфейсы.
Фильтр может применяться как глобально для всех полей, так и для конкретного поля или поля с определённым именем.
Вариации этого фильтра
Этот фильтр поддерживает модификаторы, используюя которые можно получить такой же фильтр, только который будет применятся к определённым полям.
Доступны следующие варианты имени фильтра:
acf/update_value— (текущий фильтр) применяется ко всем полям.acf/update_value/type={$type}— применяется ко всем полям определённого типа (например, text, image, repeater).acf/update_value/name={$name}— применяется ко всем полям с определённым именем.acf/update_value/key={$key}— применяется ко всем полям с определённым ключом.
Регистрируются такие вариации хуков функцией acf_add_filter_variations(). См. файл includes/acf-value-functions.php:
Использование
add_filter( 'acf/update_value', 'wp_kama_acf_update_value_filter', 10, 4 );
/**
* Function for `acf/update_value` filter-hook.
*
* @param mixed $value The value to update.
* @param string $post_id The post ID for this value.
* @param array $field The field array.
* @param mixed $original The original value before modification.
*
* @return mixed
*/
function wp_kama_acf_update_value_filter( $value, $post_id, $field, $original ){
// filter...
return $value;
}
- $value(разное)
- Новое значение поля, которое должно быть сохранено.
- $post_id(строка|int)
- ID объекта (пост, пользователь, термин и т.д.), к которому привязано поле.
- $field(массив)
- Массив параметров поля ACF.
- $original(разное)
- Оригинальное значение поля, которое было до любых изменений.
Примеры
#1 Замена текста в значениях всех полей
Применяет фильтр ко всем полям и заменяет строку "Old Company Name" на "New Company Name", если значение — это строка.
add_filter( 'acf/update_value', 'my_acf_update_value', 10, 4 );
function my_acf_update_value( $value, $post_id, $field, $original ) {
if ( is_string( $value ) ) {
$value = str_replace( 'Old Company Name', 'New Company Name', $value );
}
return $value;
}
Вариации хука:
// Применить только к полям типа ``textarea``: add_filter( 'acf/update_value/type=textarea', 'my_acf_update_value', 10, 4 ); // Применить только к полям с именем ``hero_text``: add_filter( 'acf/update_value/name=hero_text', 'my_acf_update_value', 10, 4 ); // Применить только к полю с ключом ``field_123abcf``: add_filter( 'acf/update_value/key=field_123abcf', 'my_acf_update_value', 10, 4 );
Список изменений
| С версии 5.0.0 | Введена. |
Где вызывается хук
$value = apply_filters( 'acf/update_value', $value, $post_id, $field, $value );
