acf/schema/format_value/pre/name={field_name} — фильтр ACF

Обзор

Предварительно фильтрует значения для конкретного имени поля перед форматированием по умолчанию.

Описание

Этот фильтр — версия acf/schema/format_value/pre, специфичная для имени поля. Он позволяет предварительно обрабатывать значения перед стандартным форматированием ACF, но только для конкретного имени поля.

Динамическая часть имени хука, {field_name}, относится к имени поля ACF.

История изменений

  • Добавлено в версии 6.8.0

Параметры

apply_filters( 'acf/schema/format_value/pre/name={field_name}', $pre_value, $value, $field_object );
  • $pre_value (mixed) Предварительно отформатированное значение из предыдущих фильтров или null
  • $value (mixed) Сырое значение поля
  • $field_object (array) Объект поля с настройками

Возвращаемое значение

(mixed|null) Предварительно отформатированное значение или null, чтобы использовать форматирование по умолчанию.

Пример

В этом примере задается собственное форматирование для конкретного поля даты события.

/**
 * Пользовательское форматирование даты для поля event_date.
 *
 * @param mixed $pre_value    Предварительно отформатированное значение или null.
 * @param mixed $value        Сырое значение (строка даты).
 * @param array $field_object Объект поля.
 * @return mixed Предварительно отформатированное значение или null.
 */
function my_acf_schema_format_event_date( $pre_value, $value, $field_object ) {
    if ( ! $value ) {
        return $pre_value;
    }

    // Преобразовать в ISO 8601 с часовым поясом
    $date = DateTime::createFromFormat( 'Y-m-d H:i:s', $value );
    if ( ! $date ) {
        return $pre_value;
    }

    // Установить часовой пояс из настроек WordPress
    $timezone = wp_timezone();
    $date->setTimezone( $timezone );

    return $date->format( 'c' );
}
add_filter( 'acf/schema/format_value/pre/name=event_date', 'my_acf_schema_format_event_date', 10, 3 );

В этом примере поле product_sku дополняется дополнительными данными о продукте.

/**
 * Дополнить поле product_sku полными данными о продукте.
 *
 * @param mixed $pre_value    Предварительно отформатированное значение или null.
 * @param mixed $value        Сырое значение SKU.
 * @param array $field_object Объект поля.
 * @return mixed Предварительно отформатированное значение или null.
 */
function my_acf_schema_format_product_sku( $pre_value, $value, $field_object ) {
    if ( ! $value ) {
        return $pre_value;
    }

    // Найти продукт по SKU во внешней системе
    $product = my_get_product_by_sku( $value );
    if ( ! $product ) {
        return $value; // Вернуть SKU без изменений
    }

    return array(
        '@type'       => 'Product',
        'sku'         => $value,
        'name'        => $product->name,
        'description' => $product->description,
        'offers'      => array(
            '@type'         => 'Offer',
            'price'         => $product->price,
            'priceCurrency' => 'USD',
        ),
    );
}
add_filter( 'acf/schema/format_value/pre/name=product_sku', 'my_acf_schema_format_product_sku', 10, 3 );

Обновлено: 02.06.2026