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 );