Обзор
Выводите структурированные данные Schema.org из полей ACF Block.
Описание
ACF Blocks могут автоматически выводить структурированные данные JSON-LD для значений своих полей. Это помогает получать расширенные сниппеты и улучшает обнаруживаемость блокового контента для ИИ.
Требования
- ACF 6.8 или новее
- Включённая функция Schema через
add_filter( 'acf/settings/enable_schema', '__return_true' );
Настройка
Через block.json
Добавьте свойства autoJsonLd и необязательное schemaType в пространство имён acf:
{
"name": "acf/recipe-card",
"title": "Карточка рецепта",
"category": "formatting",
"acf": {
"mode": "preview",
"autoJsonLd": true,
"schemaType": "Recipe"
}
}
Через программную регистрацию
Используйте массив acf при регистрации блока:
acf_register_block_type( array(
'name' => 'recipe-card',
'title' => __( 'Карточка рецепта' ),
'category' => 'formatting',
'acf' => array(
'autoJsonLd' => true,
'schemaType' => 'Recipe',
),
'render_template' => 'blocks/recipe-card.php',
));
Свойства
autoJsonLd
(boolean) Включает вывод JSON-LD для этого блока. По умолчанию: false
schemaType
(string|array) Тип(ы) Schema.org для блока. Необязательно; ACF может автоматически определить их по сопоставлениям полей. Может быть один тип или массив типов.
Сопоставление полей
Сопоставьте поля блока со свойствами Schema.org в редакторе группы полей:
- Отредактируйте группу полей, назначенную блоку
- Для каждого поля задайте настройку Schema.org Property
- Сопоставленные значения появятся в JSON-LD выводе блока
Вывод
JSON-LD выводится встроенно для каждого экземпляра блока на фронтенде:
<!-- wp:acf/recipe-card -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Recipe",
"name": "Печенье с шоколадной крошкой",
"prepTime": "PT15M",
"cookTime": "PT12M"
}
</script>
<div class="wp-block-acf-recipe-card">
<!-- Содержимое блока -->
</div>
<!-- /wp:acf/recipe-card -->
Несколько блоков
Каждый экземпляр блока выводит собственный скрипт JSON-LD. Если на странице несколько блоков одного типа, каждый получает отдельный объект структурированных данных.
Фильтры
Включить JSON-LD для определённых блоков
add_filter( 'acf/ai/block_jsonld_enabled', function( $enabled, $block ) {
// Включить для определённого блока
if ( $block['name'] === 'acf/my-block' ) {
return true;
}
return $enabled;
}, 10, 2 );
Изменение данных JSON-LD блока
add_filter( 'acf/schema/block_jsonld_data', function( $data, $block, $post_id ) {
// Добавить пользовательские свойства
$data['custom'] = 'value';
return $data;
}, 10, 3 );
Пример: Блок рецепта
block.json:
{
"name": "acf/recipe",
"title": "Рецепт",
"acf": {
"autoJsonLd": true,
"schemaType": "Recipe"
}
}
Сопоставления полей:
– Название рецепта → name
– Описание → description
– Время подготовки (минуты) → prepTime (формат Duration)
– Время приготовления (минуты) → cookTime (формат Duration)
– Порции → recipeYield
– Ингредиенты (повторитель) → recipeIngredient
– Инструкции (повторитель) → recipeInstructions
Вывод:
{
"@context": "https://schema.org",
"@type": "Recipe",
"name": "Печенье с шоколадной крошкой",
"description": "Классическое домашнее печенье",
"prepTime": "PT15M",
"cookTime": "PT12M",
"recipeYield": "24 печенья",
"recipeIngredient": [
"2 чашки муки",
"1 чашка сахара",
"1 чашка шоколадной крошки"
],
"recipeInstructions": [
{
"@type": "HowToStep",
"text": "Разогрейте духовку до 350°F"
},
{
"@type": "HowToStep",
"text": "Смешайте сухие ингредиенты"
}
]
}
Примечания
- JSON-LD не выводится в предпросмотре редактора блоков
- Пустые значения полей автоматически исключаются
- JSON-LD блока выводится встроенно вместе с блоком, а не в
<head> - Несколько блоков на странице получают каждый свой скрипт JSON-LD
schemaTypeнеобязателен, если поля сопоставлены; ACF определяет тип автоматически
Обновлено: 01.06.2026