Edit File by line
/home/zeestwma/ceyloniy.../wp-inclu.../sitemaps
File: class-wp-sitemaps-renderer.php
<?php
[0] Fix | Delete
/**
[1] Fix | Delete
* Sitemaps: WP_Sitemaps_Renderer class
[2] Fix | Delete
*
[3] Fix | Delete
* Responsible for rendering Sitemaps data to XML in accordance with sitemap protocol.
[4] Fix | Delete
*
[5] Fix | Delete
* @package WordPress
[6] Fix | Delete
* @subpackage Sitemaps
[7] Fix | Delete
* @since 5.5.0
[8] Fix | Delete
*/
[9] Fix | Delete
[10] Fix | Delete
/**
[11] Fix | Delete
* Class WP_Sitemaps_Renderer
[12] Fix | Delete
*
[13] Fix | Delete
* @since 5.5.0
[14] Fix | Delete
*/
[15] Fix | Delete
#[AllowDynamicProperties]
[16] Fix | Delete
class WP_Sitemaps_Renderer {
[17] Fix | Delete
/**
[18] Fix | Delete
* XSL stylesheet for styling a sitemap for web browsers.
[19] Fix | Delete
*
[20] Fix | Delete
* @since 5.5.0
[21] Fix | Delete
*
[22] Fix | Delete
* @var string
[23] Fix | Delete
*/
[24] Fix | Delete
protected $stylesheet = '';
[25] Fix | Delete
[26] Fix | Delete
/**
[27] Fix | Delete
* XSL stylesheet for styling a sitemap for web browsers.
[28] Fix | Delete
*
[29] Fix | Delete
* @since 5.5.0
[30] Fix | Delete
*
[31] Fix | Delete
* @var string
[32] Fix | Delete
*/
[33] Fix | Delete
protected $stylesheet_index = '';
[34] Fix | Delete
[35] Fix | Delete
/**
[36] Fix | Delete
* WP_Sitemaps_Renderer constructor.
[37] Fix | Delete
*
[38] Fix | Delete
* @since 5.5.0
[39] Fix | Delete
*/
[40] Fix | Delete
public function __construct() {
[41] Fix | Delete
$stylesheet_url = $this->get_sitemap_stylesheet_url();
[42] Fix | Delete
[43] Fix | Delete
if ( $stylesheet_url ) {
[44] Fix | Delete
$this->stylesheet = '<?xml-stylesheet type="text/xsl" href="' . esc_url( $stylesheet_url ) . '" ?>';
[45] Fix | Delete
}
[46] Fix | Delete
[47] Fix | Delete
$stylesheet_index_url = $this->get_sitemap_index_stylesheet_url();
[48] Fix | Delete
[49] Fix | Delete
if ( $stylesheet_index_url ) {
[50] Fix | Delete
$this->stylesheet_index = '<?xml-stylesheet type="text/xsl" href="' . esc_url( $stylesheet_index_url ) . '" ?>';
[51] Fix | Delete
}
[52] Fix | Delete
}
[53] Fix | Delete
[54] Fix | Delete
/**
[55] Fix | Delete
* Gets the URL for the sitemap stylesheet.
[56] Fix | Delete
*
[57] Fix | Delete
* @since 5.5.0
[58] Fix | Delete
*
[59] Fix | Delete
* @global WP_Rewrite $wp_rewrite WordPress rewrite component.
[60] Fix | Delete
*
[61] Fix | Delete
* @return string The sitemap stylesheet URL.
[62] Fix | Delete
*/
[63] Fix | Delete
public function get_sitemap_stylesheet_url() {
[64] Fix | Delete
global $wp_rewrite;
[65] Fix | Delete
[66] Fix | Delete
$sitemap_url = home_url( '/wp-sitemap.xsl' );
[67] Fix | Delete
[68] Fix | Delete
if ( ! $wp_rewrite->using_permalinks() ) {
[69] Fix | Delete
$sitemap_url = home_url( '/?sitemap-stylesheet=sitemap' );
[70] Fix | Delete
}
[71] Fix | Delete
[72] Fix | Delete
/**
[73] Fix | Delete
* Filters the URL for the sitemap stylesheet.
[74] Fix | Delete
*
[75] Fix | Delete
* If a falsey value is returned, no stylesheet will be used and
[76] Fix | Delete
* the "raw" XML of the sitemap will be displayed.
[77] Fix | Delete
*
[78] Fix | Delete
* @since 5.5.0
[79] Fix | Delete
*
[80] Fix | Delete
* @param string $sitemap_url Full URL for the sitemaps XSL file.
[81] Fix | Delete
*/
[82] Fix | Delete
return apply_filters( 'wp_sitemaps_stylesheet_url', $sitemap_url );
[83] Fix | Delete
}
[84] Fix | Delete
[85] Fix | Delete
/**
[86] Fix | Delete
* Gets the URL for the sitemap index stylesheet.
[87] Fix | Delete
*
[88] Fix | Delete
* @since 5.5.0
[89] Fix | Delete
*
[90] Fix | Delete
* @global WP_Rewrite $wp_rewrite WordPress rewrite component.
[91] Fix | Delete
*
[92] Fix | Delete
* @return string The sitemap index stylesheet URL.
[93] Fix | Delete
*/
[94] Fix | Delete
public function get_sitemap_index_stylesheet_url() {
[95] Fix | Delete
global $wp_rewrite;
[96] Fix | Delete
[97] Fix | Delete
$sitemap_url = home_url( '/wp-sitemap-index.xsl' );
[98] Fix | Delete
[99] Fix | Delete
if ( ! $wp_rewrite->using_permalinks() ) {
[100] Fix | Delete
$sitemap_url = home_url( '/?sitemap-stylesheet=index' );
[101] Fix | Delete
}
[102] Fix | Delete
[103] Fix | Delete
/**
[104] Fix | Delete
* Filters the URL for the sitemap index stylesheet.
[105] Fix | Delete
*
[106] Fix | Delete
* If a falsey value is returned, no stylesheet will be used and
[107] Fix | Delete
* the "raw" XML of the sitemap index will be displayed.
[108] Fix | Delete
*
[109] Fix | Delete
* @since 5.5.0
[110] Fix | Delete
*
[111] Fix | Delete
* @param string $sitemap_url Full URL for the sitemaps index XSL file.
[112] Fix | Delete
*/
[113] Fix | Delete
return apply_filters( 'wp_sitemaps_stylesheet_index_url', $sitemap_url );
[114] Fix | Delete
}
[115] Fix | Delete
[116] Fix | Delete
/**
[117] Fix | Delete
* Renders a sitemap index.
[118] Fix | Delete
*
[119] Fix | Delete
* @since 5.5.0
[120] Fix | Delete
*
[121] Fix | Delete
* @param array $sitemaps Array of sitemap URLs.
[122] Fix | Delete
*/
[123] Fix | Delete
public function render_index( $sitemaps ) {
[124] Fix | Delete
header( 'Content-Type: application/xml; charset=UTF-8' );
[125] Fix | Delete
[126] Fix | Delete
$this->check_for_simple_xml_availability();
[127] Fix | Delete
[128] Fix | Delete
$index_xml = $this->get_sitemap_index_xml( $sitemaps );
[129] Fix | Delete
[130] Fix | Delete
if ( ! empty( $index_xml ) ) {
[131] Fix | Delete
// All output is escaped within get_sitemap_index_xml().
[132] Fix | Delete
echo $index_xml;
[133] Fix | Delete
}
[134] Fix | Delete
}
[135] Fix | Delete
[136] Fix | Delete
/**
[137] Fix | Delete
* Gets XML for a sitemap index.
[138] Fix | Delete
*
[139] Fix | Delete
* @since 5.5.0
[140] Fix | Delete
*
[141] Fix | Delete
* @param array $sitemaps Array of sitemap URLs.
[142] Fix | Delete
* @return string|false A well-formed XML string for a sitemap index. False on error.
[143] Fix | Delete
*/
[144] Fix | Delete
public function get_sitemap_index_xml( $sitemaps ) {
[145] Fix | Delete
$sitemap_index = new SimpleXMLElement(
[146] Fix | Delete
sprintf(
[147] Fix | Delete
'%1$s%2$s%3$s',
[148] Fix | Delete
'<?xml version="1.0" encoding="UTF-8" ?>',
[149] Fix | Delete
$this->stylesheet_index,
[150] Fix | Delete
'<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" />'
[151] Fix | Delete
)
[152] Fix | Delete
);
[153] Fix | Delete
[154] Fix | Delete
foreach ( $sitemaps as $entry ) {
[155] Fix | Delete
$sitemap = $sitemap_index->addChild( 'sitemap' );
[156] Fix | Delete
[157] Fix | Delete
// Add each element as a child node to the <sitemap> entry.
[158] Fix | Delete
foreach ( $entry as $name => $value ) {
[159] Fix | Delete
if ( 'loc' === $name ) {
[160] Fix | Delete
$sitemap->addChild( $name, esc_url( $value ) );
[161] Fix | Delete
} elseif ( 'lastmod' === $name ) {
[162] Fix | Delete
$sitemap->addChild( $name, esc_xml( $value ) );
[163] Fix | Delete
} else {
[164] Fix | Delete
_doing_it_wrong(
[165] Fix | Delete
__METHOD__,
[166] Fix | Delete
sprintf(
[167] Fix | Delete
/* translators: %s: List of element names. */
[168] Fix | Delete
__( 'Fields other than %s are not currently supported for the sitemap index.' ),
[169] Fix | Delete
implode( ',', array( 'loc', 'lastmod' ) )
[170] Fix | Delete
),
[171] Fix | Delete
'5.5.0'
[172] Fix | Delete
);
[173] Fix | Delete
}
[174] Fix | Delete
}
[175] Fix | Delete
}
[176] Fix | Delete
[177] Fix | Delete
return $sitemap_index->asXML();
[178] Fix | Delete
}
[179] Fix | Delete
[180] Fix | Delete
/**
[181] Fix | Delete
* Renders a sitemap.
[182] Fix | Delete
*
[183] Fix | Delete
* @since 5.5.0
[184] Fix | Delete
*
[185] Fix | Delete
* @param array $url_list Array of URLs for a sitemap.
[186] Fix | Delete
*/
[187] Fix | Delete
public function render_sitemap( $url_list ) {
[188] Fix | Delete
header( 'Content-Type: application/xml; charset=UTF-8' );
[189] Fix | Delete
[190] Fix | Delete
$this->check_for_simple_xml_availability();
[191] Fix | Delete
[192] Fix | Delete
$sitemap_xml = $this->get_sitemap_xml( $url_list );
[193] Fix | Delete
[194] Fix | Delete
if ( ! empty( $sitemap_xml ) ) {
[195] Fix | Delete
// All output is escaped within get_sitemap_xml().
[196] Fix | Delete
echo $sitemap_xml;
[197] Fix | Delete
}
[198] Fix | Delete
}
[199] Fix | Delete
[200] Fix | Delete
/**
[201] Fix | Delete
* Gets XML for a sitemap.
[202] Fix | Delete
*
[203] Fix | Delete
* @since 5.5.0
[204] Fix | Delete
*
[205] Fix | Delete
* @param array $url_list Array of URLs for a sitemap.
[206] Fix | Delete
* @return string|false A well-formed XML string for a sitemap index. False on error.
[207] Fix | Delete
*/
[208] Fix | Delete
public function get_sitemap_xml( $url_list ) {
[209] Fix | Delete
$urlset = new SimpleXMLElement(
[210] Fix | Delete
sprintf(
[211] Fix | Delete
'%1$s%2$s%3$s',
[212] Fix | Delete
'<?xml version="1.0" encoding="UTF-8" ?>',
[213] Fix | Delete
$this->stylesheet,
[214] Fix | Delete
'<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" />'
[215] Fix | Delete
)
[216] Fix | Delete
);
[217] Fix | Delete
[218] Fix | Delete
foreach ( $url_list as $url_item ) {
[219] Fix | Delete
$url = $urlset->addChild( 'url' );
[220] Fix | Delete
[221] Fix | Delete
// Add each element as a child node to the <url> entry.
[222] Fix | Delete
foreach ( $url_item as $name => $value ) {
[223] Fix | Delete
if ( 'loc' === $name ) {
[224] Fix | Delete
$url->addChild( $name, esc_url( $value ) );
[225] Fix | Delete
} elseif ( in_array( $name, array( 'lastmod', 'changefreq', 'priority' ), true ) ) {
[226] Fix | Delete
$url->addChild( $name, esc_xml( $value ) );
[227] Fix | Delete
} else {
[228] Fix | Delete
_doing_it_wrong(
[229] Fix | Delete
__METHOD__,
[230] Fix | Delete
sprintf(
[231] Fix | Delete
/* translators: %s: List of element names. */
[232] Fix | Delete
__( 'Fields other than %s are not currently supported for sitemaps.' ),
[233] Fix | Delete
implode( ',', array( 'loc', 'lastmod', 'changefreq', 'priority' ) )
[234] Fix | Delete
),
[235] Fix | Delete
'5.5.0'
[236] Fix | Delete
);
[237] Fix | Delete
}
[238] Fix | Delete
}
[239] Fix | Delete
}
[240] Fix | Delete
[241] Fix | Delete
return $urlset->asXML();
[242] Fix | Delete
}
[243] Fix | Delete
[244] Fix | Delete
/**
[245] Fix | Delete
* Checks for the availability of the SimpleXML extension and errors if missing.
[246] Fix | Delete
*
[247] Fix | Delete
* @since 5.5.0
[248] Fix | Delete
*/
[249] Fix | Delete
private function check_for_simple_xml_availability() {
[250] Fix | Delete
if ( ! class_exists( 'SimpleXMLElement' ) ) {
[251] Fix | Delete
add_filter(
[252] Fix | Delete
'wp_die_handler',
[253] Fix | Delete
static function () {
[254] Fix | Delete
return '_xml_wp_die_handler';
[255] Fix | Delete
}
[256] Fix | Delete
);
[257] Fix | Delete
[258] Fix | Delete
wp_die(
[259] Fix | Delete
sprintf(
[260] Fix | Delete
/* translators: %s: SimpleXML */
[261] Fix | Delete
esc_xml( __( 'Could not generate XML sitemap due to missing %s extension' ) ),
[262] Fix | Delete
'SimpleXML'
[263] Fix | Delete
),
[264] Fix | Delete
esc_xml( __( 'WordPress &rsaquo; Error' ) ),
[265] Fix | Delete
array(
[266] Fix | Delete
'response' => 501, // "Not implemented".
[267] Fix | Delete
)
[268] Fix | Delete
);
[269] Fix | Delete
}
[270] Fix | Delete
}
[271] Fix | Delete
}
[272] Fix | Delete
[273] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function