跳转到主要内容

acf/schema/block_field_objects

Filter field objects before processing for a block.

Description

This filter allows you to modify or replace the field objects that are processed for JSON-LD output on ACF blocks. Return a non-null value to override the default field retrieval.

Changelog

  • Added in version 6.8.0

Parameters

apply_filters( 'acf/schema/block_field_objects', $field_objects, $block, $block_type, $post_id );
  • $field_objects (array|null) Field objects array, or null to use default retrieval
  • $block (array) The block props array
  • $block_type (array) The registered block type settings
  • $post_id (int) The post ID where the block appears

Return

(array|null) Modified field objects array, or null to use default behavior.

Example

This example adds computed fields to a recipe block.

/**
 * Add computed fields to recipe block JSON-LD.
 *
 * @param array|null $field_objects The field objects array.
 * @param array      $block         The block props.
 * @param array      $block_type    The block type settings.
 * @param int        $post_id       The post ID.
 * @return array Modified field objects.
 */
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();
    }

    // Calculate total time from block data
    $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 );