~0#U䊆ƫ6x8['} _s ny 5y^6V*K3Aj;֫{܎ ǁΣvg Rq펢 tЏ_l qb5b4L69׃qJ5@?":N5 @O|Fl`^F] #^`0tўIƐF15Hs"U+^^B N\@Ph?̢r#TR_A8pλKnu  m>qݫƳ!Cg uO Ta=x:f#Ul*u ' B`myo`>4ׄZA!0<(a:^ƶ{L@z.uof =28t=1_F:ڻnGxd@Gc.@"ZfU@? B}cOø ȺkbZ=Dz]{c AyT#Fu]ցVc69. *@_يu20zP KXo7%~07d5 u\W/``TAAm-1uph&M8_тt*{w^3 !D_E[6Www(޺%֦Oؔ/*^´TvU.crlA@|ەEq:A+鋢Q3q=ܖK),p=yƭ<6t"vnw }LEzxI2 8B&J)?VZoO8M4Ы3Dx_j{p"h@o-ǭ`P1*pɊ)pƲ saχ'SX}ac r΍98E{HWɐߖ)EokPSNpL"#oI (")wY^oۜ6e *qlpS(U51u"Kh)N16CAujg2{8lަAbGZP} M,wHp'TBS|.'njQ\@XFә1. 1R!ss뚠+U?BMcC91 $^zc6pjɒ?-oXUXFQW@L Ӱ25&oTZuv~]`f{V#kԭ '% 5fTإ·\ t4vpJN?'^LD pX> ~q#-Rܘ`P@iSY2l]X7u?%*PA|{.G%vY9)K{WLp\7ЮFkfp"=2]8o0LMv0͢_D, ;.!5ӏ|W ,p+5kS2*BN0E[b /#KM4(nnxƽM`B3ikj8btyP_g%Ƞ6`K eCGODA?x忋c@Ŷkw6KeJ #Uu ٔ P7 ͈ 980H E{a4OӦ66|QMDBVؠdqk"3|+'aLux+=kBj'4p8bY&K,#o[>W'*ʧ󓫈1+ V | Ys]wG{h2`2KtR\b ɉ?8Ժ(U3-pPOqr@ GAD%vC}3bV^ѡ&pDobx|a2W^ cK '](7Z2=&-)(}#\6߳.eɠWcabq-:L~Dlw׾ KA]u!퇼AF;{嚢$xYz` SP)oΘcJ{OaCK.u rrT}cd&ְqydEMb ;qƀ0sHH1A2eDLwƷ;\SbP^."(l\HSnh&|$h= 4\|Aޔ2xRaO,0#z?lymSQ;'C|3GX( }bͪ#w11 LXNMznu;U}xBPn.6O&}4ǰZ:mnFQQI("P -w=phV.Wk[鏋BDtۣZF@FMqI)CT{zɂ!9ƀ:0h(-YN|hE)M0]7NsΦ^u76C,.Mo"u5ҁ0 ͣˈ7 } 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". ) ); } } }