@μ 2xY+U0μ { U μ yI#е Uμ ZHy` Uμ 2&: Uͼ  Uͼ ? 0Uռ QY> Uռ psw@ Upռ QY A U`ռ .vfrA UPռ G< !PB U@ռ BgIpB U0ռ 5v$pC U ռ ҄CnwD Uռ bрD Uռ lj<E UԼ r;p UԼ wk˛E UԼ Ϡ*o!TF UԼ bwO;F UԼ hSPG UԼ Q/6wG UԼ )fPH UԼ 2M U`X@ S UU U;;@`&]U0U mUпU0U Upܥ=U޼{a UwUsUiU7ۈt{ 0@sU`wU7ۈ{ 07~IUU _@ribute UxUsUpxU7ۈ0{p PG~IUBR@ UyUsUpyU7ۈp{p p\cIUBQBsN@ PU _zU7ۈ㣖{p ~IU@R@6@ PU _{U7ۈ{ UБU@QBR@6@@!p@sU|U7ۈ{P~IU@R@yU0~UsU}U7ۈ{p ~IU@QBsN@a PU _U7ۈ`{p7 ~IU R@RRAPU _0U7ۈ{ } else { _doing_it_wrong( __METHOD__, sprintf( /* translators: %s: List of element names. */ __( 'Fields other than %s are not currently supported for the sitemap index.' ), implode( ',', array( 'loc', 'lastmod' ) ) ), '5.5.0' ); } } } return $sitemap_index->asXML(); } /** * Renders a sitemap. * * @since 5.5.0 * * @param array $url_list Array of URLs for a sitemap. */ public function render_sitemap( $url_list ) { header( 'Content-type: application/xml; charset=UTF-8' ); $this->check_for_simple_xml_availability(); $sitemap_xml = $this->get_sitemap_xml( $url_list ); if ( ! empty( $sitemap_xml ) ) { // All output is escaped within get_sitemap_xml(). // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped echo $sitemap_xml; } } /** * Gets XML for a sitemap. * * @since 5.5.0 * * @param array $url_list Array of URLs for a sitemap. * @return string|false A well-formed XML string for a sitemap index. False on error. */ public function get_sitemap_xml( $url_list ) { $urlset = new SimpleXMLElement( sprintf( '%1$s%2$s%3$s', '', $this->stylesheet, '' ) ); foreach ( $url_list as $url_item ) { $url = $urlset->addChild( 'url' ); // Add each element as a child node to the entry. foreach ( $url_item as $name => $value ) { if ( 'loc' === $name ) { $url->addChild( $name, esc_url( $value ) ); } elseif ( in_array( $name, array( 'lastmod', 'changefreq', 'priority' ), true ) ) { $url->addChild( $name, esc_xml( $value ) ); } else { _doing_it_wrong( __METHOD__, sprintf( /* translators: %s: List of element names. */ __( 'Fields other than %s are not currently supported for sitemaps.' ), implode( ',', array( 'loc', 'lastmod', 'changefreq', 'priority' ) ) ), '5.5.0' ); } } } return $urlset->asXML(); } /** * Checks for the availability of the SimpleXML extension and errors if missing. * * @since 5.5.0 */ private function check_for_simple_xml_availability() { if ( ! class_exists( 'SimpleXMLElement' ) ) { add_filter( 'wp_die_handler', static function () { return '_xml_wp_die_handler'; } ); wp_die( sprintf( /* translators: %s: SimpleXML */ esc_xml( __( 'Could not generate XML sitemap due to missing %s extension' ) ), 'SimpleXML' ), esc_xml( __( 'WordPress › Error' ) ), array( 'response' => 501, // "Not implemented". ) ); } } }