diff --git src/wp-includes/sitemaps.php src/wp-includes/sitemaps.php
index 8678993dbd..9600540156 100644
|
|
|
|
| 17 | 17 | * |
| 18 | 18 | * @global WP_Sitemaps $wp_sitemaps Global Core Sitemaps instance. |
| 19 | 19 | * |
| 20 | | * @return WP_Sitemaps|null Sitemaps instance, or null if sitemaps are disabled. |
| | 20 | * @return WP_Sitemaps Sitemaps instance. |
| 21 | 21 | */ |
| 22 | 22 | function wp_sitemaps_get_server() { |
| 23 | 23 | global $wp_sitemaps; |
| 24 | 24 | |
| 25 | 25 | $is_enabled = (bool) get_option( 'blog_public' ); |
| 26 | 26 | |
| 27 | | /** |
| 28 | | * Filters whether XML Sitemaps are enabled or not. |
| 29 | | * |
| 30 | | * @since 5.5.0 |
| 31 | | * |
| 32 | | * @param bool $is_enabled Whether XML Sitemaps are enabled or not. Defaults to true for public sites. |
| 33 | | */ |
| 34 | | $is_enabled = (bool) apply_filters( 'wp_sitemaps_enabled', $is_enabled ); |
| 35 | | |
| 36 | | if ( ! $is_enabled ) { |
| 37 | | return null; |
| 38 | | } |
| 39 | | |
| 40 | 27 | // If there isn't a global instance, set and bootstrap the sitemaps system. |
| 41 | 28 | if ( empty( $wp_sitemaps ) ) { |
| 42 | 29 | $wp_sitemaps = new WP_Sitemaps(); |
diff --git src/wp-includes/sitemaps/class-wp-sitemaps.php src/wp-includes/sitemaps/class-wp-sitemaps.php
index 918220317b..ace568f5a2 100644
|
|
|
class WP_Sitemaps { |
| 56 | 56 | /** |
| 57 | 57 | * Initiates all sitemap functionality. |
| 58 | 58 | * |
| | 59 | * If sitemaps are disabled, only the rewrite rules will be registered |
| | 60 | * by this method, in order to properly send 404s. |
| | 61 | * |
| 59 | 62 | * @since 5.5.0 |
| 60 | 63 | */ |
| 61 | 64 | public function init() { |
| 62 | 65 | // These will all fire on the init hook. |
| 63 | 66 | $this->register_rewrites(); |
| | 67 | |
| | 68 | add_action( 'template_redirect', array( $this, 'render_sitemaps' ) ); |
| | 69 | |
| | 70 | if ( ! $this->sitemaps_enabled() ) { |
| | 71 | return; |
| | 72 | } |
| | 73 | |
| 64 | 74 | $this->register_sitemaps(); |
| 65 | 75 | |
| 66 | 76 | // Add additional action callbacks. |
| 67 | | add_action( 'template_redirect', array( $this, 'render_sitemaps' ) ); |
| 68 | 77 | add_filter( 'pre_handle_404', array( $this, 'redirect_sitemapxml' ), 10, 2 ); |
| 69 | 78 | add_filter( 'robots_txt', array( $this, 'add_robots' ), 0, 2 ); |
| 70 | 79 | } |
| 71 | 80 | |
| | 81 | /** |
| | 82 | * Determines whether sitemaps are enabled or not. |
| | 83 | * |
| | 84 | * @since 5.5.0 |
| | 85 | * |
| | 86 | * @return bool Whether sitemaps are enabled. |
| | 87 | */ |
| | 88 | public function sitemaps_enabled() { |
| | 89 | $is_enabled = (bool) get_option( 'blog_public' ); |
| | 90 | |
| | 91 | /** |
| | 92 | * Filters whether XML Sitemaps are enabled or not. |
| | 93 | * |
| | 94 | * @since 5.5.0 |
| | 95 | * |
| | 96 | * @param bool $is_enabled Whether XML Sitemaps are enabled or not. Defaults to true for public sites. |
| | 97 | */ |
| | 98 | return (bool) apply_filters( 'wp_sitemaps_enabled', $is_enabled ); |
| | 99 | } |
| | 100 | |
| 72 | 101 | /** |
| 73 | 102 | * Registers and sets up the functionality for all supported sitemaps. |
| 74 | 103 | * |
| … |
… |
class WP_Sitemaps { |
| 143 | 172 | * @global WP_Query $wp_query WordPress Query object. |
| 144 | 173 | */ |
| 145 | 174 | public function render_sitemaps() { |
| | 175 | /* @var WP_Query $wp_query */ |
| 146 | 176 | global $wp_query; |
| 147 | 177 | |
| 148 | 178 | $sitemap = sanitize_text_field( get_query_var( 'sitemap' ) ); |
| … |
… |
class WP_Sitemaps { |
| 155 | 185 | return; |
| 156 | 186 | } |
| 157 | 187 | |
| | 188 | if ( ! $this->sitemaps_enabled() ) { |
| | 189 | $wp_query->set_404(); |
| | 190 | status_header( 404 ); |
| | 191 | return; |
| | 192 | } |
| | 193 | |
| 158 | 194 | // Render stylesheet if this is stylesheet route. |
| 159 | 195 | if ( $stylesheet_type ) { |
| 160 | 196 | $stylesheet = new WP_Sitemaps_Stylesheet(); |
| … |
… |
class WP_Sitemaps { |
| 186 | 222 | // Force a 404 and bail early if no URLs are present. |
| 187 | 223 | if ( empty( $url_list ) ) { |
| 188 | 224 | $wp_query->set_404(); |
| | 225 | status_header( 404 ); |
| 189 | 226 | return; |
| 190 | 227 | } |
| 191 | 228 | |