option = $option; } /** * Subscribed events. */ public static function get_subscribed_events() { if ( ! function_exists( 'the_seo_framework' ) ) { return []; } $tsf = the_seo_framework(); // Either TSF < 3.1, or the plugin's silenced (soft-disabled) via a drop-in. if ( empty( $tsf->loaded ) ) { return []; } /** * 1. Performs option & other checks. * 2. Checks for conflicting sitemap plugins that might prevent loading. * * These methods cache their output at runtime. * * @link https://github.com/wp-media/wp-rocket/issues/899 */ if ( ! $tsf->can_run_sitemap() ) { return []; } return [ 'rocket_sitemap_preload_list' => [ 'add_tsf_sitemap_to_preload', 15 ], ]; } /** * Adds TSF sitemap URLs to preload. * * @param array $sitemaps Sitemaps to preload. * @return array Updated Sitemaps to preload */ public function add_tsf_sitemap_to_preload( $sitemaps ) { // The autoloader in TSF doesn't check for file_exists(). So, use version compare instead to prevent fatal errors. if ( version_compare( rocket_get_constant( 'THE_SEO_FRAMEWORK_VERSION', false ), '4.0', '>=' ) ) { // TSF 4.0+. Expect the class to exist indefinitely. $sitemap_bridge = Sitemap::get_instance(); foreach ( $sitemap_bridge->get_sitemap_endpoint_list() as $id => $data ) { // When the sitemap is good enough for a robots display, we determine it as valid for precaching. // Non-robots display types are among the stylesheet endpoint, or the Yoast SEO-compatible endpoint. // In other words, this enables support for ALL current and future public sitemap endpoints. if ( ! empty( $data['robots'] ) ) { $sitemaps[] = $sitemap_bridge->get_expected_sitemap_endpoint_url( $id ); } } } else { // Deprecated. TSF <4.0. $sitemaps[] = the_seo_framework()->get_sitemap_xml_url(); } return $sitemaps; } }