File "class-wp-sitemaps-renderer.php"
Full path: /home/kosmetik/public_html/wp-includes/sitemaps/class-wp-sitemaps-renderer.php
File
size: 4.15 B
MIME-type: text/x-php
Charset: utf-8
Download Open Edit Advanced Editor Back
<?php
class WP_Sitemaps_Renderer
{
protected $stylesheet = '';
protected $stylesheet_index = '';
public function __construct()
{
$stylesheet_url = $this->get_sitemap_stylesheet_url();
if ($stylesheet_url) {
$this->stylesheet = '<?xml-stylesheet type="text/xsl" href="' . esc_url($stylesheet_url) . '" ?>';
}
$stylesheet_index_url = $this->get_sitemap_index_stylesheet_url();
if ($stylesheet_index_url) {
$this->stylesheet_index = '<?xml-stylesheet type="text/xsl" href="' . esc_url($stylesheet_index_url) . '" ?>';
}
}
public function get_sitemap_stylesheet_url()
{
global $wp_rewrite;
$sitemap_url = home_url('/wp-sitemap.xsl');
if (!$wp_rewrite->using_permalinks()) {
$sitemap_url = home_url('/?sitemap-stylesheet=sitemap');
}
return apply_filters('wp_sitemaps_stylesheet_url', $sitemap_url);
}
public function get_sitemap_index_stylesheet_url()
{
global $wp_rewrite;
$sitemap_url = home_url('/wp-sitemap-index.xsl');
if (!$wp_rewrite->using_permalinks()) {
$sitemap_url = home_url('/?sitemap-stylesheet=index');
}
return apply_filters('wp_sitemaps_stylesheet_index_url', $sitemap_url);
}
public function render_index($sitemaps)
{
header('Content-type: application/xml; charset=UTF-8');
$this->check_for_simple_xml_availability();
$index_xml = $this->get_sitemap_index_xml($sitemaps);
if (!empty($index_xml)) {
echo $index_xml;
}
}
public function get_sitemap_index_xml($sitemaps)
{
$sitemap_index = new SimpleXMLElement(sprintf('%1$s%2$s%3$s', '<?xml version="1.0" encoding="UTF-8" ?>', $this->stylesheet_index, '<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" />'));
foreach ($sitemaps as $entry) {
$sitemap = $sitemap_index->addChild('sitemap');
foreach ($entry as $name => $value) {
if ('loc' === $name) {
$sitemap->addChild($name, esc_url($value));
} elseif ('lastmod' === $name) {
$sitemap->addChild($name, esc_xml($value));
} else {
_doing_it_wrong(__METHOD__, sprintf(__('Fields other than %s are not currently supported for the sitemap index.'), implode(',', array('loc', 'lastmod'))), '5.5.0');
}
}
}
return $sitemap_index->asXML();
}
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)) {
echo $sitemap_xml;
}
}
public function get_sitemap_xml($url_list)
{
$urlset = new SimpleXMLElement(sprintf('%1$s%2$s%3$s', '<?xml version="1.0" encoding="UTF-8" ?>', $this->stylesheet, '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" />'));
foreach ($url_list as $url_item) {
$url = $urlset->addChild('url');
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(__('Fields other than %s are not currently supported for sitemaps.'), implode(',', array('loc', 'lastmod', 'changefreq', 'priority'))), '5.5.0');
}
}
}
return $urlset->asXML();
}
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(esc_xml(__('Could not generate XML sitemap due to missing %s extension')), 'SimpleXML'), esc_xml(__('WordPress › Error')), array('response' => 501));
}
}
}