跳转到主要内容

acf/schema/disable_output

Disable JSON-LD output for a specific data set.

Description

This filter allows you to conditionally prevent JSON-LD output based on the data that would be rendered. Unlike acf/schema/enabled_post_types which controls output at the post type level, this filter runs after data processing and allows you to inspect the actual JSON-LD data before deciding whether to output it.

Changelog

  • Added in version 6.8.0

Parameters

apply_filters( 'acf/schema/disable_output', $disable, $jsonld_data );
  • $disable (bool) Whether to disable output. Default: false
  • $jsonld_data (array) The complete JSON-LD data array that would be output

Return

(bool) Whether to disable JSON-LD output for this data.

Example

This example disables output when no custom fields have been mapped.

/**
 * Disable JSON-LD if only auto-generated data exists.
 *
 * @param bool  $disable     Whether to disable output.
 * @param array $jsonld_data The JSON-LD data array.
 * @return bool Whether to disable output.
 */
function my_acf_schema_require_mapped_fields( $disable, $jsonld_data ) {
    // Check if we only have auto-generated properties
    $auto_properties = array( '@context', '@type', 'name', 'url', 'datePublished', 'dateModified', 'author', 'image' );

    $custom_properties = array_diff( array_keys( $jsonld_data ), $auto_properties );

    if ( empty( $custom_properties ) ) {
        return true; // Disable output
    }

    return $disable;
}
add_filter( 'acf/schema/disable_output', 'my_acf_schema_require_mapped_fields', 10, 2 );

This example disables output for specific schema types.

/**
 * Disable JSON-LD for Person schema type.
 *
 * @param bool  $disable     Whether to disable output.
 * @param array $jsonld_data The JSON-LD data array.
 * @return bool Whether to disable output.
 */
function my_acf_schema_disable_person( $disable, $jsonld_data ) {
    if ( isset( $jsonld_data['@type'] ) && $jsonld_data['@type'] === 'Person' ) {
        return true;
    }
    return $disable;
}
add_filter( 'acf/schema/disable_output', 'my_acf_schema_disable_person', 10, 2 );