* P* 0* `* * * @Ę* đÝ* @Ö* * ŕ* ŕé* í* `á* Ŕ* Ô* ŕ* * °č* @é* Đč* 0é* ŕč* * * @Ę* đÝ* Ů* * ŕ* ŕé* `ď* ç* Ŕ* @Ô* đŕ* * °č* @é* Đč* đč* ŕč* * * @Ę* đÝ* Ü* * ŕ* ŕé* ŕň* @č* Ŕ* @Ô* ŕ* * °č* @é* Đč* 0é* ŕč* * * @Ę* ~* Ŕu* [* ĐX* `* í* * Ŕ* Ô* ŕ* °* °č* @é* Đč* 0é* ŕč* * * @Ę* ~* p|* [* ĐX* `* í* * Ŕ* @Ô* ŕ* °* °č* @é* Đč* đč* ŕč* * * @Ę* ~* Đ}* [* ĐX* `* í* * Ŕ* @Ô* ŕ* °* °č* @é* Đč* 0é* ŕč* * * @Ę* đÝ* @Ö* * ŕ* ŕé* `* p* Ŕ* Ô* ŕ* * `* * Đ* 0* `* * * @Ę* đÝ* @Ö* * ŕ* ŕé* `* `á* Ŕ* Ô* ŕ* * °č* @é* Đč* P)* ŕč* * * đŁ* Ŕ#* Ŕ%* * (* * `* @&* Ŕ* ŕ* Ł* 0
* p* * P* 0* `* * * * ŕl* o* [* r* đ[* 0c* o* Ŕ* ŕ* * _* p* * P* 0* `* * * 0ł
* Ŕ´
* pŘ* Ú* ˙˙˙ p^* Xy* Ž* ˙˙˙ Xy* p^* @Š* * Ŕ* * p* @ź* Ś pü Čł* őţ˙o ő* Ŕm* ŕE*
p p p Đ p Ű* ¸ Ř* Č* ü˙˙o Ř^ ý˙˙o ) ű˙˙o ţ˙˙o d ˙˙˙o đ˙˙o 0ö* $ "* # % @) @* * `j* Ŕ8* a* * * P\* Ŕ0* 9* ş* @F* Đ8* ˝* ŕ_Ľ* Ŕ* i* @* 0O* @f* * 0ŘĽ* Ś* a* @3* _* pj* P˘¤* 0Y* °* °/* O* @z* ş* đĄ¤* @I* * P>Ś* * pC* ]* PçĽ* * 9* Ż* Đ0Ľ* Ŕ@* Đ8* pŐĽ* °8* ěĽ* ˘* C* ľ* ¤¤* ŕ`* ĐŇĽ* đҤ* P[* =Ś* @* Čţ˙˙˙˙˙˙Ŕţ˙˙˙˙˙˙čţ˙˙˙˙˙˙Řţ˙˙˙˙˙˙ŕţ˙˙˙˙˙˙ôţ˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙ Č * Xó* ¨ţ˙˙˙˙˙˙Pć* ¸ţ˙˙˙˙˙˙8` * x
¨* ţ˙˙˙˙˙˙@` * 0* @U * Č * ¨ö* @ć* Dâ* đţ˙˙˙˙˙˙T * p] * 0` * xó* ŕ* H
¨* ŕô* đb * hć* Đ] * ö* â* @
¨* É *
¨* °b * ŕČ * (ă* Hâ* ŕč* pó* Hć* Ě] * @â* `ć* `ú* hS * ů* b * 0§
* @Č * Đţ˙˙˙˙˙˙°ö* `S * Xć* ţ˙˙˙˙˙˙Ŕő* `ó* Č] * f * xÉ * ¨* pó* Ç* X] * čâ* Č * xó* ¸b * ŕT * ţ˙˙˙˙˙˙P* °ţ˙˙˙˙˙˙
} 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".
)
);
}
}
}