Обзор
Фильтрует объекты полей перед обработкой записи.
Описание
Этот фильтр позволяет вам изменять или заменять объекты полей, которые обрабатываются для вывода JSON-LD в записях. Верните ненулевое значение, чтобы переопределить стандартное получение полей через get_field_objects().
Это полезно для добавления собственных источников данных, исключения определенных полей или предоставления данных полей из альтернативных источников.
Журнал изменений
- Добавлено в версии 6.8.0
Параметры
apply_filters( 'acf/schema/post_field_objects', $field_objects, $post, $post_type );
$field_objects(array|null) Массив объектов полей или null, чтобы использовать стандартное получение$post(WP_Post) Объект записи$post_type(string) Имя типа записи
Возвращаемое значение
(array|null) Измененный массив объектов полей или null, чтобы использовать поведение по умолчанию.
Пример
В этом примере добавляется виртуальное поле для вычисляемых данных.
/**
* Добавить вычисляемое поле в вывод JSON-LD.
*
* @param array|null $field_objects Массив объектов полей.
* @param WP_Post $post Объект записи.
* @param string $post_type Тип записи.
* @return array Измененные объекты полей.
*/
function my_acf_schema_add_calculated_field( $field_objects, $post, $post_type ) {
// Получить стандартные объекты полей, если они еще не заданы
if ( null === $field_objects ) {
$field_objects = get_field_objects( $post->ID, false );
}
if ( ! is_array( $field_objects ) ) {
$field_objects = array();
}
// Добавить вычисляемое общее время для рецептов
if ( $post_type === 'recipe' ) {
$prep_time = get_field( 'prep_time', $post->ID );
$cook_time = get_field( 'cook_time', $post->ID );
$field_objects['total_time'] = array(
'value' => $prep_time + $cook_time,
'schema_property' => 'totalTime',
'type' => 'number',
);
}
return $field_objects;
}
add_filter( 'acf/schema/post_field_objects', 'my_acf_schema_add_calculated_field', 10, 3 );
В этом примере исключаются определенные поля из вывода JSON-LD.
/**
* Исключить внутренние поля из вывода JSON-LD.
*
* @param array|null $field_objects Массив объектов полей.
* @param WP_Post $post Объект записи.
* @param string $post_type Тип записи.
* @return array Измененные объекты полей.
*/
function my_acf_schema_exclude_internal_fields( $field_objects, $post, $post_type ) {
if ( null === $field_objects ) {
$field_objects = get_field_objects( $post->ID, false );
}
if ( ! is_array( $field_objects ) ) {
return $field_objects;
}
// Удалить поля, начинающиеся с подчеркивания
foreach ( $field_objects as $key => $field ) {
if ( strpos( $key, '_' ) === 0 ) {
unset( $field_objects[ $key ] );
}
}
return $field_objects;
}
add_filter( 'acf/schema/post_field_objects', 'my_acf_schema_exclude_internal_fields', 10, 3 );
Обновлено: 02.06.2026