array( 'Article', 'NewsArticle', 'BlogPosting', 'TechArticle', 'ScholarlyArticle' ), 'NewsArticle' => array( 'Article', 'NewsArticle', 'BlogPosting' ), 'BlogPosting' => array( 'Article', 'NewsArticle', 'BlogPosting' ), 'Product' => array( 'Product' ), 'Recipe' => array( 'Recipe' ), 'Event' => array( 'Event' ), 'LocalBusiness' => array( 'LocalBusiness', 'Organization' ), 'Organization' => array( 'Organization' ), 'Person' => array( 'Person' ), 'FAQPage' => array( 'FAQPage' ), 'HowTo' => array( 'HowTo' ), 'Review' => array( 'Review' ), 'Course' => array( 'Course' ), 'VideoObject' => array( 'VideoObject' ), 'ImageObject' => array( 'ImageObject' ), 'BreadcrumbList' => array( 'BreadcrumbList' ), 'Service' => array( 'Service' ), ); /** * Types that Rank Math should keep unless Schema AI explicitly provides them. * * @var array */ private $protected_types = array( 'WebSite', 'WebPage', 'BreadcrumbList', 'SearchAction', 'CollectionPage', 'ProfilePage' ); /** * Suppress all Rank Math JSON-LD output when Schema AI is active. * * Handles the main `rank_math/json_ld` filter which covers Rank Math's * head-level schema graph output. * * @param array $data Associative array of schema pieces. * @param object $jsonld The Rank Math JsonLD object instance. * @return array Empty array — Schema AI owns all schema output. */ public function filter_rank_math_schema( $data, $jsonld ) { return array(); } /** * Strip any JSON-LD script blocks injected into post content. * * Rank Math's FAQ block (both Gutenberg and its Elementor integration) * can render