Version Description
- 2020-06-12 - Integrated the latest WordPress sitemap files.
Download this release
Release Info
Developer | Rajesh Babu |
Plugin | Platinum SEO Pack |
Version | 2.1.3 |
Comparing to | |
See all releases |
Code changes from version 2.1.2 to 2.1.3
- Changelog.txt +3 -0
- platinum-seo-pack.php +1 -1
- psp-include/settings/psp_advanced_metabox_renderer.php +1 -1
- psp-include/sitemap/inc/class-wp-sitemaps-index.php +1 -1
- psp-include/sitemap/inc/class-wp-sitemaps-provider.php +17 -3
- psp-include/sitemap/inc/class-wp-sitemaps-registry.php +1 -5
- psp-include/sitemap/inc/class-wp-sitemaps-renderer.php +65 -21
- psp-include/sitemap/inc/class-wp-sitemaps-stylesheet.php +143 -107
- psp-include/sitemap/inc/class-wp-sitemaps.php +8 -7
- psp-include/sitemap/inc/functions.php +86 -1
- psp-include/sitemap/inc/providers/class-wp-sitemaps-posts.php +13 -3
- psp-include/sitemap/psp_sitemap.php +12 -4
- psp-include/sitemap/psp_sitemap_settings.php +2 -2
- psp-include/sitemap/sitemap-image.xsl +3 -4
- psp-include/sitemap/sitemap-index.xsl +3 -4
- psp-include/sitemap/sitemap-post.xsl +3 -4
- psp-include/sitemap/sitemap.xsl +3 -4
- psp-include/utilities/psp_helper.php +1 -1
- psp_main.php +4 -4
- readme.txt +4 -1
Changelog.txt
CHANGED
@@ -1,3 +1,6 @@
|
|
|
|
|
|
|
|
1 |
= 2.1.2 =
|
2 |
* 2020-06-01 - Sitemap has been further enhanced with the latest WordPress sitemap files. Also a few styling changes have been implemented to the sitemap rendered by the plugin. A few other cosmetic changes have been done to Help text wordings in a few files.
|
3 |
|
1 |
+
= 2.1.3 =
|
2 |
+
* 2020-06-12 - Integrated the latest WordPress sitemap files.
|
3 |
+
|
4 |
= 2.1.2 =
|
5 |
* 2020-06-01 - Sitemap has been further enhanced with the latest WordPress sitemap files. Also a few styling changes have been implemented to the sitemap rendered by the plugin. A few other cosmetic changes have been done to Help text wordings in a few files.
|
6 |
|
platinum-seo-pack.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
Plugin Name: Platinum SEO Pack
|
5 |
Plugin URI: https://techblissonline.com/platinum-wordpress-seo-plugin/
|
6 |
Description: Complete SEO and Social optimization solution for your Wordpress blog/site. It is Simple, Uncomplicated and User friendly with several useful features.
|
7 |
-
Version: 2.1.
|
8 |
Author: Techblissonline.com (Rajesh)
|
9 |
Author URI: https://techblissonline.com/
|
10 |
Text Domain: platinum-seo-pack
|
4 |
Plugin Name: Platinum SEO Pack
|
5 |
Plugin URI: https://techblissonline.com/platinum-wordpress-seo-plugin/
|
6 |
Description: Complete SEO and Social optimization solution for your Wordpress blog/site. It is Simple, Uncomplicated and User friendly with several useful features.
|
7 |
+
Version: 2.1.3
|
8 |
Author: Techblissonline.com (Rajesh)
|
9 |
Author URI: https://techblissonline.com/
|
10 |
Text Domain: platinum-seo-pack
|
psp-include/settings/psp_advanced_metabox_renderer.php
CHANGED
@@ -81,7 +81,7 @@ Author URI: https://techblissonline.com/
|
|
81 |
<?php if ( isset($psp_seo_meta['nositemap']) && $psp_seo_meta['nositemap']) { $nositemap_checked = ' checked="checked" '; } else { $nositemap_checked = ""; }
|
82 |
echo "<div class='psp-bs'><input ".esc_attr($nositemap_checked)." id='psp_seo_meta[nositemap]' name='psp_seo_meta[nositemap]' type='checkbox' data-toggle='toggle' data-onstyle='warning' /></div>";
|
83 |
?>
|
84 |
-
<p class="description"><?php esc_html_e('Switching this ON
|
85 |
</td>
|
86 |
</tr>
|
87 |
<tr class="form-field">
|
81 |
<?php if ( isset($psp_seo_meta['nositemap']) && $psp_seo_meta['nositemap']) { $nositemap_checked = ' checked="checked" '; } else { $nositemap_checked = ""; }
|
82 |
echo "<div class='psp-bs'><input ".esc_attr($nositemap_checked)." id='psp_seo_meta[nositemap]' name='psp_seo_meta[nositemap]' type='checkbox' data-toggle='toggle' data-onstyle='warning' /></div>";
|
83 |
?>
|
84 |
+
<p class="description"><?php esc_html_e('Switching this ON tells sitemap generator to not include this page in the sitemap. All NoIndex Pages are excluded from the Platinum SEO WordPress sitemap by default and you need not have to enable this again.', 'platinum-seo-pack'); ?></p>
|
85 |
</td>
|
86 |
</tr>
|
87 |
<tr class="form-field">
|
psp-include/sitemap/inc/class-wp-sitemaps-index.php
CHANGED
@@ -32,7 +32,7 @@ class WP_Sitemaps_Index {
|
|
32 |
*
|
33 |
* @param WP_Sitemaps_Registry $registry Sitemap provider registry.
|
34 |
*/
|
35 |
-
public function __construct( $registry ) {
|
36 |
$this->registry = $registry;
|
37 |
}
|
38 |
|
32 |
*
|
33 |
* @param WP_Sitemaps_Registry $registry Sitemap provider registry.
|
34 |
*/
|
35 |
+
public function __construct( WP_Sitemaps_Registry $registry ) {
|
36 |
$this->registry = $registry;
|
37 |
}
|
38 |
|
psp-include/sitemap/inc/class-wp-sitemaps-provider.php
CHANGED
@@ -108,10 +108,24 @@ abstract class WP_Sitemaps_Provider {
|
|
108 |
|
109 |
foreach ( $sitemap_types as $type ) {
|
110 |
for ( $page = 1; $page <= $type['pages']; $page ++ ) {
|
111 |
-
$
|
112 |
-
|
113 |
-
'loc' => $loc,
|
114 |
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
115 |
}
|
116 |
}
|
117 |
|
108 |
|
109 |
foreach ( $sitemap_types as $type ) {
|
110 |
for ( $page = 1; $page <= $type['pages']; $page ++ ) {
|
111 |
+
$sitemap_entry = array(
|
112 |
+
'loc' => $this->get_sitemap_url( $type['name'], $page ),
|
|
|
113 |
);
|
114 |
+
|
115 |
+
/**
|
116 |
+
* Filters the sitemap entry for the sitemap index.
|
117 |
+
*
|
118 |
+
* @since 5.5.0
|
119 |
+
*
|
120 |
+
* @param array $sitemap_entry Sitemap entry for the post.
|
121 |
+
* @param string $object_type Object empty name.
|
122 |
+
* @param string $object_subtype Object subtype name.
|
123 |
+
* Empty string if the object type does not support subtypes.
|
124 |
+
* @param string $page Page of results.
|
125 |
+
*/
|
126 |
+
$sitemap_entry = apply_filters( 'wp_sitemaps_index_entry', $sitemap_entry, $this->object_type, $type['name'], $page );
|
127 |
+
|
128 |
+
$sitemaps[] = $sitemap_entry;
|
129 |
}
|
130 |
}
|
131 |
|
psp-include/sitemap/inc/class-wp-sitemaps-registry.php
CHANGED
@@ -33,15 +33,11 @@ class WP_Sitemaps_Registry {
|
|
33 |
* @param WP_Sitemaps_Provider $provider Instance of a WP_Sitemaps_Provider.
|
34 |
* @return bool True if the sitemap was added, false if it is already registered.
|
35 |
*/
|
36 |
-
public function add_sitemap( $name, $provider ) {
|
37 |
if ( isset( $this->sitemaps[ $name ] ) ) {
|
38 |
return false;
|
39 |
}
|
40 |
|
41 |
-
if ( ! $provider instanceof WP_Sitemaps_Provider ) {
|
42 |
-
return false;
|
43 |
-
}
|
44 |
-
|
45 |
$this->sitemaps[ $name ] = $provider;
|
46 |
|
47 |
return true;
|
33 |
* @param WP_Sitemaps_Provider $provider Instance of a WP_Sitemaps_Provider.
|
34 |
* @return bool True if the sitemap was added, false if it is already registered.
|
35 |
*/
|
36 |
+
public function add_sitemap( $name, WP_Sitemaps_Provider $provider ) {
|
37 |
if ( isset( $this->sitemaps[ $name ] ) ) {
|
38 |
return false;
|
39 |
}
|
40 |
|
|
|
|
|
|
|
|
|
41 |
$this->sitemaps[ $name ] = $provider;
|
42 |
|
43 |
return true;
|
psp-include/sitemap/inc/class-wp-sitemaps-renderer.php
CHANGED
@@ -120,13 +120,18 @@ class WP_Sitemaps_Renderer {
|
|
120 |
header( 'Content-type: application/xml; charset=UTF-8' );
|
121 |
|
122 |
$this->check_for_simple_xml_availability();
|
123 |
-
|
124 |
-
$index_xml = $this->get_sitemap_index_xml( $sitemaps );
|
125 |
|
126 |
if ( ! empty( $index_xml ) ) {
|
127 |
// All output is escaped within get_sitemap_index_xml().
|
128 |
// phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
|
129 |
-
|
|
|
|
|
|
|
|
|
|
|
130 |
}
|
131 |
}
|
132 |
|
@@ -139,6 +144,14 @@ class WP_Sitemaps_Renderer {
|
|
139 |
* @return string|false A well-formed XML string for a sitemap index. False on error.
|
140 |
*/
|
141 |
public function get_sitemap_index_xml( $sitemaps ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
142 |
$sitemap_index = new SimpleXMLElement(
|
143 |
sprintf(
|
144 |
'%1$s%2$s%3$s',
|
@@ -150,7 +163,25 @@ class WP_Sitemaps_Renderer {
|
|
150 |
|
151 |
foreach ( $sitemaps as $entry ) {
|
152 |
$sitemap = $sitemap_index->addChild( 'sitemap' );
|
153 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
154 |
}
|
155 |
|
156 |
return $sitemap_index->asXML();
|
@@ -161,20 +192,14 @@ class WP_Sitemaps_Renderer {
|
|
161 |
*
|
162 |
* @since 5.5.0
|
163 |
*
|
164 |
-
* @param array $url_list
|
165 |
*/
|
166 |
public function render_sitemap( $url_list, $object_type, $object_subtype ) {
|
167 |
header( 'Content-type: application/xml; charset=UTF-8' );
|
168 |
|
169 |
$this->check_for_simple_xml_availability();
|
170 |
|
171 |
-
$sitemap_xml =
|
172 |
-
|
173 |
-
if ( empty( $sitemap_xml ) ) {
|
174 |
-
|
175 |
-
$sitemap_xml = $this->get_sitemap_xml( $url_list );
|
176 |
-
|
177 |
-
}
|
178 |
|
179 |
if ( ! empty( $sitemap_xml ) ) {
|
180 |
// All output is escaped within get_sitemap_xml().
|
@@ -196,7 +221,16 @@ class WP_Sitemaps_Renderer {
|
|
196 |
* @param array $url_list Array of URLs for a sitemap.
|
197 |
* @return string|false A well-formed XML string for a sitemap index. False on error.
|
198 |
*/
|
199 |
-
public function get_sitemap_xml( $url_list ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
200 |
$urlset = new SimpleXMLElement(
|
201 |
sprintf(
|
202 |
'%1$s%2$s%3$s',
|
@@ -209,12 +243,22 @@ class WP_Sitemaps_Renderer {
|
|
209 |
foreach ( $url_list as $url_item ) {
|
210 |
$url = $urlset->addChild( 'url' );
|
211 |
|
212 |
-
// Add each
|
213 |
-
foreach ( $url_item as $
|
214 |
-
if ( '
|
215 |
-
$url->addChild( $
|
|
|
|
|
216 |
} else {
|
217 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
218 |
}
|
219 |
}
|
220 |
}
|
@@ -238,11 +282,11 @@ class WP_Sitemaps_Renderer {
|
|
238 |
|
239 |
wp_die(
|
240 |
sprintf(
|
241 |
-
|
242 |
-
__( 'Could not generate XML sitemap due to missing %s extension', 'core-sitemaps' ),
|
243 |
'SimpleXML'
|
244 |
),
|
245 |
-
__( 'WordPress › Error', 'core-sitemaps' ),
|
246 |
array(
|
247 |
'response' => 501, // "Not implemented".
|
248 |
)
|
120 |
header( 'Content-type: application/xml; charset=UTF-8' );
|
121 |
|
122 |
$this->check_for_simple_xml_availability();
|
123 |
+
|
124 |
+
$index_xml = $this->get_sitemap_index_xml( $sitemaps );
|
125 |
|
126 |
if ( ! empty( $index_xml ) ) {
|
127 |
// All output is escaped within get_sitemap_index_xml().
|
128 |
// phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
|
129 |
+
$dom = new DOMDocument;
|
130 |
+
$dom->preserveWhiteSpace = false;
|
131 |
+
$dom->formatOutput = true;
|
132 |
+
$dom->loadXML($index_xml);
|
133 |
+
echo $dom->saveXML();
|
134 |
+
//echo $index_xml;
|
135 |
}
|
136 |
}
|
137 |
|
144 |
* @return string|false A well-formed XML string for a sitemap index. False on error.
|
145 |
*/
|
146 |
public function get_sitemap_index_xml( $sitemaps ) {
|
147 |
+
$index_xml = "";
|
148 |
+
$index_xml = apply_filters( "wp_sitemaps_get_sitemap_index_xml", $index_xml, $sitemaps );
|
149 |
+
|
150 |
+
if (!empty($index_xml) ) {
|
151 |
+
|
152 |
+
return $index_xml;
|
153 |
+
}
|
154 |
+
|
155 |
$sitemap_index = new SimpleXMLElement(
|
156 |
sprintf(
|
157 |
'%1$s%2$s%3$s',
|
163 |
|
164 |
foreach ( $sitemaps as $entry ) {
|
165 |
$sitemap = $sitemap_index->addChild( 'sitemap' );
|
166 |
+
|
167 |
+
// Add each element as a child node to the <sitemap> entry.
|
168 |
+
foreach ( $entry as $name => $value ) {
|
169 |
+
if ( 'loc' === $name ) {
|
170 |
+
$sitemap->addChild( $name, esc_url( $value ) );
|
171 |
+
} elseif ( 'lastmod' === $name ) {
|
172 |
+
$sitemap->addChild( $name, esc_xml( $value ) );
|
173 |
+
} else {
|
174 |
+
_doing_it_wrong(
|
175 |
+
__METHOD__,
|
176 |
+
/* translators: %s: list of element names */
|
177 |
+
sprintf(
|
178 |
+
__( 'Fields other than %s are not currently supported for the sitemap index.', 'core-sitemaps' ),
|
179 |
+
implode( ',', array( 'loc', 'lastmod' ) )
|
180 |
+
),
|
181 |
+
'5.5.0'
|
182 |
+
);
|
183 |
+
}
|
184 |
+
}
|
185 |
}
|
186 |
|
187 |
return $sitemap_index->asXML();
|
192 |
*
|
193 |
* @since 5.5.0
|
194 |
*
|
195 |
+
* @param array $url_list Array of URLs for a sitemap.
|
196 |
*/
|
197 |
public function render_sitemap( $url_list, $object_type, $object_subtype ) {
|
198 |
header( 'Content-type: application/xml; charset=UTF-8' );
|
199 |
|
200 |
$this->check_for_simple_xml_availability();
|
201 |
|
202 |
+
$sitemap_xml = $this->get_sitemap_xml( $url_list, $object_type, $object_subtype );
|
|
|
|
|
|
|
|
|
|
|
|
|
203 |
|
204 |
if ( ! empty( $sitemap_xml ) ) {
|
205 |
// All output is escaped within get_sitemap_xml().
|
221 |
* @param array $url_list Array of URLs for a sitemap.
|
222 |
* @return string|false A well-formed XML string for a sitemap index. False on error.
|
223 |
*/
|
224 |
+
public function get_sitemap_xml( $url_list, $object_type, $object_subtype ) {
|
225 |
+
|
226 |
+
$sitemap_xml = "";
|
227 |
+
$sitemap_xml = apply_filters( "wp_sitemaps_get_sitemap_xml", $sitemap_xml, $url_list, $object_type, $object_subtype );
|
228 |
+
|
229 |
+
if ( !empty($sitemap_xml) ) {
|
230 |
+
|
231 |
+
return $sitemap_xml;
|
232 |
+
}
|
233 |
+
|
234 |
$urlset = new SimpleXMLElement(
|
235 |
sprintf(
|
236 |
'%1$s%2$s%3$s',
|
243 |
foreach ( $url_list as $url_item ) {
|
244 |
$url = $urlset->addChild( 'url' );
|
245 |
|
246 |
+
// Add each element as a child node to the <url> entry.
|
247 |
+
foreach ( $url_item as $name => $value ) {
|
248 |
+
if ( 'loc' === $name ) {
|
249 |
+
$url->addChild( $name, esc_url( $value ) );
|
250 |
+
} elseif ( in_array( $name, array( 'lastmod', 'changefreq', 'priority' ), true ) ) {
|
251 |
+
$url->addChild( $name, esc_xml( $value ) );
|
252 |
} else {
|
253 |
+
_doing_it_wrong(
|
254 |
+
__METHOD__,
|
255 |
+
/* translators: %s: list of element names */
|
256 |
+
sprintf(
|
257 |
+
__( 'Fields other than %s are not currently supported for sitemaps.', 'core-sitemaps' ),
|
258 |
+
implode( ',', array( 'loc', 'lastmod', 'changefreq', 'priority' ) )
|
259 |
+
),
|
260 |
+
'5.5.0'
|
261 |
+
);
|
262 |
}
|
263 |
}
|
264 |
}
|
282 |
|
283 |
wp_die(
|
284 |
sprintf(
|
285 |
+
/* translators: %s: SimpleXML */
|
286 |
+
esc_xml( __( 'Could not generate XML sitemap due to missing %s extension', 'core-sitemaps' ) ),
|
287 |
'SimpleXML'
|
288 |
),
|
289 |
+
esc_xml( __( 'WordPress › Error', 'core-sitemaps' ) ),
|
290 |
array(
|
291 |
'response' => 501, // "Not implemented".
|
292 |
)
|
psp-include/sitemap/inc/class-wp-sitemaps-stylesheet.php
CHANGED
@@ -42,72 +42,98 @@ class WP_Sitemaps_Stylesheet {
|
|
42 |
* @since 5.5.0
|
43 |
*/
|
44 |
public function get_sitemap_stylesheet() {
|
45 |
-
$css
|
46 |
-
$title
|
47 |
-
$description =
|
48 |
-
|
49 |
-
|
50 |
-
__( 'https://www.sitemaps.org/', 'core-sitemaps' )
|
|
|
51 |
);
|
52 |
-
|
|
|
53 |
/* translators: %s: number of URLs. */
|
54 |
-
__( 'Number of URLs in this XML Sitemap: %s.', 'core-sitemaps' ),
|
55 |
-
'<xsl:value-of select="count(sitemap:urlset/sitemap:url)"/>'
|
56 |
);
|
57 |
|
58 |
-
$
|
|
|
|
|
|
|
|
|
59 |
|
60 |
$xsl_content = <<<XSL
|
61 |
<?xml version="1.0" encoding="UTF-8"?>
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
86 |
<tr>
|
87 |
-
<th
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
88 |
</tr>
|
89 |
-
|
90 |
-
|
91 |
<xsl:for-each select="sitemap:urlset/sitemap:url">
|
92 |
<tr>
|
93 |
-
<td>
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
|
|
|
|
101 |
</tr>
|
102 |
</xsl:for-each>
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
XSL;
|
112 |
|
113 |
/**
|
@@ -126,72 +152,82 @@ XSL;
|
|
126 |
* @since 5.5.0
|
127 |
*/
|
128 |
public function get_sitemap_index_stylesheet() {
|
129 |
-
$css
|
130 |
-
$title
|
131 |
-
$description
|
132 |
-
|
133 |
-
|
134 |
-
__( 'https://www.sitemaps.org/', 'core-sitemaps' )
|
|
|
135 |
);
|
136 |
-
|
|
|
137 |
/* translators: %s: number of URLs. */
|
138 |
-
__( '
|
139 |
-
'<xsl:value-of select="count(sitemap:sitemapindex/sitemap:sitemap)"/>'
|
140 |
);
|
141 |
|
142 |
-
$
|
|
|
|
|
143 |
|
144 |
$xsl_content = <<<XSL
|
145 |
<?xml version="1.0" encoding="UTF-8"?>
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
170 |
<tr>
|
171 |
-
<th
|
|
|
|
|
|
|
172 |
</tr>
|
173 |
-
|
174 |
-
|
175 |
<xsl:for-each select="sitemap:sitemapindex/sitemap:sitemap">
|
176 |
<tr>
|
177 |
-
<td>
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
<a href="{\$itemURL}">
|
182 |
-
<xsl:value-of select="sitemap:loc"/>
|
183 |
-
</a>
|
184 |
-
</td>
|
185 |
</tr>
|
186 |
</xsl:for-each>
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
XSL;
|
196 |
|
197 |
/**
|
@@ -201,7 +237,7 @@ XSL;
|
|
201 |
*
|
202 |
* @param string $xsl Full content for the xml stylesheet.
|
203 |
*/
|
204 |
-
return apply_filters( '
|
205 |
}
|
206 |
|
207 |
/**
|
42 |
* @since 5.5.0
|
43 |
*/
|
44 |
public function get_sitemap_stylesheet() {
|
45 |
+
$css = $this->get_stylesheet_css();
|
46 |
+
$title = esc_xml( __( 'XML Sitemap', 'core-sitemaps' ) );
|
47 |
+
$description = esc_xml( __( 'This XML Sitemap is generated by WordPress to make your content more visible for search engines.', 'core-sitemaps' ) );
|
48 |
+
$learn_more = sprintf(
|
49 |
+
'<a href="%s">%s</a>',
|
50 |
+
esc_url( __( 'https://www.sitemaps.org/', 'core-sitemaps' ) ),
|
51 |
+
esc_xml( __( 'Learn more about XML sitemaps.', 'core-sitemaps' ) )
|
52 |
);
|
53 |
+
|
54 |
+
$text = sprintf(
|
55 |
/* translators: %s: number of URLs. */
|
56 |
+
esc_xml( __( 'Number of URLs in this XML Sitemap: %s.', 'core-sitemaps' ) ),
|
57 |
+
'<xsl:value-of select="count( sitemap:urlset/sitemap:url )" />'
|
58 |
);
|
59 |
|
60 |
+
$lang = get_language_attributes( 'html' );
|
61 |
+
$url = esc_xml( __( 'URL', 'core-sitemaps' ) );
|
62 |
+
$lastmod = esc_xml( __( 'Last Modified', 'core-sitemaps' ) );
|
63 |
+
$changefreq = esc_xml( __( 'Change Frequency', 'core-sitemaps' ) );
|
64 |
+
$priority = esc_xml( __( 'Priority', 'core-sitemaps' ) );
|
65 |
|
66 |
$xsl_content = <<<XSL
|
67 |
<?xml version="1.0" encoding="UTF-8"?>
|
68 |
+
<xsl:stylesheet
|
69 |
+
version="1.0"
|
70 |
+
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
71 |
+
xmlns:sitemap="http://www.sitemaps.org/schemas/sitemap/0.9"
|
72 |
+
exclude-result-prefixes="sitemap"
|
73 |
+
>
|
74 |
+
|
75 |
+
<xsl:output method="html" encoding="UTF-8" indent="yes"/>
|
76 |
+
|
77 |
+
<!--
|
78 |
+
Set variables for whether lastmod, changefreq or priority occur for any url in the sitemap.
|
79 |
+
We do this up front because it can be expensive in a large sitemap.
|
80 |
+
-->
|
81 |
+
<xsl:variable name="has-lastmod" select="count( /sitemap:urlset/sitemap:url/sitemap:lastmod )" />
|
82 |
+
<xsl:variable name="has-changefreq" select="count( /sitemap:urlset/sitemap:url/sitemap:changefreq )" />
|
83 |
+
<xsl:variable name="has-priority" select="count( /sitemap:urlset/sitemap:url/sitemap:priority )" />
|
84 |
+
|
85 |
+
<xsl:template match="/">
|
86 |
+
<html {$lang}>
|
87 |
+
<head>
|
88 |
+
<title>{$title}</title>
|
89 |
+
<style>{$css}</style>
|
90 |
+
</head>
|
91 |
+
<body>
|
92 |
+
<div id="sitemap__header">
|
93 |
+
<h1>{$title}</h1>
|
94 |
+
<p>{$description}</p>
|
95 |
+
<p>{$learn_more}</p>
|
96 |
+
</div>
|
97 |
+
<div id="sitemap__content">
|
98 |
+
<p class="text">{$text}</p>
|
99 |
+
<table id="sitemap__table">
|
100 |
+
<thead>
|
101 |
<tr>
|
102 |
+
<th class="loc">{$url}</th>
|
103 |
+
<xsl:if test="\$has-lastmod">
|
104 |
+
<th class="lastmod">{$lastmod}</th>
|
105 |
+
</xsl:if>
|
106 |
+
<xsl:if test="\$has-changefreq">
|
107 |
+
<th class="changefreq">{$changefreq}</th>
|
108 |
+
</xsl:if>
|
109 |
+
<xsl:if test="\$has-priority">
|
110 |
+
<th class="priority">{$priority}</th>
|
111 |
+
</xsl:if>
|
112 |
</tr>
|
113 |
+
</thead>
|
114 |
+
<tbody>
|
115 |
<xsl:for-each select="sitemap:urlset/sitemap:url">
|
116 |
<tr>
|
117 |
+
<td class="loc"><a href="{sitemap:loc}"><xsl:value-of select="sitemap:loc" /></a></td>
|
118 |
+
<xsl:if test="\$has-lastmod">
|
119 |
+
<td class="lastmod"><xsl:value-of select="sitemap:lastmod" /></td>
|
120 |
+
</xsl:if>
|
121 |
+
<xsl:if test="\$has-changefreq">
|
122 |
+
<td class="changefreq"><xsl:value-of select="sitemap:changefreq" /></td>
|
123 |
+
</xsl:if>
|
124 |
+
<xsl:if test="\$has-priority">
|
125 |
+
<td class="priority"><xsl:value-of select="sitemap:priority" /></td>
|
126 |
+
</xsl:if>
|
127 |
</tr>
|
128 |
</xsl:for-each>
|
129 |
+
</tbody>
|
130 |
+
</table>
|
131 |
+
</div>
|
132 |
+
</body>
|
133 |
+
</html>
|
134 |
+
</xsl:template>
|
135 |
+
</xsl:stylesheet>
|
136 |
+
|
137 |
XSL;
|
138 |
|
139 |
/**
|
152 |
* @since 5.5.0
|
153 |
*/
|
154 |
public function get_sitemap_index_stylesheet() {
|
155 |
+
$css = $this->get_stylesheet_css();
|
156 |
+
$title = esc_xml( __( 'XML Sitemap', 'core-sitemaps' ) );
|
157 |
+
$description = esc_xml( __( 'This XML Sitemap is generated by WordPress to make your content more visible for search engines.', 'core-sitemaps' ) );
|
158 |
+
$learn_more = sprintf(
|
159 |
+
'<a href="%s">%s</a>',
|
160 |
+
esc_url( __( 'https://www.sitemaps.org/', 'core-sitemaps' ) ),
|
161 |
+
esc_xml( __( 'Learn more about XML sitemaps.', 'core-sitemaps' ) )
|
162 |
);
|
163 |
+
|
164 |
+
$text = sprintf(
|
165 |
/* translators: %s: number of URLs. */
|
166 |
+
esc_xml( __( 'Number of URLs in this XML Sitemap: %s.', 'core-sitemaps' ) ),
|
167 |
+
'<xsl:value-of select="count( sitemap:sitemapindex/sitemap:sitemap )" />'
|
168 |
);
|
169 |
|
170 |
+
$lang = get_language_attributes( 'html' );
|
171 |
+
$url = esc_xml( __( 'URL', 'core-sitemaps' ) );
|
172 |
+
$lastmod = esc_xml( __( 'Last Modified', 'core-sitemaps' ) );
|
173 |
|
174 |
$xsl_content = <<<XSL
|
175 |
<?xml version="1.0" encoding="UTF-8"?>
|
176 |
+
<xsl:stylesheet
|
177 |
+
version="1.0"
|
178 |
+
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
179 |
+
xmlns:sitemap="http://www.sitemaps.org/schemas/sitemap/0.9"
|
180 |
+
exclude-result-prefixes="sitemap"
|
181 |
+
>
|
182 |
+
|
183 |
+
<xsl:output method="html" encoding="UTF-8" indent="yes" />
|
184 |
+
|
185 |
+
<!--
|
186 |
+
Set variables for whether lastmod occurs for any sitemap in the index.
|
187 |
+
We do this up front because it can be expensive in a large sitemap.
|
188 |
+
-->
|
189 |
+
<xsl:variable name="has-lastmod" select="count( /sitemap:sitemapindex/sitemap:sitemap/sitemap:lastmod )" />
|
190 |
+
|
191 |
+
<xsl:template match="/">
|
192 |
+
<html {$lang}>
|
193 |
+
<head>
|
194 |
+
<title>{$title}</title>
|
195 |
+
<style>{$css}</style>
|
196 |
+
</head>
|
197 |
+
<body>
|
198 |
+
<div id="sitemap__header">
|
199 |
+
<h1>{$title}</h1>
|
200 |
+
<p>{$description}</p>
|
201 |
+
<p>{$learn_more}</p>
|
202 |
+
</div>
|
203 |
+
<div id="sitemap__content">
|
204 |
+
<p class="text">{$text}</p>
|
205 |
+
<table id="sitemap__table">
|
206 |
+
<thead>
|
207 |
<tr>
|
208 |
+
<th class="loc">{$url}</th>
|
209 |
+
<xsl:if test="\$has-lastmod">
|
210 |
+
<th class="lastmod">{$lastmod}</th>
|
211 |
+
</xsl:if>
|
212 |
</tr>
|
213 |
+
</thead>
|
214 |
+
<tbody>
|
215 |
<xsl:for-each select="sitemap:sitemapindex/sitemap:sitemap">
|
216 |
<tr>
|
217 |
+
<td class="loc"><a href="{sitemap:loc}"><xsl:value-of select="sitemap:loc" /></a></td>
|
218 |
+
<xsl:if test="\$has-lastmod">
|
219 |
+
<td class="lastmod"><xsl:value-of select="sitemap:lastmod" /></td>
|
220 |
+
</xsl:if>
|
|
|
|
|
|
|
|
|
221 |
</tr>
|
222 |
</xsl:for-each>
|
223 |
+
</tbody>
|
224 |
+
</table>
|
225 |
+
</div>
|
226 |
+
</body>
|
227 |
+
</html>
|
228 |
+
</xsl:template>
|
229 |
+
</xsl:stylesheet>
|
230 |
+
|
231 |
XSL;
|
232 |
|
233 |
/**
|
237 |
*
|
238 |
* @param string $xsl Full content for the xml stylesheet.
|
239 |
*/
|
240 |
+
return apply_filters( 'wp_sitemaps_stylesheet_index_content', $xsl_content );
|
241 |
}
|
242 |
|
243 |
/**
|
psp-include/sitemap/inc/class-wp-sitemaps.php
CHANGED
@@ -83,7 +83,7 @@ class WP_Sitemaps {
|
|
83 |
* @since 5.5.0
|
84 |
*
|
85 |
* @param array $providers {
|
86 |
-
* Array of
|
87 |
*
|
88 |
* @type object $posts The WP_Sitemaps_Posts object.
|
89 |
* @type object $taxonomies The WP_Sitemaps_Taxonomies object.
|
@@ -180,12 +180,12 @@ class WP_Sitemaps {
|
|
180 |
$sitemap = sanitize_text_field( get_query_var( 'sitemap' ) );
|
181 |
$object_subtype = sanitize_text_field( get_query_var( 'sitemap-sub-type' ) );
|
182 |
$stylesheet_type = sanitize_text_field( get_query_var( 'sitemap-stylesheet' ) );
|
183 |
-
$paged = absint( get_query_var( 'paged' ) );
|
184 |
-
|
185 |
// Bail early if this isn't a sitemap or stylesheet route.
|
186 |
if ( ! ( $sitemap || $stylesheet_type ) ) {
|
187 |
return;
|
188 |
-
}
|
189 |
|
190 |
// Render stylesheet if this is stylesheet route.
|
191 |
if ( $stylesheet_type ) {
|
@@ -194,7 +194,7 @@ class WP_Sitemaps {
|
|
194 |
$stylesheet->render_stylesheet( $stylesheet_type );
|
195 |
exit;
|
196 |
}
|
197 |
-
|
198 |
// Render the index.
|
199 |
if ( 'index' === $sitemap ) {
|
200 |
$sitemap_list = $this->index->get_sitemap_list();
|
@@ -202,19 +202,20 @@ class WP_Sitemaps {
|
|
202 |
$this->renderer->render_index( $sitemap_list );
|
203 |
exit;
|
204 |
}
|
205 |
-
|
206 |
$provider = $this->registry->get_sitemap( $sitemap );
|
207 |
|
208 |
if ( ! $provider ) {
|
209 |
return;
|
210 |
}
|
|
|
|
|
211 |
|
212 |
if ( empty( $paged ) ) {
|
213 |
$paged = 1;
|
214 |
}
|
215 |
|
216 |
$url_list = $provider->get_url_list( $paged, $object_subtype );
|
217 |
-
$object_type = $provider->get_object_type();
|
218 |
|
219 |
// Force a 404 and bail early if no URLs are present.
|
220 |
if ( empty( $url_list ) ) {
|
83 |
* @since 5.5.0
|
84 |
*
|
85 |
* @param array $providers {
|
86 |
+
* Array of WP_Sitemaps_Provider objects keyed by their name.
|
87 |
*
|
88 |
* @type object $posts The WP_Sitemaps_Posts object.
|
89 |
* @type object $taxonomies The WP_Sitemaps_Taxonomies object.
|
180 |
$sitemap = sanitize_text_field( get_query_var( 'sitemap' ) );
|
181 |
$object_subtype = sanitize_text_field( get_query_var( 'sitemap-sub-type' ) );
|
182 |
$stylesheet_type = sanitize_text_field( get_query_var( 'sitemap-stylesheet' ) );
|
183 |
+
$paged = absint( get_query_var( 'paged' ) );
|
184 |
+
$object_type = sanitize_text_field( get_query_var( 'sitemap-type' ) );
|
185 |
// Bail early if this isn't a sitemap or stylesheet route.
|
186 |
if ( ! ( $sitemap || $stylesheet_type ) ) {
|
187 |
return;
|
188 |
+
}
|
189 |
|
190 |
// Render stylesheet if this is stylesheet route.
|
191 |
if ( $stylesheet_type ) {
|
194 |
$stylesheet->render_stylesheet( $stylesheet_type );
|
195 |
exit;
|
196 |
}
|
197 |
+
|
198 |
// Render the index.
|
199 |
if ( 'index' === $sitemap ) {
|
200 |
$sitemap_list = $this->index->get_sitemap_list();
|
202 |
$this->renderer->render_index( $sitemap_list );
|
203 |
exit;
|
204 |
}
|
205 |
+
|
206 |
$provider = $this->registry->get_sitemap( $sitemap );
|
207 |
|
208 |
if ( ! $provider ) {
|
209 |
return;
|
210 |
}
|
211 |
+
|
212 |
+
$object_type = $provider->get_object_type();
|
213 |
|
214 |
if ( empty( $paged ) ) {
|
215 |
$paged = 1;
|
216 |
}
|
217 |
|
218 |
$url_list = $provider->get_url_list( $paged, $object_subtype );
|
|
|
219 |
|
220 |
// Force a 404 and bail early if no URLs are present.
|
221 |
if ( empty( $url_list ) ) {
|
psp-include/sitemap/inc/functions.php
CHANGED
@@ -88,7 +88,7 @@ function wp_get_sitemaps() {
|
|
88 |
* @param WP_Sitemaps_Provider $provider The `Sitemaps_Provider` instance implementing the sitemap.
|
89 |
* @return bool Returns true if the sitemap was added. False on failure.
|
90 |
*/
|
91 |
-
function wp_register_sitemap( $name, $provider ) {
|
92 |
$sitemaps = wp_sitemaps_get_server();
|
93 |
|
94 |
if ( ! $sitemaps ) {
|
@@ -117,3 +117,88 @@ function wp_sitemaps_get_max_urls( $object_type ) {
|
|
117 |
*/
|
118 |
return apply_filters( 'wp_sitemaps_max_urls', WP_SITEMAPS_MAX_URLS, $object_type );
|
119 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
88 |
* @param WP_Sitemaps_Provider $provider The `Sitemaps_Provider` instance implementing the sitemap.
|
89 |
* @return bool Returns true if the sitemap was added. False on failure.
|
90 |
*/
|
91 |
+
function wp_register_sitemap( $name, WP_Sitemaps_Provider $provider ) {
|
92 |
$sitemaps = wp_sitemaps_get_server();
|
93 |
|
94 |
if ( ! $sitemaps ) {
|
117 |
*/
|
118 |
return apply_filters( 'wp_sitemaps_max_urls', WP_SITEMAPS_MAX_URLS, $object_type );
|
119 |
}
|
120 |
+
|
121 |
+
if ( ! function_exists( 'esc_xml' ) ) :
|
122 |
+
/**
|
123 |
+
* Escaping for XML blocks.
|
124 |
+
*
|
125 |
+
* @since 5.5.0
|
126 |
+
*
|
127 |
+
* @param string $text Text to escape.
|
128 |
+
* @return string
|
129 |
+
*/
|
130 |
+
function esc_xml( $text ) { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals
|
131 |
+
$safe_text = wp_check_invalid_utf8( $text );
|
132 |
+
|
133 |
+
$cdata_regex = '\<\!\[CDATA\[.*?\]\]\>';
|
134 |
+
$regex = <<<EOF
|
135 |
+
/
|
136 |
+
(?=.*?{$cdata_regex}) # lookahead that will match anything followed by a CDATA Section
|
137 |
+
(?<non_cdata_followed_by_cdata>(.*?)) # the "anything" matched by the lookahead
|
138 |
+
(?<cdata>({$cdata_regex})) # the CDATA Section matched by the lookahead
|
139 |
+
|
140 |
+
| # alternative
|
141 |
+
|
142 |
+
(?<non_cdata>(.*)) # non-CDATA Section
|
143 |
+
/sx
|
144 |
+
EOF;
|
145 |
+
$safe_text = (string) preg_replace_callback(
|
146 |
+
$regex,
|
147 |
+
function( $matches ) {
|
148 |
+
if ( ! $matches[0] ) {
|
149 |
+
return '';
|
150 |
+
} elseif ( ! empty( $matches['non_cdata'] ) ) {
|
151 |
+
// escape HTML entities in the non-CDATA Section.
|
152 |
+
return _esc_xml_non_cdata_section( $matches['non_cdata'] );
|
153 |
+
}
|
154 |
+
|
155 |
+
// Return the CDATA Section unchanged, escape HTML entities in the rest.
|
156 |
+
return _esc_xml_non_cdata_section( $matches['non_cdata_followed_by_cdata'] ) . $matches['cdata'];
|
157 |
+
},
|
158 |
+
$safe_text
|
159 |
+
);
|
160 |
+
|
161 |
+
/**
|
162 |
+
* Filters a string cleaned and escaped for output in XML.
|
163 |
+
*
|
164 |
+
* Text passed to esc_xml() is stripped of invalid or special characters
|
165 |
+
* before output. HTML named character references are converted to their
|
166 |
+
* equivalent code points.
|
167 |
+
*
|
168 |
+
* @since 5.5.0
|
169 |
+
*
|
170 |
+
* @param string $safe_text The text after it has been escaped.
|
171 |
+
* @param string $text The text prior to being escaped.
|
172 |
+
*/
|
173 |
+
return apply_filters( 'esc_xml', $safe_text, $text ); // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals
|
174 |
+
}
|
175 |
+
endif;
|
176 |
+
|
177 |
+
if ( ! function_exists( '_esc_xml_non_cdata_section' ) ) :
|
178 |
+
/**
|
179 |
+
* Escaping for non-CDATA Section XML blocks.
|
180 |
+
*
|
181 |
+
* @access private
|
182 |
+
* @since 5.5.0
|
183 |
+
*
|
184 |
+
* @param string $text Text to escape.
|
185 |
+
* @return string
|
186 |
+
*/
|
187 |
+
function _esc_xml_non_cdata_section( $text ) { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals
|
188 |
+
global $allowedentitynames;
|
189 |
+
|
190 |
+
$safe_text = _wp_specialchars( $text, ENT_QUOTES );
|
191 |
+
// Replace HTML entities with their Unicode codepoints,
|
192 |
+
// without doing the same for the 5 XML entities.
|
193 |
+
$html_only_entities = array_diff( $allowedentitynames, array( 'amp', 'lt', 'gt', 'apos', 'quot' ) );
|
194 |
+
$safe_text = (string) preg_replace_callback(
|
195 |
+
'/&(' . implode( '|', $html_only_entities ) . ');/',
|
196 |
+
function( $matches ) {
|
197 |
+
return html_entity_decode( $matches[0], ENT_HTML5 );
|
198 |
+
},
|
199 |
+
$safe_text
|
200 |
+
);
|
201 |
+
|
202 |
+
return $safe_text;
|
203 |
+
}
|
204 |
+
endif;
|
psp-include/sitemap/inc/providers/class-wp-sitemaps-posts.php
CHANGED
@@ -38,7 +38,7 @@ class WP_Sitemaps_Posts extends WP_Sitemaps_Provider {
|
|
38 |
unset( $post_types['attachment'] );
|
39 |
|
40 |
/**
|
41 |
-
* Filters the list of post object
|
42 |
*
|
43 |
* @since 5.5.0
|
44 |
*
|
@@ -107,9 +107,19 @@ class WP_Sitemaps_Posts extends WP_Sitemaps_Provider {
|
|
107 |
*/
|
108 |
if ( 'page' === $post_type && 1 === $page_num && 'posts' === get_option( 'show_on_front' ) ) {
|
109 |
// Extract the data needed for home URL to add to the array.
|
110 |
-
$
|
111 |
'loc' => home_url(),
|
112 |
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
113 |
}
|
114 |
|
115 |
foreach ( $posts as $post ) {
|
@@ -127,7 +137,7 @@ class WP_Sitemaps_Posts extends WP_Sitemaps_Provider {
|
|
127 |
* @param string $post_type Name of the post_type.
|
128 |
*/
|
129 |
$sitemap_entry = apply_filters( 'wp_sitemaps_posts_entry', $sitemap_entry, $post, $post_type );
|
130 |
-
$url_list[]
|
131 |
}
|
132 |
|
133 |
return $url_list;
|
38 |
unset( $post_types['attachment'] );
|
39 |
|
40 |
/**
|
41 |
+
* Filters the list of post object subtypes available within the sitemap.
|
42 |
*
|
43 |
* @since 5.5.0
|
44 |
*
|
107 |
*/
|
108 |
if ( 'page' === $post_type && 1 === $page_num && 'posts' === get_option( 'show_on_front' ) ) {
|
109 |
// Extract the data needed for home URL to add to the array.
|
110 |
+
$sitemap_entry = array(
|
111 |
'loc' => home_url(),
|
112 |
);
|
113 |
+
|
114 |
+
/**
|
115 |
+
* Filters the sitemap entry for the home page when the 'show_on_front' option equals 'posts'.
|
116 |
+
*
|
117 |
+
* @since 5.5.0
|
118 |
+
*
|
119 |
+
* @param array $sitemap_entry Sitemap entry for the home page.
|
120 |
+
*/
|
121 |
+
$sitemap_entry = apply_filters( 'wp_sitemaps_posts_show_on_front_entry', $sitemap_entry );
|
122 |
+
$url_list[] = $sitemap_entry;
|
123 |
}
|
124 |
|
125 |
foreach ( $posts as $post ) {
|
137 |
* @param string $post_type Name of the post_type.
|
138 |
*/
|
139 |
$sitemap_entry = apply_filters( 'wp_sitemaps_posts_entry', $sitemap_entry, $post, $post_type );
|
140 |
+
$url_list[] = $sitemap_entry;
|
141 |
}
|
142 |
|
143 |
return $url_list;
|
psp-include/sitemap/psp_sitemap.php
CHANGED
@@ -103,7 +103,7 @@ class PspSitemap {
|
|
103 |
|
104 |
add_filter('wp_sitemaps_taxonomies_entry', array($this, 'psp_term_entry_for_sitemap'), 10, 3);
|
105 |
|
106 |
-
add_filter('wp_sitemaps_get_sitemap_xml', array($this, 'psp_get_sitemap_xml'), 10,
|
107 |
|
108 |
// Boot the sitemaps system.
|
109 |
add_action( 'init', 'wp_sitemaps_get_server' );
|
@@ -452,7 +452,13 @@ class PspSitemap {
|
|
452 |
* @param array $url_list A list of URLs for a sitemap.
|
453 |
* @return string|false A well-formed XML string for a sitemap index. False on error.
|
454 |
*/
|
455 |
-
public function psp_get_sitemap_xml( $url_list, $object_type, $object_subtype ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
456 |
|
457 |
$psp_sm_settings = $this->psp_sitemap_settings;
|
458 |
|
@@ -513,9 +519,11 @@ class PspSitemap {
|
|
513 |
$url->addChild( $attr, esc_attr( $value ) );
|
514 |
}
|
515 |
}
|
516 |
-
|
517 |
-
|
|
|
518 |
return $urlset->asXML();
|
|
|
519 |
}
|
520 |
|
521 |
}
|
103 |
|
104 |
add_filter('wp_sitemaps_taxonomies_entry', array($this, 'psp_term_entry_for_sitemap'), 10, 3);
|
105 |
|
106 |
+
add_filter('wp_sitemaps_get_sitemap_xml', array($this, 'psp_get_sitemap_xml'), 10, 4);
|
107 |
|
108 |
// Boot the sitemaps system.
|
109 |
add_action( 'init', 'wp_sitemaps_get_server' );
|
452 |
* @param array $url_list A list of URLs for a sitemap.
|
453 |
* @return string|false A well-formed XML string for a sitemap index. False on error.
|
454 |
*/
|
455 |
+
public function psp_get_sitemap_xml( $sitemap_xml = '', $url_list, $object_type, $object_subtype ) {
|
456 |
+
|
457 |
+
if (!$url_list) {
|
458 |
+
|
459 |
+
return $sitemap_xml;
|
460 |
+
|
461 |
+
}
|
462 |
|
463 |
$psp_sm_settings = $this->psp_sitemap_settings;
|
464 |
|
519 |
$url->addChild( $attr, esc_attr( $value ) );
|
520 |
}
|
521 |
}
|
522 |
+
|
523 |
+
}
|
524 |
+
|
525 |
return $urlset->asXML();
|
526 |
+
|
527 |
}
|
528 |
|
529 |
}
|
psp-include/sitemap/psp_sitemap_settings.php
CHANGED
@@ -230,7 +230,7 @@ class PspSmSettings extends PspSettings {
|
|
230 |
'label_for' => 'psp_sm_posts_id',
|
231 |
'option_name' => $psp_sm_settings_name.'[excluded_post_ids]',
|
232 |
'option_value' => isset($psp_sm_settings['excluded_post_ids']) ? esc_attr($psp_sm_settings['excluded_post_ids']) : '',
|
233 |
-
'option_description' => esc_html__( 'Enter a comma separated list of Post IDs to be excluded from SiteMap. This can be automatically updated via Platinum SEO Meta Box for individual Posts or Pages', 'platinum-seo-pack' ),
|
234 |
);
|
235 |
add_settings_field( 'psp_sm_posts_id', $psp_sm_posts_field_title, array( &$this, 'psp_add_field_text' ), $this->psp_sm_settings_group, 'psp_sitemap_section', $psp_sm_posts_field);
|
236 |
|
@@ -242,7 +242,7 @@ class PspSmSettings extends PspSettings {
|
|
242 |
'label_for' => 'psp_sm_terms_ids',
|
243 |
'option_name' => $psp_sm_settings_name.'[excluded_term_ids]',
|
244 |
'option_value' => isset($psp_sm_settings['excluded_term_ids']) ? esc_attr($psp_sm_settings['excluded_term_ids']) : '',
|
245 |
-
'option_description' => esc_html__( 'Enter a comma separated list of Term IDs to be excluded from SiteMap. This can be automatically updated via Platinum SEO Meta Box for individual Category or Taxonomy Terms', 'platinum-seo-pack' ),
|
246 |
);
|
247 |
add_settings_field( 'psp_sm_terms_ids', $psp_sm_terms_field_title, array( &$this, 'psp_add_field_text' ), $this->psp_sm_settings_group, 'psp_sitemap_section', $psp_sm_terms_field);
|
248 |
|
230 |
'label_for' => 'psp_sm_posts_id',
|
231 |
'option_name' => $psp_sm_settings_name.'[excluded_post_ids]',
|
232 |
'option_value' => isset($psp_sm_settings['excluded_post_ids']) ? esc_attr($psp_sm_settings['excluded_post_ids']) : '',
|
233 |
+
'option_description' => esc_html__( 'Enter a comma separated list of Post IDs to be excluded from SiteMap. This can be automatically updated via Platinum SEO Meta Box for individual Posts or Pages.NoIndex Pages are excluded from the sitemap by default and you need not have to enter them here again.', 'platinum-seo-pack' ),
|
234 |
);
|
235 |
add_settings_field( 'psp_sm_posts_id', $psp_sm_posts_field_title, array( &$this, 'psp_add_field_text' ), $this->psp_sm_settings_group, 'psp_sitemap_section', $psp_sm_posts_field);
|
236 |
|
242 |
'label_for' => 'psp_sm_terms_ids',
|
243 |
'option_name' => $psp_sm_settings_name.'[excluded_term_ids]',
|
244 |
'option_value' => isset($psp_sm_settings['excluded_term_ids']) ? esc_attr($psp_sm_settings['excluded_term_ids']) : '',
|
245 |
+
'option_description' => esc_html__( 'Enter a comma separated list of Term IDs to be excluded from SiteMap. This can be automatically updated via Platinum SEO Meta Box for individual Category or Taxonomy Terms. NoIndex Terms are excluded from the sitemap by default and you need not have to enter them here again.', 'platinum-seo-pack' ),
|
246 |
);
|
247 |
add_settings_field( 'psp_sm_terms_ids', $psp_sm_terms_field_title, array( &$this, 'psp_add_field_text' ), $this->psp_sm_settings_group, 'psp_sitemap_section', $psp_sm_terms_field);
|
248 |
|
psp-include/sitemap/sitemap-image.xsl
CHANGED
@@ -64,14 +64,13 @@
|
|
64 |
<body>
|
65 |
<div id="intro">
|
66 |
<p>
|
67 |
-
This is
|
68 |
-
It
|
69 |
-
You can find more information about XML sitemaps on <a rel="external nofollow" href="http://sitemaps.org">sitemaps.org</a> and Google's <a rel="external nofollow" href="http://code.google.com/p/sitemap-generators/wiki/SitemapGenerators">list of sitemap programs</a>.
|
70 |
</p>
|
71 |
</div>
|
72 |
<div id="sitemap__header">
|
73 |
<h1>XML Sitemap</h1>
|
74 |
-
<p>This XML Sitemap is generated by WordPress to make your content
|
75 |
</div>
|
76 |
<div id="sitemap__content">
|
77 |
<p class="text">Number of URLs in this XML Sitemap: <xsl:value-of select="count(sitemap:urlset/sitemap:url)"/>.</p>
|
64 |
<body>
|
65 |
<div id="intro">
|
66 |
<p>
|
67 |
+
This is an XML Sitemap which is supposed to be processed by search engines that follow the XML Sitemap standards like Google, Bing and other Search Engines.<br />
|
68 |
+
It is generated using the <a rel="nofollow" href="https://wordpress.org/plugins/platinum-seo-pack/">WordPress</a> SiteMap and the <strong>Platinum SEO Plugin</strong> by <strong>Techblissonline.com</strong>
|
|
|
69 |
</p>
|
70 |
</div>
|
71 |
<div id="sitemap__header">
|
72 |
<h1>XML Sitemap</h1>
|
73 |
+
<p>This XML Sitemap is generated by WordPress to make your content discoverable by search engines. Learn more about XML sitemaps on <a href="https://www.sitemaps.org/">sitemaps.org</a>.</p>
|
74 |
</div>
|
75 |
<div id="sitemap__content">
|
76 |
<p class="text">Number of URLs in this XML Sitemap: <xsl:value-of select="count(sitemap:urlset/sitemap:url)"/>.</p>
|
psp-include/sitemap/sitemap-index.xsl
CHANGED
@@ -56,14 +56,13 @@
|
|
56 |
<body>
|
57 |
<div id="intro">
|
58 |
<p>
|
59 |
-
This is
|
60 |
-
It
|
61 |
-
You can find more information about XML sitemaps on <a rel="external nofollow" href="http://sitemaps.org">sitemaps.org</a> and Google's <a rel="external nofollow" href="http://code.google.com/p/sitemap-generators/wiki/SitemapGenerators">list of sitemap programs</a>.
|
62 |
</p>
|
63 |
</div>
|
64 |
<div id="sitemap__header">
|
65 |
<h1>XML Sitemap</h1>
|
66 |
-
<p>This XML Sitemap is generated by WordPress to make your content
|
67 |
</div>
|
68 |
<div id="sitemap__content">
|
69 |
<p class="text">This XML Sitemap contains <xsl:value-of select="count(sitemap:sitemapindex/sitemap:sitemap)"/> URLs.</p>
|
56 |
<body>
|
57 |
<div id="intro">
|
58 |
<p>
|
59 |
+
This is an XML Sitemap which is supposed to be processed by search engines that follow the XML Sitemap standards like Google, Bing and other Search Engines.<br />
|
60 |
+
It is generated using the <a rel="nofollow" href="https://wordpress.org/plugins/platinum-seo-pack/">WordPress</a> SiteMap and the <strong>Platinum SEO Plugin</strong> by <strong>Techblissonline.com</strong>
|
|
|
61 |
</p>
|
62 |
</div>
|
63 |
<div id="sitemap__header">
|
64 |
<h1>XML Sitemap</h1>
|
65 |
+
<p>This XML Sitemap is generated by WordPress to make your content discoverable by search engines. Learn more about XML sitemaps on <a href="https://www.sitemaps.org/">sitemaps.org</a>.</p>
|
66 |
</div>
|
67 |
<div id="sitemap__content">
|
68 |
<p class="text">This XML Sitemap contains <xsl:value-of select="count(sitemap:sitemapindex/sitemap:sitemap)"/> URLs.</p>
|
psp-include/sitemap/sitemap-post.xsl
CHANGED
@@ -56,14 +56,13 @@
|
|
56 |
<body>
|
57 |
<div id="intro">
|
58 |
<p>
|
59 |
-
This is
|
60 |
-
It
|
61 |
-
You can find more information about XML sitemaps on <a rel="external nofollow" href="http://sitemaps.org">sitemaps.org</a> and Google's <a rel="external nofollow" href="http://code.google.com/p/sitemap-generators/wiki/SitemapGenerators">list of sitemap programs</a>.
|
62 |
</p>
|
63 |
</div>
|
64 |
<div id="sitemap__header">
|
65 |
<h1>XML Sitemap</h1>
|
66 |
-
<p>This XML Sitemap is generated by WordPress to make your content
|
67 |
</div>
|
68 |
<div id="sitemap__content">
|
69 |
<p class="text">Number of URLs in this XML Sitemap: <xsl:value-of select="count(sitemap:urlset/sitemap:url)"/>.</p>
|
56 |
<body>
|
57 |
<div id="intro">
|
58 |
<p>
|
59 |
+
This is an XML Sitemap which is supposed to be processed by search engines that follow the XML Sitemap standards like Google, Bing and other Search Engines.<br />
|
60 |
+
It is generated using the <a rel="nofollow" href="https://wordpress.org/plugins/platinum-seo-pack/">WordPress</a> SiteMap and the <strong>Platinum SEO Plugin</strong> by <strong>Techblissonline.com</strong>
|
|
|
61 |
</p>
|
62 |
</div>
|
63 |
<div id="sitemap__header">
|
64 |
<h1>XML Sitemap</h1>
|
65 |
+
<p>This XML Sitemap is generated by WordPress to make your content discoverable by search engines. Learn more about XML sitemaps on <a href="https://www.sitemaps.org/">sitemaps.org</a>.</p>
|
66 |
</div>
|
67 |
<div id="sitemap__content">
|
68 |
<p class="text">Number of URLs in this XML Sitemap: <xsl:value-of select="count(sitemap:urlset/sitemap:url)"/>.</p>
|
psp-include/sitemap/sitemap.xsl
CHANGED
@@ -56,14 +56,13 @@
|
|
56 |
<body>
|
57 |
<div id="intro">
|
58 |
<p>
|
59 |
-
This is
|
60 |
-
It
|
61 |
-
You can find more information about XML sitemaps on <a rel="external nofollow" href="http://sitemaps.org">sitemaps.org</a> and Google's <a rel="external nofollow" href="http://code.google.com/p/sitemap-generators/wiki/SitemapGenerators">list of sitemap programs</a>.
|
62 |
</p>
|
63 |
</div>
|
64 |
<div id="sitemap__header">
|
65 |
<h1>XML Sitemap</h1>
|
66 |
-
<p>This XML Sitemap is generated by WordPress to make your content
|
67 |
</div>
|
68 |
<div id="sitemap__content">
|
69 |
<p class="text">Number of URLs in this XML Sitemap: <xsl:value-of select="count(sitemap:urlset/sitemap:url)"/>.</p>
|
56 |
<body>
|
57 |
<div id="intro">
|
58 |
<p>
|
59 |
+
This is an XML Sitemap which is supposed to be processed by search engines that follow the XML Sitemap standards like Google, Bing and other Search Engines.<br />
|
60 |
+
It is generated using the <a rel="nofollow" href="https://wordpress.org/plugins/platinum-seo-pack/">WordPress</a> SiteMap and the <strong>Platinum SEO Plugin</strong> by <strong>Techblissonline.com</strong>
|
|
|
61 |
</p>
|
62 |
</div>
|
63 |
<div id="sitemap__header">
|
64 |
<h1>XML Sitemap</h1>
|
65 |
+
<p>This XML Sitemap is generated by WordPress to make your content discoverable by search engines. Learn more about XML sitemaps on <a href="https://www.sitemaps.org/">sitemaps.org</a>.</p>
|
66 |
</div>
|
67 |
<div id="sitemap__content">
|
68 |
<p class="text">Number of URLs in this XML Sitemap: <xsl:value-of select="count(sitemap:urlset/sitemap:url)"/>.</p>
|
psp-include/utilities/psp_helper.php
CHANGED
@@ -19,7 +19,7 @@ class PspHelper {
|
|
19 |
* as description. Touch only if you know what you're doing
|
20 |
*/
|
21 |
private $min_description_length = 1;
|
22 |
-
private $version = "2.1.
|
23 |
|
24 |
public $sitename = "";
|
25 |
public $sitedescription = "";
|
19 |
* as description. Touch only if you know what you're doing
|
20 |
*/
|
21 |
private $min_description_length = 1;
|
22 |
+
private $version = "2.1.3";
|
23 |
|
24 |
public $sitename = "";
|
25 |
public $sitedescription = "";
|
psp_main.php
CHANGED
@@ -258,15 +258,15 @@ class PspMain {
|
|
258 |
'1' === $_GET['psp_ignore_notice'] ) {
|
259 |
$user_id = get_current_user_id();
|
260 |
// Add the meta so that the notice is permanently dismissed.
|
261 |
-
delete_user_meta( $user_id, 'psp_ignore_notice_v_209' );
|
262 |
-
update_user_meta( $user_id, 'psp_ignore_notice', "
|
263 |
};
|
264 |
};
|
265 |
}
|
266 |
|
267 |
public function platinum_seo_admin_notice__success() {
|
268 |
$user_id = get_current_user_id();
|
269 |
-
if ( "
|
270 |
global $pagenow;
|
271 |
$psp_pages = array('platinum-seo-social-pack-by-techblissonline', 'psp-social-by-techblissonline', 'psp-tools-by-techblissonline', 'pspp-licenses');
|
272 |
if ('index.php' === $pagenow || ( $pagenow == 'admin.php' && in_array(sanitize_key($_GET['page']), $psp_pages))) {
|
@@ -276,7 +276,7 @@ class PspMain {
|
|
276 |
'psp_ignore_notice' => '1',
|
277 |
'action' => 'psp_delete_adminnotice',
|
278 |
'nonce' => wp_create_nonce('psp_delete_adminnotice'),
|
279 |
-
] ) ) .'" style="float:right; display:block; border:none;">'.esc_html__( 'Dismiss permanently', 'platinum-seo-pack' ) .'</a>'.'<br>'. esc_html__( 'See What has Changed in this', 'platinum-seo-pack' ).'<a href="https://techblissonline.com/platinum-wordpress-seo-plugin/#what-is-new" target="_blank"> '.esc_html__( ' Version ', 'platinum-seo-pack' ).'2.1.
|
280 |
</div>
|
281 |
<?php
|
282 |
}
|
258 |
'1' === $_GET['psp_ignore_notice'] ) {
|
259 |
$user_id = get_current_user_id();
|
260 |
// Add the meta so that the notice is permanently dismissed.
|
261 |
+
//delete_user_meta( $user_id, 'psp_ignore_notice_v_209' );
|
262 |
+
update_user_meta( $user_id, 'psp_ignore_notice', "v_213" );
|
263 |
};
|
264 |
};
|
265 |
}
|
266 |
|
267 |
public function platinum_seo_admin_notice__success() {
|
268 |
$user_id = get_current_user_id();
|
269 |
+
if ( "v_213" === trim(get_user_meta( $user_id, 'psp_ignore_notice', true ) )) return;
|
270 |
global $pagenow;
|
271 |
$psp_pages = array('platinum-seo-social-pack-by-techblissonline', 'psp-social-by-techblissonline', 'psp-tools-by-techblissonline', 'pspp-licenses');
|
272 |
if ('index.php' === $pagenow || ( $pagenow == 'admin.php' && in_array(sanitize_key($_GET['page']), $psp_pages))) {
|
276 |
'psp_ignore_notice' => '1',
|
277 |
'action' => 'psp_delete_adminnotice',
|
278 |
'nonce' => wp_create_nonce('psp_delete_adminnotice'),
|
279 |
+
] ) ) .'" style="float:right; display:block; border:none;">'.esc_html__( 'Dismiss permanently', 'platinum-seo-pack' ) .'</a>'.'<br>'. esc_html__( 'See What has Changed in this', 'platinum-seo-pack' ).'<a href="https://techblissonline.com/platinum-wordpress-seo-plugin/#what-is-new" target="_blank"> '.esc_html__( ' Version ', 'platinum-seo-pack' ).'2.1.3'.esc_html__( ' and earlier Versions!', 'platinum-seo-pack' ) .'</a>'; ?></p></strong>
|
280 |
</div>
|
281 |
<?php
|
282 |
}
|
readme.txt
CHANGED
@@ -6,7 +6,7 @@ Tags: seo, wordpress seo, plugin, google seo, platinum seo, schema, schema marku
|
|
6 |
Requires at least: 4.0
|
7 |
Tested up to: 5.4.1
|
8 |
Requires PHP: 5.6
|
9 |
-
Stable tag: 2.1.
|
10 |
License: GPLv2 or later
|
11 |
License URI: https://www.gnu.org/licenses/gpl-2.0.html
|
12 |
|
@@ -69,6 +69,9 @@ Please read these **[FAQs](https://techblissonline.com/platinum-seo-pack-faq/)**
|
|
69 |
4. Social Settings for Facebook, Twitter, Pinterest and LinkedIn. Generates Open Grah Tags and Twitter compatible Tags.
|
70 |
|
71 |
== Changelog ==
|
|
|
|
|
|
|
72 |
= 2.1.2 =
|
73 |
* 2020-06-01 - Sitemap has been further enhanced with the latest WordPress sitemap files. Also a few styling changes have been implemented to the sitemap rendered by the plugin. A few other cosmetic changes have been done to Help text wordings in a few files.
|
74 |
|
6 |
Requires at least: 4.0
|
7 |
Tested up to: 5.4.1
|
8 |
Requires PHP: 5.6
|
9 |
+
Stable tag: 2.1.3
|
10 |
License: GPLv2 or later
|
11 |
License URI: https://www.gnu.org/licenses/gpl-2.0.html
|
12 |
|
69 |
4. Social Settings for Facebook, Twitter, Pinterest and LinkedIn. Generates Open Grah Tags and Twitter compatible Tags.
|
70 |
|
71 |
== Changelog ==
|
72 |
+
= 2.1.3 =
|
73 |
+
* 2020-06-12 - Integrated the latest WordPress sitemap files.
|
74 |
+
|
75 |
= 2.1.2 =
|
76 |
* 2020-06-01 - Sitemap has been further enhanced with the latest WordPress sitemap files. Also a few styling changes have been implemented to the sitemap rendered by the plugin. A few other cosmetic changes have been done to Help text wordings in a few files.
|
77 |
|