acf/update_valueхук-фильтрACF 5.0.0

Позволяет изменить значение произвольного поля 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(разное)
Оригинальное значение поля, которое было до любых изменений.

Примеры

0

#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 Введена.

Где вызывается хук

acf_update_value()
acf/update_value
acf/includes/acf-value-functions.php 235
$value = apply_filters( 'acf/update_value', $value, $post_id, $field, $value );

Где используется хук в Advanced Custom Fields PRO

Использование не найдено.