Edit File by line
/home/zeestwma/ceyloniy.../wp-inclu.../sitemaps
File: class-wp-sitemaps-stylesheet.php
<?php
[0] Fix | Delete
/**
[1] Fix | Delete
* Sitemaps: WP_Sitemaps_Stylesheet class
[2] Fix | Delete
*
[3] Fix | Delete
* This class provides the XSL stylesheets to style all sitemaps.
[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
* Stylesheet provider class.
[12] Fix | Delete
*
[13] Fix | Delete
* @since 5.5.0
[14] Fix | Delete
*/
[15] Fix | Delete
#[AllowDynamicProperties]
[16] Fix | Delete
class WP_Sitemaps_Stylesheet {
[17] Fix | Delete
/**
[18] Fix | Delete
* Renders the XSL stylesheet depending on whether it's the sitemap index or not.
[19] Fix | Delete
*
[20] Fix | Delete
* @param string $type Stylesheet type. Either 'sitemap' or 'index'.
[21] Fix | Delete
*/
[22] Fix | Delete
public function render_stylesheet( $type ) {
[23] Fix | Delete
header( 'Content-Type: application/xml; charset=UTF-8' );
[24] Fix | Delete
[25] Fix | Delete
if ( 'sitemap' === $type ) {
[26] Fix | Delete
// All content is escaped below.
[27] Fix | Delete
echo $this->get_sitemap_stylesheet();
[28] Fix | Delete
}
[29] Fix | Delete
[30] Fix | Delete
if ( 'index' === $type ) {
[31] Fix | Delete
// All content is escaped below.
[32] Fix | Delete
echo $this->get_sitemap_index_stylesheet();
[33] Fix | Delete
}
[34] Fix | Delete
[35] Fix | Delete
exit;
[36] Fix | Delete
}
[37] Fix | Delete
[38] Fix | Delete
/**
[39] Fix | Delete
* Returns the escaped XSL for all sitemaps, except index.
[40] Fix | Delete
*
[41] Fix | Delete
* @since 5.5.0
[42] Fix | Delete
*/
[43] Fix | Delete
public function get_sitemap_stylesheet() {
[44] Fix | Delete
$css = $this->get_stylesheet_css();
[45] Fix | Delete
$title = esc_xml( __( 'XML Sitemap' ) );
[46] Fix | Delete
$description = esc_xml( __( 'This XML Sitemap is generated by WordPress to make your content more visible for search engines.' ) );
[47] Fix | Delete
$learn_more = sprintf(
[48] Fix | Delete
'<a href="%s">%s</a>',
[49] Fix | Delete
esc_url( __( 'https://www.sitemaps.org/' ) ),
[50] Fix | Delete
esc_xml( __( 'Learn more about XML sitemaps.' ) )
[51] Fix | Delete
);
[52] Fix | Delete
[53] Fix | Delete
$text = sprintf(
[54] Fix | Delete
/* translators: %s: Number of URLs. */
[55] Fix | Delete
esc_xml( __( 'Number of URLs in this XML Sitemap: %s.' ) ),
[56] Fix | Delete
'<xsl:value-of select="count( sitemap:urlset/sitemap:url )" />'
[57] Fix | Delete
);
[58] Fix | Delete
[59] Fix | Delete
$lang = get_language_attributes( 'html' );
[60] Fix | Delete
$url = esc_xml( __( 'URL' ) );
[61] Fix | Delete
$lastmod = esc_xml( __( 'Last Modified' ) );
[62] Fix | Delete
$changefreq = esc_xml( __( 'Change Frequency' ) );
[63] Fix | Delete
$priority = esc_xml( __( 'Priority' ) );
[64] Fix | Delete
[65] Fix | Delete
$xsl_content = <<<XSL
[66] Fix | Delete
<?xml version="1.0" encoding="UTF-8"?>
[67] Fix | Delete
<xsl:stylesheet
[68] Fix | Delete
version="1.0"
[69] Fix | Delete
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
[70] Fix | Delete
xmlns:sitemap="http://www.sitemaps.org/schemas/sitemap/0.9"
[71] Fix | Delete
exclude-result-prefixes="sitemap"
[72] Fix | Delete
>
[73] Fix | Delete
[74] Fix | Delete
<xsl:output method="html" encoding="UTF-8" indent="yes" />
[75] Fix | Delete
[76] Fix | Delete
<!--
[77] Fix | Delete
Set variables for whether lastmod, changefreq or priority occur for any url in the sitemap.
[78] Fix | Delete
We do this up front because it can be expensive in a large sitemap.
[79] Fix | Delete
-->
[80] Fix | Delete
<xsl:variable name="has-lastmod" select="count( /sitemap:urlset/sitemap:url/sitemap:lastmod )" />
[81] Fix | Delete
<xsl:variable name="has-changefreq" select="count( /sitemap:urlset/sitemap:url/sitemap:changefreq )" />
[82] Fix | Delete
<xsl:variable name="has-priority" select="count( /sitemap:urlset/sitemap:url/sitemap:priority )" />
[83] Fix | Delete
[84] Fix | Delete
<xsl:template match="/">
[85] Fix | Delete
<html {$lang}>
[86] Fix | Delete
<head>
[87] Fix | Delete
<title>{$title}</title>
[88] Fix | Delete
<style>
[89] Fix | Delete
{$css}
[90] Fix | Delete
</style>
[91] Fix | Delete
</head>
[92] Fix | Delete
<body>
[93] Fix | Delete
<div id="sitemap">
[94] Fix | Delete
<div id="sitemap__header">
[95] Fix | Delete
<h1>{$title}</h1>
[96] Fix | Delete
<p>{$description}</p>
[97] Fix | Delete
<p>{$learn_more}</p>
[98] Fix | Delete
</div>
[99] Fix | Delete
<div id="sitemap__content">
[100] Fix | Delete
<p class="text">{$text}</p>
[101] Fix | Delete
<table id="sitemap__table">
[102] Fix | Delete
<thead>
[103] Fix | Delete
<tr>
[104] Fix | Delete
<th class="loc">{$url}</th>
[105] Fix | Delete
<xsl:if test="\$has-lastmod">
[106] Fix | Delete
<th class="lastmod">{$lastmod}</th>
[107] Fix | Delete
</xsl:if>
[108] Fix | Delete
<xsl:if test="\$has-changefreq">
[109] Fix | Delete
<th class="changefreq">{$changefreq}</th>
[110] Fix | Delete
</xsl:if>
[111] Fix | Delete
<xsl:if test="\$has-priority">
[112] Fix | Delete
<th class="priority">{$priority}</th>
[113] Fix | Delete
</xsl:if>
[114] Fix | Delete
</tr>
[115] Fix | Delete
</thead>
[116] Fix | Delete
<tbody>
[117] Fix | Delete
<xsl:for-each select="sitemap:urlset/sitemap:url">
[118] Fix | Delete
<tr>
[119] Fix | Delete
<td class="loc"><a href="{sitemap:loc}"><xsl:value-of select="sitemap:loc" /></a></td>
[120] Fix | Delete
<xsl:if test="\$has-lastmod">
[121] Fix | Delete
<td class="lastmod"><xsl:value-of select="sitemap:lastmod" /></td>
[122] Fix | Delete
</xsl:if>
[123] Fix | Delete
<xsl:if test="\$has-changefreq">
[124] Fix | Delete
<td class="changefreq"><xsl:value-of select="sitemap:changefreq" /></td>
[125] Fix | Delete
</xsl:if>
[126] Fix | Delete
<xsl:if test="\$has-priority">
[127] Fix | Delete
<td class="priority"><xsl:value-of select="sitemap:priority" /></td>
[128] Fix | Delete
</xsl:if>
[129] Fix | Delete
</tr>
[130] Fix | Delete
</xsl:for-each>
[131] Fix | Delete
</tbody>
[132] Fix | Delete
</table>
[133] Fix | Delete
</div>
[134] Fix | Delete
</div>
[135] Fix | Delete
</body>
[136] Fix | Delete
</html>
[137] Fix | Delete
</xsl:template>
[138] Fix | Delete
</xsl:stylesheet>
[139] Fix | Delete
[140] Fix | Delete
XSL;
[141] Fix | Delete
[142] Fix | Delete
/**
[143] Fix | Delete
* Filters the content of the sitemap stylesheet.
[144] Fix | Delete
*
[145] Fix | Delete
* @since 5.5.0
[146] Fix | Delete
*
[147] Fix | Delete
* @param string $xsl_content Full content for the XML stylesheet.
[148] Fix | Delete
*/
[149] Fix | Delete
return apply_filters( 'wp_sitemaps_stylesheet_content', $xsl_content );
[150] Fix | Delete
}
[151] Fix | Delete
[152] Fix | Delete
/**
[153] Fix | Delete
* Returns the escaped XSL for the index sitemaps.
[154] Fix | Delete
*
[155] Fix | Delete
* @since 5.5.0
[156] Fix | Delete
*/
[157] Fix | Delete
public function get_sitemap_index_stylesheet() {
[158] Fix | Delete
$css = $this->get_stylesheet_css();
[159] Fix | Delete
$title = esc_xml( __( 'XML Sitemap' ) );
[160] Fix | Delete
$description = esc_xml( __( 'This XML Sitemap is generated by WordPress to make your content more visible for search engines.' ) );
[161] Fix | Delete
$learn_more = sprintf(
[162] Fix | Delete
'<a href="%s">%s</a>',
[163] Fix | Delete
esc_url( __( 'https://www.sitemaps.org/' ) ),
[164] Fix | Delete
esc_xml( __( 'Learn more about XML sitemaps.' ) )
[165] Fix | Delete
);
[166] Fix | Delete
[167] Fix | Delete
$text = sprintf(
[168] Fix | Delete
/* translators: %s: Number of URLs. */
[169] Fix | Delete
esc_xml( __( 'Number of URLs in this XML Sitemap: %s.' ) ),
[170] Fix | Delete
'<xsl:value-of select="count( sitemap:sitemapindex/sitemap:sitemap )" />'
[171] Fix | Delete
);
[172] Fix | Delete
[173] Fix | Delete
$lang = get_language_attributes( 'html' );
[174] Fix | Delete
$url = esc_xml( __( 'URL' ) );
[175] Fix | Delete
$lastmod = esc_xml( __( 'Last Modified' ) );
[176] Fix | Delete
[177] Fix | Delete
$xsl_content = <<<XSL
[178] Fix | Delete
<?xml version="1.0" encoding="UTF-8"?>
[179] Fix | Delete
<xsl:stylesheet
[180] Fix | Delete
version="1.0"
[181] Fix | Delete
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
[182] Fix | Delete
xmlns:sitemap="http://www.sitemaps.org/schemas/sitemap/0.9"
[183] Fix | Delete
exclude-result-prefixes="sitemap"
[184] Fix | Delete
>
[185] Fix | Delete
[186] Fix | Delete
<xsl:output method="html" encoding="UTF-8" indent="yes" />
[187] Fix | Delete
[188] Fix | Delete
<!--
[189] Fix | Delete
Set variables for whether lastmod occurs for any sitemap in the index.
[190] Fix | Delete
We do this up front because it can be expensive in a large sitemap.
[191] Fix | Delete
-->
[192] Fix | Delete
<xsl:variable name="has-lastmod" select="count( /sitemap:sitemapindex/sitemap:sitemap/sitemap:lastmod )" />
[193] Fix | Delete
[194] Fix | Delete
<xsl:template match="/">
[195] Fix | Delete
<html {$lang}>
[196] Fix | Delete
<head>
[197] Fix | Delete
<title>{$title}</title>
[198] Fix | Delete
<style>
[199] Fix | Delete
{$css}
[200] Fix | Delete
</style>
[201] Fix | Delete
</head>
[202] Fix | Delete
<body>
[203] Fix | Delete
<div id="sitemap">
[204] Fix | Delete
<div id="sitemap__header">
[205] Fix | Delete
<h1>{$title}</h1>
[206] Fix | Delete
<p>{$description}</p>
[207] Fix | Delete
<p>{$learn_more}</p>
[208] Fix | Delete
</div>
[209] Fix | Delete
<div id="sitemap__content">
[210] Fix | Delete
<p class="text">{$text}</p>
[211] Fix | Delete
<table id="sitemap__table">
[212] Fix | Delete
<thead>
[213] Fix | Delete
<tr>
[214] Fix | Delete
<th class="loc">{$url}</th>
[215] Fix | Delete
<xsl:if test="\$has-lastmod">
[216] Fix | Delete
<th class="lastmod">{$lastmod}</th>
[217] Fix | Delete
</xsl:if>
[218] Fix | Delete
</tr>
[219] Fix | Delete
</thead>
[220] Fix | Delete
<tbody>
[221] Fix | Delete
<xsl:for-each select="sitemap:sitemapindex/sitemap:sitemap">
[222] Fix | Delete
<tr>
[223] Fix | Delete
<td class="loc"><a href="{sitemap:loc}"><xsl:value-of select="sitemap:loc" /></a></td>
[224] Fix | Delete
<xsl:if test="\$has-lastmod">
[225] Fix | Delete
<td class="lastmod"><xsl:value-of select="sitemap:lastmod" /></td>
[226] Fix | Delete
</xsl:if>
[227] Fix | Delete
</tr>
[228] Fix | Delete
</xsl:for-each>
[229] Fix | Delete
</tbody>
[230] Fix | Delete
</table>
[231] Fix | Delete
</div>
[232] Fix | Delete
</div>
[233] Fix | Delete
</body>
[234] Fix | Delete
</html>
[235] Fix | Delete
</xsl:template>
[236] Fix | Delete
</xsl:stylesheet>
[237] Fix | Delete
[238] Fix | Delete
XSL;
[239] Fix | Delete
[240] Fix | Delete
/**
[241] Fix | Delete
* Filters the content of the sitemap index stylesheet.
[242] Fix | Delete
*
[243] Fix | Delete
* @since 5.5.0
[244] Fix | Delete
*
[245] Fix | Delete
* @param string $xsl_content Full content for the XML stylesheet.
[246] Fix | Delete
*/
[247] Fix | Delete
return apply_filters( 'wp_sitemaps_stylesheet_index_content', $xsl_content );
[248] Fix | Delete
}
[249] Fix | Delete
[250] Fix | Delete
/**
[251] Fix | Delete
* Gets the CSS to be included in sitemap XSL stylesheets.
[252] Fix | Delete
*
[253] Fix | Delete
* @since 5.5.0
[254] Fix | Delete
*
[255] Fix | Delete
* @return string The CSS.
[256] Fix | Delete
*/
[257] Fix | Delete
public function get_stylesheet_css() {
[258] Fix | Delete
$text_align = is_rtl() ? 'right' : 'left';
[259] Fix | Delete
[260] Fix | Delete
$css = <<<EOF
[261] Fix | Delete
[262] Fix | Delete
body {
[263] Fix | Delete
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
[264] Fix | Delete
color: #444;
[265] Fix | Delete
}
[266] Fix | Delete
[267] Fix | Delete
#sitemap {
[268] Fix | Delete
max-width: 980px;
[269] Fix | Delete
margin: 0 auto;
[270] Fix | Delete
}
[271] Fix | Delete
[272] Fix | Delete
#sitemap__table {
[273] Fix | Delete
width: 100%;
[274] Fix | Delete
border: solid 1px #ccc;
[275] Fix | Delete
border-collapse: collapse;
[276] Fix | Delete
}
[277] Fix | Delete
[278] Fix | Delete
#sitemap__table tr td.loc {
[279] Fix | Delete
/*
[280] Fix | Delete
* URLs should always be LTR.
[281] Fix | Delete
* See https://core.trac.wordpress.org/ticket/16834
[282] Fix | Delete
* and https://core.trac.wordpress.org/ticket/49949
[283] Fix | Delete
*/
[284] Fix | Delete
direction: ltr;
[285] Fix | Delete
}
[286] Fix | Delete
[287] Fix | Delete
#sitemap__table tr th {
[288] Fix | Delete
text-align: {$text_align};
[289] Fix | Delete
}
[290] Fix | Delete
[291] Fix | Delete
#sitemap__table tr td,
[292] Fix | Delete
#sitemap__table tr th {
[293] Fix | Delete
padding: 10px;
[294] Fix | Delete
}
[295] Fix | Delete
[296] Fix | Delete
#sitemap__table tr:nth-child(odd) td {
[297] Fix | Delete
background-color: #eee;
[298] Fix | Delete
}
[299] Fix | Delete
[300] Fix | Delete
a:hover {
[301] Fix | Delete
text-decoration: none;
[302] Fix | Delete
}
[303] Fix | Delete
[304] Fix | Delete
EOF;
[305] Fix | Delete
[306] Fix | Delete
/**
[307] Fix | Delete
* Filters the CSS only for the sitemap stylesheet.
[308] Fix | Delete
*
[309] Fix | Delete
* @since 5.5.0
[310] Fix | Delete
*
[311] Fix | Delete
* @param string $css CSS to be applied to default XSL file.
[312] Fix | Delete
*/
[313] Fix | Delete
return apply_filters( 'wp_sitemaps_stylesheet_css', $css );
[314] Fix | Delete
}
[315] Fix | Delete
}
[316] Fix | Delete
[317] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function