ly for the current request so that we don't serve a blank page. $this->doesFileExist(); $options = aioseo()->options->noConflict(); if ( ! $options->sitemap->{aioseo()->sitemap->type}->enable ) { $this->notFoundPage(); return; } $entries = aioseo()->sitemap->content->get(); $total = aioseo()->sitemap->content->getTotal(); if ( ! $entries ) { $addonsEntries = aioseo()->addons->doAddonFunction( 'content', 'get' ); $addonTotals = aioseo()->addons->doAddonFunction( 'content', 'getTotal' ); foreach ( $addonsEntries as $addonSlug => $addonEntries ) { if ( ! empty( $addonEntries ) ) { $entries = $addonEntries; $total = ! empty( $addonTotals[ $addonSlug ] ) ? $addonTotals[ $addonSlug ] : count( $entries ); break; } } } if ( 0 === $total && empty( $entries ) ) { status_header( 404 ); } $this->xsl->saveXslData( aioseo()->sitemap->requestParser->slug, $entries, $total ); $this->headers(); aioseo()->sitemap->output->output( $entries ); aioseo()->addons->doAddonFunction( 'output', 'output', [ $entries ] ); exit; } /** * Checks if static file should be served and generates it if it doesn't exist. * * This essentially acts as a safety net in case a file doesn't exist yet or has been deleted. * * @since 4.0.0 * * @return void */ protected function doesFileExist() { aioseo()->addons->doAddonFunction( 'sitemap', 'doesFileExist' ); if ( 'general' !== $this->type || ! aioseo()->options->sitemap->general->advancedSettings->enable || ! in_array( 'staticSitemap', aioseo()->internalOptions->internal->deprecatedOptions, true ) || aioseo()->options->sitemap->general->advancedSettings->dynamic ) { return; } require_once ABSPATH . 'wp-admin/includes/file.php'; if ( ! aioseo()->core->fs->exists( get_home_path() . $_SERVER['REQUEST_URI'] ) ) { $this->scheduleRegeneration(); } } /** * Sets the HTTP headers for the sitemap. * * @since 4.0.0 * * @return void */ public function headers() { $charset = aioseo()->helpers->getCharset(); header( "Content-Type: text/xml; charset=$charset", true ); header( 'X-Robots-Tag: noindex, follow', true ); } /** * Redirects to a 404 Not Found page if the sitemap is disabled. * * @since 4.0.0 * * @return void */ public function notFoundPage() { global $wp_query; $wp_query->set_404(); status_header( 404 ); include get_404_template(); exit; } /** * Registers an active sitemap addon and its classes. * NOTE: This is deprecated and only there for users who already were using the previous sitemap addons version. * * @final 4.2.7 * @since 4.0.0 * * @return void */ public function addAddon() {} }