Фильтр acf/schema/post_field_objects/post_type={post_type}

Обзор

Фильтрует объекты полей для конкретного типа записи.

Описание

Этот фильтр — версия acf/schema/post_field_objects, привязанная к конкретному типу записи. Он позволяет изменять объекты полей только для определённого типа записи, не затрагивая другие типы записей.

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

Изменения

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

Параметры

apply_filters( 'acf/schema/post_field_objects/post_type={post_type}', $field_objects, $post );
  • $field_objects (array|null) Массив объектов полей из предыдущих фильтров
  • $post (WP_Post) Объект записи

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

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

Пример

В этом примере добавляются данные, специфичные для товаров WooCommerce.

/**
 * Добавляет данные товара WooCommerce в JSON-LD.
 *
 * @param array|null $field_objects Массив объектов полей.
 * @param WP_Post    $post          Объект записи.
 * @return array Изменённые объекты полей.
 */
function my_acf_schema_product_fields( $field_objects, $post ) {
    if ( null === $field_objects ) {
        $field_objects = get_field_objects( $post->ID, false );
    }

    if ( ! is_array( $field_objects ) ) {
        $field_objects = array();
    }

    // Получаем товар WooCommerce
    $product = wc_get_product( $post->ID );
    if ( ! $product ) {
        return $field_objects;
    }

    // Добавляем цену как Offer
    $field_objects['wc_price'] = array(
        'value'           => $product->get_price(),
        'schema_property' => 'Offer.price',
        'type'            => 'number',
    );

    $field_objects['wc_currency'] = array(
        'value'           => get_woocommerce_currency(),
        'schema_property' => 'Offer.priceCurrency',
        'type'            => 'text',
    );

    $field_objects['wc_availability'] = array(
        'value'           => $product->is_in_stock() ? 'https://schema.org/InStock' : 'https://schema.org/OutOfStock',
        'schema_property' => 'Offer.availability',
        'type'            => 'url',
    );

    return $field_objects;
}
add_filter( 'acf/schema/post_field_objects/post_type=product', 'my_acf_schema_product_fields', 10, 2 );

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

/**
 * Добавляет вычисляемые поля для рецептов.
 *
 * @param array|null $field_objects Массив объектов полей.
 * @param WP_Post    $post          Объект записи.
 * @return array Изменённые объекты полей.
 */
function my_acf_schema_recipe_fields( $field_objects, $post ) {
    if ( null === $field_objects ) {
        $field_objects = get_field_objects( $post->ID, false );
    }

    if ( ! is_array( $field_objects ) ) {
        $field_objects = array();
    }

    // Добавляем категорию рецепта из таксономии
    $categories = get_the_terms( $post->ID, 'recipe_category' );
    if ( $categories && ! is_wp_error( $categories ) ) {
        $field_objects['recipe_category'] = array(
            'value'           => $categories[0]->name,
            'schema_property' => 'recipeCategory',
            'type'            => 'text',
        );
    }

    return $field_objects;
}
add_filter( 'acf/schema/post_field_objects/post_type=recipe', 'my_acf_schema_recipe_fields', 10, 2 );

Обновлено: 02.06.2026