Обзор
Фильтрует значение поля перед применением стандартного форматирования.
Описание
Этот фильтр позволяет изменять или заменять значения полей до того, как ACF применит стандартное форматирование JSON-LD. Верните значение, отличное от null, чтобы полностью обойти стандартное форматирование.
Журнал изменений
- Добавлено в версии 6.8.0
Параметры
apply_filters( 'acf/schema/format_value/pre', $pre_value, $value, $field_object, $field_type );
$pre_value(mixed) Предварительно отформатированное значение или null, чтобы использовать форматирование по умолчанию$value(mixed) Исходное значение поля$field_object(array) Объект поля с настройками$field_type(string) Название типа поля
Возвращаемое значение
(mixed|null) Предварительно отформатированное значение или null, чтобы использовать форматирование по умолчанию.
Пример
В этом примере показано пользовательское форматирование длительности.
/**
* Пользовательское форматирование длительности ISO 8601.
*
* @param mixed $pre_value Предварительно отформатированное значение или null.
* @param mixed $value Исходное значение.
* @param array $field_object Объект поля.
* @param string $field_type Тип поля.
* @return mixed Предварительно отформатированное значение или null.
*/
function my_acf_schema_duration_format( $pre_value, $value, $field_object, $field_type ) {
$property = $field_object['schema_property'] ?? '';
// Обработка свойств длительности
$duration_properties = array( 'prepTime', 'cookTime', 'totalTime', 'duration' );
if ( in_array( $property, $duration_properties, true ) && is_numeric( $value ) ) {
$hours = floor( $value / 60 );
$minutes = $value % 60;
if ( $hours > 0 && $minutes > 0 ) {
return sprintf( 'PT%dH%dM', $hours, $minutes );
} elseif ( $hours > 0 ) {
return sprintf( 'PT%dH', $hours );
} else {
return sprintf( 'PT%dM', $minutes );
}
}
return $pre_value; // Использовать форматирование по умолчанию
}
add_filter( 'acf/schema/format_value/pre', 'my_acf_schema_duration_format', 10, 4 );
В этом примере обрабатывается пользовательское форматирование дат.
/**
* Пользовательское форматирование дат для событий.
*
* @param mixed $pre_value Предварительно отформатированное значение или null.
* @param mixed $value Исходное значение.
* @param array $field_object Объект поля.
* @param string $field_type Тип поля.
* @return mixed Предварительно отформатированное значение или null.
*/
function my_acf_schema_event_dates( $pre_value, $value, $field_object, $field_type ) {
$property = $field_object['schema_property'] ?? '';
// Форматирование дат событий с часовым поясом
if ( in_array( $property, array( 'startDate', 'endDate' ), true ) && $value ) {
$timestamp = strtotime( $value );
if ( $timestamp ) {
return date( 'c', $timestamp ); // ISO 8601 с часовым поясом
}
}
return $pre_value;
}
add_filter( 'acf/schema/format_value/pre', 'my_acf_schema_event_dates', 10, 4 );
Обновлено: 02.06.2026