acf/schema/block_field_objects — фильтр объектов полей блока

Обзор

Фильтрует объекты полей перед обработкой блока.

Описание

Этот фильтр позволяет изменить или заменить объекты полей, которые обрабатываются для вывода JSON-LD в блоках ACF. Верните значение, отличное от null, чтобы переопределить стандартное получение полей.

Журнал изменений

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

Параметры

apply_filters( 'acf/schema/block_field_objects', $field_objects, $block, $block_type, $post_id );
  • $field_objects (array|null) Массив объектов полей или null для использования стандартного получения
  • $block (array) Массив свойств блока
  • $block_type (array) Настройки зарегистрированного типа блока
  • $post_id (int) ID записи, в которой отображается блок

Возврат

(array|null) Изменённый массив объектов полей или null для использования стандартного поведения.

Пример

В этом примере к блоку рецепта добавляются вычисляемые поля.

/**
 * Добавляет вычисляемые поля в JSON-LD блока рецепта.
 *
 * @param array|null $field_objects Массив объектов полей.
 * @param array      $block         Свойства блока.
 * @param array      $block_type    Настройки типа блока.
 * @param int        $post_id       ID записи.
 * @return array Изменённые объекты полей.
 */
function my_acf_schema_recipe_block_fields( $field_objects, $block, $block_type, $post_id ) {
    if ( $block['name'] !== 'acf/recipe' ) {
        return $field_objects;
    }

    if ( null === $field_objects ) {
        $field_objects = array();
    }

    // Вычисляем общее время на основе данных блока
    $prep_time = $block['data']['prep_time'] ?? 0;
    $cook_time = $block['data']['cook_time'] ?? 0;

    $field_objects['total_time'] = array(
        'value'           => $prep_time + $cook_time,
        'schema_property' => 'totalTime',
        'type'            => 'number',
    );

    return $field_objects;
}
add_filter( 'acf/schema/block_field_objects', 'my_acf_schema_recipe_block_fields', 10, 4 );

Обновлено: 02.06.2026