XML Sitemap & Google News feeds - Version 4.4

Version Description

Google News Sitemap: limit posts to certain categories. Some (query) optimizations and bugfixes.

=

Download this release

Release Info

Developer RavanH
Plugin Icon 128x128 XML Sitemap & Google News feeds
Version 4.4
Comparing to
See all releases

Code changes from version 4.3.2 to 4.4

hacks.php CHANGED
@@ -3,144 +3,6 @@
3
  * MISSING WORDPRESS FUNCTIONS
4
  * ------------------------------------- */
5
 
6
- /**
7
- * Retrieve the date that the last page was published.
8
- *
9
- * The server timezone is the default and is the difference between GMT and
10
- * server time. The 'blog' value is the date when the last post was posted. The
11
- * 'gmt' is when the last post was posted in GMT formatted date.
12
- *
13
- * Variation of get_lastpostdate defined in wp-includes/post.php since 0.71
14
- *
15
- * @uses apply_filters() Calls 'get_lastpagedate' filter
16
- *
17
- * @param string $timezone The location to get the time. Can be 'gmt', 'blog', or 'server'.
18
- * @return string The date of the last post.
19
-
20
- if( !function_exists('get_lastpagedate') ) {
21
- function get_lastpagedate($timezone = 'server') {
22
- return apply_filters( 'get_lastpagedate', _get_time( $timezone, 'date', 'page' ), $timezone );
23
- }
24
- } */
25
-
26
- /**
27
- * Retrieve last page modified date depending on timezone.
28
- *
29
- * The server timezone is the default and is the difference between GMT and
30
- * server time. The 'blog' value is just when the last post was modified. The
31
- * 'gmt' is when the last post was modified in GMT time.
32
- *
33
- * Variation of get_lastpostmodified defined in wp-includes/post.php since 1.2.0
34
- *
35
- * @uses apply_filters() Calls 'get_lastpagemodified' filter
36
- *
37
- * @param string $timezone The location to get the time. Can be 'gmt', 'blog', or 'server'.
38
- * @return string The date the post was last modified.
39
-
40
- if( !function_exists('get_lastpagemodified') ) {
41
- function get_lastpagemodified($timezone = 'server') {
42
- $lastpagemodified = _get_time( $timezone, 'modified', 'page' );
43
-
44
- $lastpagedate = get_lastpagedate($timezone);
45
- if ( $lastpagedate > $lastpagemodified )
46
- $lastpagemodified = $lastpagedate;
47
-
48
- return apply_filters( 'get_lastpagemodified', $lastpagemodified, $timezone );
49
- }
50
- } */
51
-
52
- /**
53
- * Retrieve the date that the first post was published.
54
- *
55
- * The server timezone is the default and is the difference between GMT and
56
- * server time. The 'blog' value is the date when the last post was posted. The
57
- * 'gmt' is when the last post was posted in GMT formatted date.
58
- *
59
- * Reverse of get_lastpostdate defined in wp-includes/post.php since 0.71
60
- *
61
- * @uses apply_filters() Calls 'get_firstpostdate' filter
62
- *
63
- * @param string $timezone The location to get the time. Can be 'gmt', 'blog', or 'server'.
64
- * @return string The date of the last post.
65
-
66
- if( !function_exists('get_firstpostdate') ) {
67
- function get_firstpostdate($timezone = 'server') {
68
- return apply_filters( 'get_firstpostdate', _get_time( $timezone, 'date', 'post', 'first' ), $timezone );
69
- }
70
- } */
71
-
72
- /**
73
- * Retrieve the date that the first page was published.
74
- *
75
- * The server timezone is the default and is the difference between GMT and
76
- * server time. The 'blog' value is the date when the last post was posted. The
77
- * 'gmt' is when the last post was posted in GMT formatted date.
78
- *
79
- * Adaptation of get_firstpostdate defined in this file
80
- *
81
- * @uses apply_filters() Calls 'get_firstpagedate' filter
82
- *
83
- * @param string $timezone The location to get the time. Can be 'gmt', 'blog', or 'server'.
84
- * @return string The date of the last post.
85
-
86
- if( !function_exists('get_firstpagedate') ) {
87
- function get_firstpagedate($timezone = 'server') {
88
- return apply_filters( 'get_firstpagedate', _get_time( $timezone, 'date', 'page', 'first' ), $timezone );
89
- }
90
- } */
91
-
92
- /**
93
- * Retrieve first post modified date depending on timezone.
94
- *
95
- * The server timezone is the default and is the difference between GMT and
96
- * server time. The 'blog' value is the date when the last post was posted. The
97
- * 'gmt' is when the last post was posted in GMT formatted date.
98
- *
99
- * Reverse of get_lastpostmodified defined in wp-includes/post.php since WP 1.2.0
100
- *
101
- * @uses apply_filters() Calls 'get_firstpostmodified' filter
102
- *
103
- * @param string $timezone The location to get the time. Can be 'gmt', 'blog', or 'server'.
104
- * @return string The date of the oldest modified post.
105
-
106
- if( !function_exists('get_firstpostmodified') ) {
107
- function get_firstpostmodified($timezone = 'server') {
108
- $firstpostmodified = _get_time( $timezone, 'modified', 'post', 'first' );
109
-
110
- $firstpostdate = get_firstpostdate($timezone);
111
- if ( $firstpostdate > $firstpostmodified )
112
- $firstpostmodified = $firstpostdate;
113
-
114
- return apply_filters( 'get_firstpostmodified', $firstpostmodified, $timezone );
115
- }
116
- } */
117
-
118
- /**
119
- * Retrieve first page modified date depending on timezone.
120
- *
121
- * The server timezone is the default and is the difference between GMT and
122
- * server time. The 'blog' value is the date when the last post was posted. The
123
- * 'gmt' is when the last post was posted in GMT formatted date.
124
- *
125
- * Variation of get_firstpostmodified defined in this file
126
- *
127
- * @uses apply_filters() Calls 'get_firstpagemodified' filter
128
- *
129
- * @param string $timezone The location to get the time. Can be 'gmt', 'blog', or 'server'.
130
- * @return string The date of the oldest modified page.
131
-
132
- if( !function_exists('get_firstpagemodified') ) {
133
- function get_firstpagemodified($timezone = 'server') {
134
- $firstpagemodified = _get_time( $timezone, 'modified', 'page', 'first' );
135
-
136
- $firstpagedate = get_firstpagedate($timezone);
137
- if ( $firstpagedate > $firstpagemodified )
138
- $firstpagemodified = $firstpagedate;
139
-
140
- return apply_filters( 'get_firstpagemodified', $firstpagemodified, $timezone );
141
- }
142
- } */
143
-
144
  /**
145
  * Retrieve the date that the first post/page was published.
146
  *
@@ -160,30 +22,6 @@ if( !function_exists('get_firstdate') ) {
160
  }
161
  }
162
 
163
- /**
164
- * Retrieve first post/page modified date depending on timezone.
165
- *
166
- * The server timezone is the default and is the difference between GMT and
167
- * server time. The 'blog' value is the date when the last post was posted. The
168
- * 'gmt' is when the last post was posted in GMT formatted date.
169
- *
170
- * @uses apply_filters() Calls 'get_firstmodified' filter
171
- *
172
- * @param string $timezone The location to get the time. Can be 'gmt', 'blog', or 'server'.
173
- * @return string The date of the oldest modified post or page.
174
-
175
- if( !function_exists('get_firstmodified') ) {
176
- function get_firstmodified($timezone = 'server') {
177
- $firstmodified = _get_time( $timezone, 'modified', 'any', 'first' );
178
-
179
- $firstdate = get_firstdate($timezone);
180
- if ( $firstdate > $firstmodified )
181
- $firstmodified = $firstdate;
182
-
183
- return apply_filters( 'get_firstmodified', $firstmodified, $timezone );
184
- }
185
- } */
186
-
187
  /**
188
  * Retrieve the date that the last post/page was published.
189
  *
@@ -208,8 +46,8 @@ if( !function_exists('get_lastdate') ) {
208
  $lastmodified[] = _get_time( $timezone, 'date', $post_type, 'last', $m );
209
 
210
  sort($lastmodified);
211
-
212
- return apply_filters( 'get_lastdate', array_shift(array_filter($lastmodified)), $timezone );
213
  }
214
  }
215
 
@@ -227,12 +65,6 @@ if( !function_exists('get_lastdate') ) {
227
  */
228
  if( !function_exists('get_lastmodified') ) {
229
  function get_lastmodified($timezone = 'server', $post_type = 'any', $m = false) {
230
- //$lastmodified = _get_time( $timezone, 'modified', $post_type, 'last', $m );
231
-
232
- //$lastdate = get_lastdate($timezone, $post_type, $m);
233
- //if ( $lastdate > $lastmodified )
234
- // $lastmodified = $lastdate;
235
-
236
  return apply_filters( 'get_lastmodified', _get_time( $timezone, 'modified', $post_type, 'last', $m ), $timezone );
237
  }
238
  }
@@ -241,8 +73,6 @@ if( !function_exists('get_lastmodified') ) {
241
  * Retrieve first or last post type date data based on timezone.
242
  * Variation of function _get_last_post_time
243
  *
244
- * @access private
245
- *
246
  * @param string $timezone The location to get the time. Can be 'gmt', 'blog', or 'server'.
247
  * @param string $field Field to check. Can be 'date' or 'modified'.
248
  * @param string $post_type Post type to check. Defaults to 'any'.
@@ -313,35 +143,3 @@ if( !function_exists('_get_time') ) {
313
  return $date;
314
  }
315
  }
316
-
317
- /* By gunter [dot] sammet [at] gmail [dot] com http://www.php.net/manual/en/function.htmlentities.php#88169 */
318
- $entity_custom_from = false;
319
- $entity_custom_to = false;
320
- function html_entity_decode_encode_rss($data) {
321
- global $entity_custom_from, $entity_custom_to;
322
-
323
- if(!is_array($entity_custom_from) || !is_array($entity_custom_to)) {
324
- $array_position = 0;
325
- foreach (get_html_translation_table(HTML_ENTITIES) as $key => $value) {
326
- switch ($value) {
327
- case ' ':
328
- break;
329
- case '>':
330
- case '<':
331
- case '"':
332
- case ''':
333
- case '&':
334
- $entity_custom_from[$array_position] = $key;
335
- $entity_custom_to[$array_position] = $value;
336
- $array_position++;
337
- break;
338
- default:
339
- $entity_custom_from[$array_position] = $value;
340
- $entity_custom_to[$array_position] = $key;
341
- $array_position++;
342
- }
343
- }
344
- }
345
- return str_replace($entity_custom_from, $entity_custom_to, $data);
346
- }
347
-
3
  * MISSING WORDPRESS FUNCTIONS
4
  * ------------------------------------- */
5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6
  /**
7
  * Retrieve the date that the first post/page was published.
8
  *
22
  }
23
  }
24
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
25
  /**
26
  * Retrieve the date that the last post/page was published.
27
  *
46
  $lastmodified[] = _get_time( $timezone, 'date', $post_type, 'last', $m );
47
 
48
  sort($lastmodified);
49
+ $lastmodified = array_filter($lastmodified);
50
+ return apply_filters( 'get_lastdate', reset($lastmodified), $timezone );
51
  }
52
  }
53
 
65
  */
66
  if( !function_exists('get_lastmodified') ) {
67
  function get_lastmodified($timezone = 'server', $post_type = 'any', $m = false) {
 
 
 
 
 
 
68
  return apply_filters( 'get_lastmodified', _get_time( $timezone, 'modified', $post_type, 'last', $m ), $timezone );
69
  }
70
  }
73
  * Retrieve first or last post type date data based on timezone.
74
  * Variation of function _get_last_post_time
75
  *
 
 
76
  * @param string $timezone The location to get the time. Can be 'gmt', 'blog', or 'server'.
77
  * @param string $field Field to check. Can be 'date' or 'modified'.
78
  * @param string $post_type Post type to check. Defaults to 'any'.
143
  return $date;
144
  }
145
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/admin.php CHANGED
@@ -25,8 +25,7 @@
25
  <label><input type="checkbox" name="'.$prefix.'sitemaps[sitemap-news]" id="xmlsf_sitemaps_news" value="'.XMLSF_NEWS_NAME.'" '.checked(isset($options['sitemap-news']), true, false).' '.disabled($disabled, true, false).' /> '.__('Google News Sitemap','xml-sitemap-feed').'</label>';
26
  if (isset($options['sitemap-news']))
27
  echo '<span class="description"> &nbsp;&ndash;&nbsp; <a href="#xmlnf" id="xmlnf_link">'.translate('Settings').'</a> &nbsp;&ndash;&nbsp; <a href="'.trailingslashit(get_bloginfo('url')). ( ('' == get_option('permalink_structure')) ? '?feed=sitemap-news' : $options['sitemap-news'] ) .'" target="_blank">'.translate('View').'</a></span>';
28
- else
29
- // echo '<span class="description"> '.__('Only set when your site has been or will soon be accepted by Google News.','xml-sitemap-feed').'</span>';
30
  echo '
31
  </fieldset>';
32
  echo '
@@ -58,11 +57,12 @@
58
  </script>';
59
  }
60
 
 
 
61
  public function ping_settings_field() {
62
  $options = parent::get_ping();
63
  $defaults = parent::defaults('ping');
64
  $update_services = get_option('ping_sites');
65
- $pinged = parent::get_pong();
66
  $prefix = parent::prefix();
67
  $names = array(
68
  'google' => array (
@@ -86,18 +86,14 @@
86
  $defaults[$key] += $values;
87
  }
88
  echo '
89
- <fieldset id="xmlsf_ping"><legend class="screen-reader-text">'.__('Ping on Publish','xml-sitemap-feed').'</legend>
90
  ';
91
  foreach ( $defaults as $key => $values ) {
92
 
93
- echo '
94
- <input type="hidden" name="'.$prefix.'ping['.
95
- $key.'][uri]" value="'.
96
- $values['uri'].'" />';
97
  if ( isset($values['type']) && $values['type'] == 'RPC' ) {
98
  $active = ( strpos($update_services,untrailingslashit($values['uri'])) === false ) ? false : true;
99
  } else {
100
- $active = !empty($options[$key]["active"]) ? true : false;
101
  }
102
  echo '
103
  <label><input type="checkbox" name="'.$prefix.'ping['.
@@ -107,10 +103,40 @@
107
  echo isset($names[$key]) && !empty($names[$key]['name']) ? $names[$key]['name'] : $key ;
108
  echo '</label>';
109
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
110
  echo ' <span class="description">';
111
- if (isset($pinged[$key]))
112
- foreach ((array)$pinged[$key] as $pretty => $time)
113
- echo sprintf(__('Successfully pinged for %1$s on %2$s GMT.','xml-sitemap-feed'),$pretty, $time).' ';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
114
  echo '</span><br />';
115
  }
116
 
@@ -118,19 +144,70 @@
118
  </fieldset>';
119
  }
120
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
121
  public function robots_settings_field() {
122
- $prefix = parent::prefix();
123
- echo '<label>'.sprintf(__('Rules to append to the %s generated by WordPress.','xml-sitemap-feed'),'<a href="'.trailingslashit(get_bloginfo('url')).'robots.txt" target="_blank">robots.txt</a>').'<br /><textarea name="'.$prefix.'robots" id="xmlsf_robots" class="large-text" cols="50" rows="6" />'.esc_attr( parent::get_robots() ).'</textarea></label>
124
- <p class="description"><span style="color: red" class="error">'.__('Only add rules here when you know what you are doing, otherwise you might break search engine access to your site.','xml-sitemap-feed').'</span><br />'.__('These rules will not have effect when you are using a static robots.txt file.','xml-sitemap-feed').'</p>';
 
 
125
  }
126
 
127
  public function reset_settings_field() {
128
- $prefix = parent::prefix();
129
  echo '
130
- <label><input type="checkbox" name="'.$prefix.'sitemaps[reset]" value="1" /> '.
131
- __('Clear all XML Sitemap Feed options from the database and start fresh with the default settings.','xml-sitemap-feed').'</label>';
 
 
132
  echo '
133
- <p class="description">'.sprintf(__('Disabling and reenabling the %s plugin will have the same effect.','xml-sitemap-feed'),__('XML Sitemap & Google News Feeds','xml-sitemap-feed')).'</p>';
134
  }
135
 
136
  /**
@@ -138,7 +215,11 @@
138
  */
139
 
140
  public function xml_sitemap_settings() {
141
- echo '<p><a href="https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=ravanhagen%40gmail%2ecom&item_name=XML%20Sitemap%20Feeds&item_number='.XMLSF_VERSION.'&no_shipping=0&tax=0&charset=UTF%2d8" title="'.sprintf(__('Donate to keep the free %s plugin development & support going!','xml-sitemap-feed'),__('XML Sitemap & Google News Feeds','xml-sitemap-feed')).'"><img src="https://www.paypalobjects.com/en_US/i/btn/btn_donate_LG.gif" style="border:none;float:right;margin:4px 0 0 10px" alt="'.sprintf(__('Donate to keep the free %s plugin development & support going!','xml-sitemap-feed'),__('XML Sitemap & Google News Feeds','xml-sitemap-feed')).'" width="92" height="26" /></a>'.sprintf(__('These settings control the XML Sitemaps generated by the %s plugin.','xml-sitemap-feed'),__('XML Sitemap & Google News Feeds','xml-sitemap-feed')).'</p>';
 
 
 
 
142
  }
143
 
144
  public function post_types_settings_field() {
@@ -147,9 +228,13 @@
147
  $prefix = parent::prefix();
148
  $do_note = false;
149
 
 
 
 
 
150
  echo '<fieldset id="xmlsf_post_types"><legend class="screen-reader-text">'.__('XML Sitemaps for post types','xml-sitemap-feed').'</legend>
151
  ';
152
- foreach ( get_post_types(array('public'=>true),'objects') as $post_type ) {
153
  // skip unallowed post types
154
  if (in_array($post_type->name,parent::disabled_post_types()))
155
  continue;
@@ -240,7 +325,8 @@
240
  }
241
 
242
  echo '
243
- <p class="description">* '.__('Priority settings do not affect ranking in search results in any way. They are only meant to suggest search engines which URLs to index first. Once a URL has been indexed, its Priority becomes meaningless until its Lastmod is updated.','xml-sitemap-feed').' <a href="#xmlsf_post_types_note_1_more" id="xmlsf_post_types_note_1_link">'.translate('[more]').'</a> <span id="xmlsf_post_types_note_1_more">'.__('Maximum Priority (1.0) is reserved for the front page, individual posts and, when allowed, posts with high comment count.','xml-sitemap-feed').' '.__('Priority values are taken as relative values. Setting all to the same (high) value is pointless.','xml-sitemap-feed').'</span></p>
 
244
  <script type="text/javascript">
245
  jQuery( document ).ready( function() {
246
  jQuery("#xmlsf_post_types_note_1_more").hide();
@@ -258,7 +344,6 @@ jQuery( document ).ready( function() {
258
  public function taxonomies_settings_field() {
259
  $options = parent::get_taxonomies();
260
  $active = parent::get_option('post_types');
261
- $prefix = parent::prefix();
262
  $output = '';
263
 
264
  foreach ( get_taxonomies(array('public'=>true),'objects') as $taxonomy ) {
@@ -274,7 +359,7 @@ jQuery( document ).ready( function() {
274
 
275
  $count = wp_count_terms( $taxonomy->name );
276
  $output .= '
277
- <label><input type="checkbox" name="'.$prefix.'taxonomies['.
278
  $taxonomy->name.']" id="xmlsf_taxonomies_'.
279
  $taxonomy->name.'" value="'.
280
  $taxonomy->name.'"'.
@@ -297,7 +382,9 @@ jQuery( document ).ready( function() {
297
  echo $output;
298
 
299
  echo '
300
- <p class="description">'.__('It is generally not recommended to include taxonomy pages, unless their content brings added value.','xml-sitemap-feed').' <a href="#xmlsf_taxonomies_note_1_more" id="xmlsf_taxonomies_note_1_link">'.translate('[more]').'</a> <span id="xmlsf_taxonomies_note_1_more">'.__('For example, when you use category descriptions with information that is not present elsewhere on your site or if taxonomy pages list posts with an excerpt that is different from, but complementary to the post content. In these cases you might consider including certain taxonomies. Otherwise, if you fear <a href="http://moz.com/learn/seo/duplicate-content">negative affects of duplicate content</a> or PageRank spread, you might even consider disallowing indexation of taxonomies.','xml-sitemap-feed').' '.sprintf(__('You can do this by adding specific robots.txt rules in the %s field above.','xml-sitemap-feed'),'<strong>'.__('Additional robots.txt rules','xml-sitemap-feed').'</strong>');
 
 
301
  echo '</span></p>
302
  <script type="text/javascript">
303
  jQuery( document ).ready( function() {
@@ -312,13 +399,24 @@ jQuery( document ).ready( function() {
312
  </fieldset>';
313
  } else {
314
  echo '
315
- <p style="color: red" class="error">'.__('No taxonomies available for the currently included post types.','xml-sitemap-feed').'</p>';
316
  }
317
  }
318
 
 
 
 
 
 
 
 
 
 
 
 
 
319
  public function urls_settings_field() {
320
  $urls = parent::get_urls();
321
- $prefix = parent::prefix();
322
  $lines = array();
323
 
324
  if(!empty($urls)) {
@@ -328,18 +426,24 @@ jQuery( document ).ready( function() {
328
  }
329
  }
330
 
331
- echo '<label>'.__('Additional URLs to append to the XML Sitemap.','xml-sitemap-feed').'<br /><textarea name="'.$prefix.'urls" id="xmlsf_urls" class="large-text" cols="50" rows="4" />'. implode("\n",$lines) .'</textarea></label>
332
- <p class="description">'.__('Add the full URL, including protocol (http/https) and domain, of any static page or WordPress page that you want to append to the ones already included by the settings above. Optionally add a priority value between 0 and 1, separated with a space, after the URL. Start each URL on a new line.','xml-sitemap-feed').'</p>';
 
 
 
 
333
 
334
  }
335
 
336
  public function domains_settings_field() {
337
  $default = parent::domain();
338
  $domains = (array) parent::get_option('domains');
339
- $prefix = parent::prefix();
340
 
341
- echo '<label>'.__('Additional domains to allow in the XML Sitemap.','xml-sitemap-feed').'<br /><textarea name="'.$prefix.'domains" id="xmlsf_domains" class="large-text" cols="50" rows="4" />'. implode("\n",$domains) .'</textarea></label>
342
- <p class="description">'.sprintf(__('By default, only the domain %s as used in your WordPress site address is allowed. This means that all URLs that use another domain (custom URLs or using a plugin like Page Links To) are filtered from the XML Sitemap. However, if you are the verified owner of other domains in your Google/Bing Webmaster Tools account, you can include these in the same sitemap. Add these domains, without protocol (http/https) each on a new line. Note that if you enter a domain with www, all URLs without it or with other subdomains will be filtered.','xml-sitemap-feed'),'<strong>'.$default.'</strong>').'</p>';
 
 
 
343
 
344
  }
345
 
@@ -349,35 +453,130 @@ jQuery( document ).ready( function() {
349
  */
350
 
351
  public function news_sitemap_settings() {
352
- echo '<p><a href="https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=ravanhagen%40gmail%2ecom&item_name=XML%20Sitemap%20Feeds&item_number='.XMLSF_VERSION.'&no_shipping=0&tax=0&charset=UTF%2d8" title="'.sprintf(__('Donate to keep the free %s plugin development & support going!','xml-sitemap-feed'),__('XML Sitemap & Google News Feeds','xml-sitemap-feed')).'"><img src="https://www.paypalobjects.com/en_US/i/btn/btn_donate_LG.gif" style="border:none;float:right;margin:4px 0 0 10px" alt="'.sprintf(__('Donate to keep the free %s plugin development & support going!','xml-sitemap-feed'),__('XML Sitemap & Google News Feeds','xml-sitemap-feed')).'" width="92" height="26" /></a>'.sprintf(__('These settings control the Google News Sitemap generated by the %s plugin.','xml-sitemap-feed'),__('XML Sitemap & Google News Feeds','xml-sitemap-feed')).' '.__('When you are done configuring and preparing your news content and you are convinced your site adheres to the <a href="https://support.google.com/news/publisher/answer/40787?ref_topic=2484652" target="_blank">Google News guidelines</a>, go ahead and <a href="https://support.google.com/news/publisher/troubleshooter/3179220?#ts=3179198" target="_blank">submit your site for inclusion</a>!','xml-sitemap-feed').'</p>';
 
 
 
 
 
353
  }
354
 
355
  //TODO: publication name allow tag %category% ... post_types (+ exclusion per post or none + allow inclusion per post), limit to category ...
356
  public function news_name_field() {
357
  $options = parent::get_option('news_tags');
358
- $prefix = parent::prefix();
359
 
360
  $name = !empty($options['name']) ? $options['name'] : '';
361
  echo '
362
- <input type="text" name="'.$prefix.'news_tags[name]" id="xmlsf_news_name" value="'.$name.'" class="regular-text"> <span class="description">'.sprintf(__('By default, the general %s setting will be used.','xml-sitemap-feed'),'<a href="options-general.php">'.translate('Site Title').'</a>').'</span>';
 
 
363
  }
364
 
365
- public function news_image_field() {
 
366
  $options = parent::get_option('news_tags');
367
  $prefix = parent::prefix();
368
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
369
  $image = !empty($options['image']) ? $options['image'] : '';
370
  echo '
371
- <label>'.__('Add image tags for','xml-sitemap-feed').' <select name="'.$prefix.'news_tags[image]">
372
- <option value="">'.translate('None').'</option>
373
- <option value="featured" '.
374
- selected( $image == "featured", true, false).
375
- '>'.translate('Featured Image').'</option>
376
- <option value="attached" '.
377
- selected( $image == "attached", true, false).
378
- '>'.__('Attached images','xml-sitemap-feed').'</option>
379
- ';
380
- echo '</select></label>';
 
 
 
381
  }
382
 
383
  public function news_access_field() {
@@ -386,7 +585,6 @@ jQuery( document ).ready( function() {
386
 
387
  $access = !empty($options['access']) ? $options['access'] : '';
388
  $access_default = !empty($access['default']) ? $access['default'] : '';
389
- // $access_private = !empty($access['private']) ? $access['private'] : '';
390
  $access_password = !empty($access['password']) ? $access['password'] : '';
391
  echo '
392
  <fieldset id="xmlsf_news_access"><legend class="screen-reader-text">'.__('Access (&lt;access&gt; tag)','xml-sitemap-feed').'</legend>
@@ -400,13 +598,6 @@ jQuery( document ).ready( function() {
400
  <option value="Registration" '.selected( "Registration" == $access_default, true, false).'>'.__('Registration','xml-sitemap-feed').'</option>
401
  <option value="Subscription" '.selected( "Subscription" == $access_default, true, false).'>'.__('Subscription','xml-sitemap-feed').'</option>
402
  </select></label></li>';
403
- /* TODO consider allowing private posts into the news sitemap; find a way to change 404 response into user configurable redirect/excerpt with login form/...
404
- echo '
405
-
406
- <li><label>'.sprintf(__('Tag %s posts as','xml-sitemap-feed'),translate('Private')).' <select name="'.$prefix.'news_tags[access][private]" id="xmlsf_news_tags_access_private">
407
- <option value="Registration" '.selected( "Registration" == $access_private, true, false).'>'.__('Registration','xml-sitemap-feed').'</option>
408
- <option value="Subscription" '.selected( "Subscription" == $access_private, true, false).'>'.__('Subscription','xml-sitemap-feed').'</option>
409
- </select></label></li>';*/
410
  echo '
411
 
412
  <li><label>'.sprintf(__('Tag %s posts as','xml-sitemap-feed'),translate('Password Protected')).' <select name="'.$prefix.'news_tags[access][password]" id="xmlsf_news_tags_access_password">
@@ -514,6 +705,7 @@ jQuery( document ).ready( function() {
514
  //sanitize callback functions
515
 
516
  public function sanitize_robots_settings($new) {
 
517
  return trim(strip_tags($new));
518
  }
519
 
@@ -523,7 +715,7 @@ jQuery( document ).ready( function() {
523
  if (isset($new['reset']) && $new['reset'] == '1') // if reset is checked, set transient to clear all settings
524
  set_transient('xmlsf_clear_settings','');
525
 
526
- // if( '1' == get_option('blog_public') ) {
527
  if ($old != $new && !isset($new['reset'])) // when sitemaps are added or removed, set transient to flush rewrite rules
528
  set_transient('xmlsf_flush_rewrite_rules','');
529
 
@@ -531,46 +723,13 @@ jQuery( document ).ready( function() {
531
  set_transient('xmlsf_create_genres','');
532
 
533
  $sanitized = $new;
534
- // } else {
535
- // $sanitized = $old;
536
- // }
537
-
538
- return $sanitized;
539
- }
540
-
541
- public function sanitize_ping_settings($new) {
542
-
543
- if( '1' == get_option('blog_public') ) {
544
- $defaults = parent::defaults('ping');
545
- $sanitized = array();
546
- $update_services = get_option('ping_sites');
547
- $update_services_new = $update_services;
548
-
549
- foreach ($defaults as $key => $values) {
550
- if(!isset($new[$key]))
551
- continue;
552
-
553
- if (isset($values['type']) && $values['type'] == 'RPC') {
554
- if ( isset($values['uri']) ) {
555
- if ( !empty($new[$key]['active']) && strpos($update_services,untrailingslashit($values['uri'])) === false )
556
- $update_services_new .= "\n" . $values['uri'];
557
- elseif ( empty($new[$key]['active']) && strpos($update_services,untrailingslashit($values['uri'])) !== false )
558
- $update_services_new = str_replace(array(trailingslashit($values['uri']),untrailingslashit($values['uri'])),'',$update_services_new);
559
- }
560
- } elseif (is_array($new[$key])) {
561
- $sanitized += array( $key => $new[$key] );
562
- }
563
- }
564
-
565
- if($update_services_new != $update_services)
566
- update_option('ping_sites',$update_services_new);
567
  } else {
568
- $sanitized = parent::get_option('ping');
569
  }
570
 
571
  return $sanitized;
572
  }
573
-
574
  public function sanitize_post_types_settings( $new = array() ) {
575
  $old = parent::get_post_types();
576
  $defaults = parent::defaults('post_types');
@@ -585,10 +744,6 @@ jQuery( document ).ready( function() {
585
 
586
  if ( isset($settings['priority']) && is_numeric($settings['priority']) ) {
587
  $sanitized[$post_type]['priority'] = $this->sanitize_priority($settings['priority'],0.1,0.9);
588
- /* if ($settings['priority'] <= 0)
589
- $sanitized[$post_type]['priority'] = '0.1';
590
- elseif ($settings['priority'] >= 1)
591
- $sanitized[$post_type]['priority'] = '0.9';*/
592
  } else {
593
  $sanitized[$post_type]['priority'] = $defaults[$post_type]['priority'];
594
  }
@@ -600,14 +755,14 @@ jQuery( document ).ready( function() {
600
  return $sanitized;
601
  }
602
 
603
- private function sanitize_priority($priority, $min = 0, $max = 1) {
604
- $priority = (float)$priority;
605
- if ($priority < $min || $priority === 0 )
606
- return (string)$min;
607
- elseif ($priority >= $max)
608
- return (string)$max;
609
  else
610
- return (string)$priority;
611
  }
612
 
613
  public function sanitize_taxonomies_settings($new) {
@@ -619,13 +774,30 @@ jQuery( document ).ready( function() {
619
  return $new;
620
  }
621
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
622
  public function sanitize_urls_settings($new) {
623
  $old = parent::get_urls();
624
- $input = explode("\n",trim(strip_tags($new)));
 
625
  $sanitized = array();
626
  $callback = create_function('$a','return filter_var($a,FILTER_VALIDATE_URL) || is_numeric($a);');
627
 
628
- foreach ($input as $line) {
629
  if(empty($line))
630
  continue;
631
 
@@ -653,13 +825,20 @@ jQuery( document ).ready( function() {
653
 
654
  public function sanitize_domains_settings($new) {
655
  $default = parent::domain();
 
656
  $input = explode("\n",trim(strip_tags($new)));
657
  $sanitized = array();
658
 
659
  foreach ($input as $line) {
660
  $line = trim($line);
661
- if(!empty($line) && $line != $default && strpos($line,".".$default) === false)
662
- $sanitized[] = $line;
 
 
 
 
 
 
663
  }
664
 
665
  return (!empty($sanitized)) ? $sanitized : '';
@@ -744,12 +923,6 @@ jQuery( document ).ready( function() {
744
  // _xmlsf_priority
745
  if ( isset($_POST['xmlsf_priority']) && is_numeric($_POST['xmlsf_priority']) ) {
746
  update_post_meta($post_id, '_xmlsf_priority', $this->sanitize_priority($_POST['xmlsf_priority']) );
747
- /* if ($_POST['xmlsf_priority'] < 0 || $_POST['xmlsf_priority'] === 0 )
748
- update_post_meta($post_id, '_xmlsf_priority', '0');
749
- elseif ($_POST['xmlsf_priority'] >= 1)
750
- update_post_meta($post_id, '_xmlsf_priority', '1');
751
- else
752
- update_post_meta($post_id, '_xmlsf_priority', $_POST['xmlsf_priority']);*/
753
  } else {
754
  delete_post_meta($post_id, '_xmlsf_priority');
755
  }
@@ -770,67 +943,66 @@ jQuery( document ).ready( function() {
770
  function __construct() {
771
  $sitemaps = parent::get_sitemaps();
772
  $prefix = parent::prefix();
773
- $blog_public = get_option('blog_public');
774
 
775
  // sitemaps
776
  register_setting('reading', $prefix.'sitemaps', array($this,'sanitize_sitemaps_settings') );
777
  add_settings_field($prefix.'sitemaps', __('Enable XML sitemaps','xml-sitemap-feed'), array($this,'sitemaps_settings_field'), 'reading');
778
 
779
- if ( '1' == $blog_public && ( isset($sitemaps['sitemap']) || isset($sitemaps['sitemap-news']) ) ) {
780
- // pings
781
- register_setting('reading', $prefix.'ping', array($this,'sanitize_ping_settings') );
782
- add_settings_field($prefix.'ping', __('Ping on Publish','xml-sitemap-feed'), array($this,'ping_settings_field'), 'reading');
783
-
784
- if ( is_multisite() ) {
785
- register_setting('writing', $prefix.'ping', array($this,'sanitize_ping_settings') );
786
- add_settings_field($prefix.'ping', translate('Update Services'), array($this,'ping_settings_field'), 'writing');
787
- }
788
- }
789
-
790
- //robots only when permalinks are set
791
- if(''!=get_option('permalink_structure')) {
792
  register_setting('reading', $prefix.'robots', array($this,'sanitize_robots_settings') );
793
  add_settings_field($prefix.'robots', __('Additional robots.txt rules','xml-sitemap-feed'), array($this,'robots_settings_field'), 'reading');
794
  }
795
 
796
- // TODO put this back in but only for multi-site when activated site-wide...
797
- if ( is_multisite() && is_plugin_active_for_network(XMLSF_PLUGIN_BASENAME) )
798
- add_settings_field($prefix.'reset', __('Reset XML sitemaps','xml-sitemap-feed'), array($this,'reset_settings_field'), 'reading');
799
 
800
- if ( '1' == $blog_public && isset($sitemaps['sitemap']) ) {
801
- // XML SITEMAP SETTINGS
802
- add_settings_section('xml_sitemap_section', '<a name="xmlsf"></a>'.__('XML Sitemap','xml-sitemap-feed'), array($this,'xml_sitemap_settings'), 'reading');
803
- // post_types
804
- register_setting('reading', $prefix.'post_types', array($this,'sanitize_post_types_settings') );
805
- add_settings_field($prefix.'post_types', __('Include post types','xml-sitemap-feed'), array($this,'post_types_settings_field'), 'reading', 'xml_sitemap_section');
806
- // taxonomies
807
- register_setting('reading', $prefix.'taxonomies', array($this,'sanitize_taxonomies_settings') );
808
- add_settings_field($prefix.'taxonomies', __('Include taxonomies','xml-sitemap-feed'), array($this,'taxonomies_settings_field'), 'reading', 'xml_sitemap_section');
809
- // custom urls
810
- register_setting('reading', $prefix.'urls', array($this,'sanitize_urls_settings') );
811
- add_settings_field($prefix.'urls', __('Include custom URLs','xml-sitemap-feed'), array($this,'urls_settings_field'), 'reading', 'xml_sitemap_section');
812
-
813
- // custom domains
814
- register_setting('reading', $prefix.'domains', array($this,'sanitize_domains_settings') );
815
- add_settings_field($prefix.'domains', __('Additional allowed domains','xml-sitemap-feed'), array($this,'domains_settings_field'), 'reading', 'xml_sitemap_section');
816
-
817
- // POST META BOX
818
- add_action( 'add_meta_boxes', array($this,'add_meta_box') );
819
- add_action( 'save_post', array($this,'save_metadata') );
820
- }
 
 
821
 
822
- if ( '1' == $blog_public && isset($sitemaps['sitemap-news']) ) {
823
- // XML SITEMAP SETTINGS
824
- add_settings_section('news_sitemap_section', '<a name="xmlnf"></a>'.__('Google News Sitemap','xml-sitemap-feed'), array($this,'news_sitemap_settings'), 'reading');
825
-
826
- // tags
827
- register_setting('reading', $prefix.'news_tags', array($this,'sanitize_news_tags_settings') );
828
- add_settings_field($prefix.'news_name', '<label for="xmlsf_news_name">'.__('Publication name','xml-sitemap-feed').'</label>', array($this,'news_name_field'), 'reading', 'news_sitemap_section');
829
- add_settings_field($prefix.'news_image', translate('Images'), array($this,'news_image_field'), 'reading', 'news_sitemap_section');
830
- add_settings_field($prefix.'news_access', __('Access (&lt;access&gt; tag)','xml-sitemap-feed'), array($this,'news_access_field'), 'reading', 'news_sitemap_section');
831
- add_settings_field($prefix.'news_genres', __('Genres (&lt;genres&gt; tag)','xml-sitemap-feed'), array($this,'news_genres_field'), 'reading', 'news_sitemap_section');
832
- add_settings_field($prefix.'news_keywords', __('Topics (&lt;keywords&gt; tag)','xml-sitemap-feed'), array($this,'news_keywords_field'), 'reading', 'news_sitemap_section');
833
- add_settings_field($prefix.'news_locations', __('Locations (&lt;geo_locations&gt; tag)','xml-sitemap-feed'), array($this,'news_locations_field'), 'reading', 'news_sitemap_section');
 
 
 
 
 
 
 
 
834
  }
835
 
836
  // ACTION LINK
@@ -845,4 +1017,3 @@ jQuery( document ).ready( function() {
845
 
846
  if ( class_exists('XMLSitemapFeed') )
847
  $xmlsf_admin = new XMLSF_Admin();
848
-
25
  <label><input type="checkbox" name="'.$prefix.'sitemaps[sitemap-news]" id="xmlsf_sitemaps_news" value="'.XMLSF_NEWS_NAME.'" '.checked(isset($options['sitemap-news']), true, false).' '.disabled($disabled, true, false).' /> '.__('Google News Sitemap','xml-sitemap-feed').'</label>';
26
  if (isset($options['sitemap-news']))
27
  echo '<span class="description"> &nbsp;&ndash;&nbsp; <a href="#xmlnf" id="xmlnf_link">'.translate('Settings').'</a> &nbsp;&ndash;&nbsp; <a href="'.trailingslashit(get_bloginfo('url')). ( ('' == get_option('permalink_structure')) ? '?feed=sitemap-news' : $options['sitemap-news'] ) .'" target="_blank">'.translate('View').'</a></span>';
28
+
 
29
  echo '
30
  </fieldset>';
31
  echo '
57
  </script>';
58
  }
59
 
60
+ /* PINGS */
61
+
62
  public function ping_settings_field() {
63
  $options = parent::get_ping();
64
  $defaults = parent::defaults('ping');
65
  $update_services = get_option('ping_sites');
 
66
  $prefix = parent::prefix();
67
  $names = array(
68
  'google' => array (
86
  $defaults[$key] += $values;
87
  }
88
  echo '
89
+ <fieldset id="xmlsf_ping"><legend class="screen-reader-text">'.translate('Update Services').'</legend>
90
  ';
91
  foreach ( $defaults as $key => $values ) {
92
 
 
 
 
 
93
  if ( isset($values['type']) && $values['type'] == 'RPC' ) {
94
  $active = ( strpos($update_services,untrailingslashit($values['uri'])) === false ) ? false : true;
95
  } else {
96
+ $active = !empty($options[$key]['active']) ? true : false;
97
  }
98
  echo '
99
  <label><input type="checkbox" name="'.$prefix.'ping['.
103
  echo isset($names[$key]) && !empty($names[$key]['name']) ? $names[$key]['name'] : $key ;
104
  echo '</label>';
105
 
106
+ echo '
107
+ <input type="hidden" name="'.$prefix.'ping['.
108
+ $key.'][uri]" value="'.
109
+ $values['uri'].'" />';
110
+ echo '
111
+ <input type="hidden" name="'.$prefix.'ping['.
112
+ $key.'][type]" value="'.
113
+ $values['type'].'" />';
114
+ if (isset($values['news']))
115
+ echo '
116
+ <input type="hidden" name="'.$prefix.'ping['.
117
+ $key.'][news]" value="'.
118
+ $values['news'].'" />';
119
+
120
  echo ' <span class="description">';
121
+ if (!empty($options[$key]['pong'])) {
122
+ if ( $tzstring = get_option('timezone_string') ) {
123
+ // use same timezoneformat as translatable examples in options-general.php
124
+ $timezone_format = _x('Y-m-d G:i:s', 'timezone date format');
125
+ date_default_timezone_set($tzstring);
126
+ } else {
127
+ $timezone_format = 'Y-m-d G:i:s T';
128
+ }
129
+
130
+ foreach ((array)$options[$key]['pong'] as $pretty => $time) {
131
+ echo '
132
+ <input type="hidden" name="'.$prefix.'ping['.
133
+ $key.'][pong]['.$pretty.']" value="'.
134
+ $time.'" />';
135
+ if ( !empty($time) )
136
+ echo sprintf(__('Successfully sent %1$s on %2$s.','xml-sitemap-feed'),$pretty, date($timezone_format,$time)).' ';
137
+ }
138
+ date_default_timezone_set('UTC');
139
+ }
140
  echo '</span><br />';
141
  }
142
 
144
  </fieldset>';
145
  }
146
 
147
+ public function sanitize_ping_settings($new) {
148
+ $defaults = parent::defaults('ping');
149
+ $old = parent::get_option('ping');
150
+ $sanitized = array();
151
+ $update_services = get_option('ping_sites');
152
+ $update_services_new = $update_services;
153
+
154
+ foreach ($defaults as $key => $values) {
155
+ if(!isset($new[$key]))
156
+ continue;
157
+
158
+ if ( isset($values['type']) && $values['type']=='RPC' && isset($values['uri']) ) {
159
+ // did we toggle the option?
160
+ $changed = true;
161
+ if ( isset($old[$key]) ) {
162
+ $old_active = isset($old[$key]['active']) ? $old[$key]['active'] : '';
163
+ $new_active = isset($new[$key]['active']) ? $new[$key]['active'] : '';
164
+ if ( $old_active == $new_active )
165
+ $changed = false;
166
+ }
167
+
168
+ if ( $changed ) {
169
+ // then change the ping_sites list according to option
170
+ if ( !empty($new[$key]['active']) && strpos($update_services,untrailingslashit($values['uri'])) === false )
171
+ $update_services_new .= "\n" . $values['uri'];
172
+ elseif ( empty($new[$key]['active']) && strpos($update_services,untrailingslashit($values['uri'])) !== false )
173
+ $update_services_new = str_replace(array(trailingslashit($values['uri']),untrailingslashit($values['uri'])),'',$update_services_new);
174
+ } else {
175
+ // or change the option according to ping_sites
176
+ if ( strpos($update_services,untrailingslashit($values['uri'])) !== false )
177
+ $new[$key]['active'] = '1';
178
+ else
179
+ unset($new[$key]['active']);
180
+ }
181
+ }
182
+ if ( is_array($new[$key]) ) {
183
+ $sanitized += array( $key => $new[$key] );
184
+ }
185
+ }
186
+
187
+ if($update_services_new != $update_services)
188
+ update_option('ping_sites',$update_services_new);
189
+
190
+ return $sanitized;
191
+ }
192
+
193
+ /* ROBOTS */
194
+
195
  public function robots_settings_field() {
196
+ echo '
197
+ <fieldset><legend class="screen-reader-text">'.__('Additional robots.txt rules','xml-sitemap-feed').'</legend>
198
+ <label>'.sprintf(__('Rules that will be appended to the %s generated by WordPress:','xml-sitemap-feed'),'<a href="'.trailingslashit(get_bloginfo('url')).'robots.txt" target="_blank">robots.txt</a>').'<br /><textarea name="'.parent::prefix().'robots" id="xmlsf_robots" class="large-text" cols="50" rows="6" />'.esc_attr( parent::get_robots() ).'</textarea></label>
199
+ <p class="description">'.__('These rules will not have effect when you are using a static robots.txt file.','xml-sitemap-feed').'<br /><span style="color: red" class="warning">'.__('Only add rules here when you know what you are doing, otherwise you might break search engine access to your site.','xml-sitemap-feed').'</span></p>
200
+ </fieldset>';
201
  }
202
 
203
  public function reset_settings_field() {
 
204
  echo '
205
+ <fieldset><legend class="screen-reader-text">'.__('Reset XML sitemaps','xml-sitemap-feed').'</legend>
206
+ <label><input type="checkbox" name="'.parent::prefix().'sitemaps[reset]" value="1" /> '.
207
+ __('Clear all XML Sitemap Feed settings from the database.','xml-sitemap-feed').'</label>
208
+ </fieldset>';
209
  echo '
210
+ <p class="description">'.__('You can use this to start fresh with the default settings or to remove all XML Sitemap and Google News settings and taxonomy terms before uninstalling.','xml-sitemap-feed').'</p>';
211
  }
212
 
213
  /**
215
  */
216
 
217
  public function xml_sitemap_settings() {
218
+ echo '<p><a target="_blank" href="https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=ravanhagen%40gmail%2ecom&item_name=XML%20Sitemap%20Feeds&item_number='.XMLSF_VERSION.'&no_shipping=0&tax=0&charset=UTF%2d8" title="'.
219
+ sprintf(__('Donate to keep the free %s plugin development & support going!','xml-sitemap-feed'),__('XML Sitemap & Google News Feeds','xml-sitemap-feed')).'"><img src="https://www.paypalobjects.com/en_US/i/btn/btn_donate_LG.gif" style="border:none;float:right;margin:4px 0 0 10px" alt="'.
220
+ sprintf(__('Donate to keep the free %s plugin development & support going!','xml-sitemap-feed'),__('XML Sitemap & Google News Feeds','xml-sitemap-feed')).'" width="92" height="26" /></a>'.
221
+ sprintf(__('These settings control the XML Sitemaps generated by the %s plugin.','xml-sitemap-feed'),__('XML Sitemap & Google News Feeds','xml-sitemap-feed')).' '.
222
+ sprintf(__('For ping options, go to %s.','xml-sitemap-feed'),'<a href="options-writing.php">'.translate('Writing Settings').'</a>').'</p>';
223
  }
224
 
225
  public function post_types_settings_field() {
228
  $prefix = parent::prefix();
229
  $do_note = false;
230
 
231
+ $post_types = get_post_types(array('public'=>true),'objects');
232
+ if ( !is_array($post_types) || is_wp_error($post_types) )
233
+ return;
234
+
235
  echo '<fieldset id="xmlsf_post_types"><legend class="screen-reader-text">'.__('XML Sitemaps for post types','xml-sitemap-feed').'</legend>
236
  ';
237
+ foreach ( $post_types as $post_type ) {
238
  // skip unallowed post types
239
  if (in_array($post_type->name,parent::disabled_post_types()))
240
  continue;
325
  }
326
 
327
  echo '
328
+ <p class="description">* '.__('Priority settings do not affect ranking in search results in any way. They are only meant to suggest search engines which URLs to index first. Once a URL has been indexed, its Priority becomes meaningless until its Lastmod is updated.','xml-sitemap-feed').' <a href="#xmlsf_post_types_note_1_more" id="xmlsf_post_types_note_1_link">'.translate('[more]').'</a>
329
+ <span id="xmlsf_post_types_note_1_more">'.__('Maximum Priority (1.0) is reserved for the front page, individual posts and, when allowed, posts with high comment count.','xml-sitemap-feed').' '.__('Priority values are taken as relative values. Setting all to the same (high) value is pointless.','xml-sitemap-feed').'</span></p>
330
  <script type="text/javascript">
331
  jQuery( document ).ready( function() {
332
  jQuery("#xmlsf_post_types_note_1_more").hide();
344
  public function taxonomies_settings_field() {
345
  $options = parent::get_taxonomies();
346
  $active = parent::get_option('post_types');
 
347
  $output = '';
348
 
349
  foreach ( get_taxonomies(array('public'=>true),'objects') as $taxonomy ) {
359
 
360
  $count = wp_count_terms( $taxonomy->name );
361
  $output .= '
362
+ <label><input type="checkbox" name="'.parent::prefix().'taxonomies['.
363
  $taxonomy->name.']" id="xmlsf_taxonomies_'.
364
  $taxonomy->name.'" value="'.
365
  $taxonomy->name.'"'.
382
  echo $output;
383
 
384
  echo '
385
+ <p class="description">'.__('It is generally not recommended to include taxonomy pages, unless their content brings added value.','xml-sitemap-feed').' <a href="#xmlsf_taxonomies_note_1_more" id="xmlsf_taxonomies_note_1_link">'.translate('[more]').'</a>
386
+ <span id="xmlsf_taxonomies_note_1_more">'.__('For example, when you use category descriptions with information that is not present elsewhere on your site or if taxonomy pages list posts with an excerpt that is different from, but complementary to the post content. In these cases you might consider including certain taxonomies. Otherwise, if you fear <a href="http://moz.com/learn/seo/duplicate-content">negative affects of duplicate content</a> or PageRank spread, you might even consider disallowing indexation of taxonomies.','xml-sitemap-feed').' '.
387
+ sprintf(__('You can do this by adding specific robots.txt rules in the %s field above.','xml-sitemap-feed'),'<strong>'.__('Additional robots.txt rules','xml-sitemap-feed').'</strong>');
388
  echo '</span></p>
389
  <script type="text/javascript">
390
  jQuery( document ).ready( function() {
399
  </fieldset>';
400
  } else {
401
  echo '
402
+ <p style="color: red" class="warning">'.__('No taxonomies available for the currently included post types.','xml-sitemap-feed').'</p>';
403
  }
404
  }
405
 
406
+ public function custom_sitemaps_settings_field() {
407
+ $lines = parent::get_custom_sitemaps();
408
+
409
+ echo '
410
+ <fieldset><legend class="screen-reader-text">'.__('Include custom XML Sitemaps','xml-sitemap-feed').'</legend>
411
+ <label>'.__('Additional XML Sitemaps to append to the main XML Sitemap Index:','xml-sitemap-feed').'<br />
412
+ <textarea name="'.parent::prefix().'custom_sitemaps" id="xmlsf_custom_sitemaps" class="large-text" cols="50" rows="4" />'. implode("\n",$lines) .'</textarea></label>
413
+ <p class="description">'.__('Add the full URL, including protocol (http/https) and domain, of any XML Sitemap that you want to append to the Sitemap Index. Start each URL on a new line.','xml-sitemap-feed').'<br /><span style="color: red" class="warning">'.__('Only valid sitemaps are allowed in the Sitemap Index. Use your Google/Bing Webmaster Tools to verify!','xml-sitemap-feed').'</span></p>
414
+ </fieldset>';
415
+
416
+ }
417
+
418
  public function urls_settings_field() {
419
  $urls = parent::get_urls();
 
420
  $lines = array();
421
 
422
  if(!empty($urls)) {
426
  }
427
  }
428
 
429
+ echo '
430
+ <fieldset><legend class="screen-reader-text">'.__('Include custom URLs','xml-sitemap-feed').'</legend>
431
+ <label>'.__('Additional URLs to append in an extra XML Sitemap:','xml-sitemap-feed').'<br />
432
+ <textarea name="'.parent::prefix().'urls" id="xmlsf_urls" class="large-text" cols="50" rows="4" />'. implode("\n",$lines) .'</textarea></label>
433
+ <p class="description">'.__('Add the full URL, including protocol (http/https) and domain, of any (static) page that you want to append to the ones already included by WordPress. Optionally add a priority value between 0 and 1, separated with a space after the URL. Start each URL on a new line.','xml-sitemap-feed').'</p>
434
+ </fieldset>';
435
 
436
  }
437
 
438
  public function domains_settings_field() {
439
  $default = parent::domain();
440
  $domains = (array) parent::get_option('domains');
 
441
 
442
+ echo '
443
+ <fieldset><legend class="screen-reader-text">'.__('Allowed domains','xml-sitemap-feed').'</legend>
444
+ <label>'.__('Additional domains to allow in the XML Sitemaps:','xml-sitemap-feed').'<br /><textarea name="'.parent::prefix().'domains" id="xmlsf_domains" class="large-text" cols="50" rows="4" />'. implode("\n",$domains) .'</textarea></label>
445
+ <p class="description">'.sprintf(__('By default, only the domain %s as used in your WordPress site address is allowed. This means that all URLs that use another domain (custom URLs or using a plugin like Page Links To) are filtered from the XML Sitemap. However, if you are the verified owner of other domains in your Google/Bing Webmaster Tools account, you can include these in the same sitemap. Add these domains, without protocol (http/https) each on a new line. Note that if you enter a domain with www, all URLs without it or with other subdomains will be filtered.','xml-sitemap-feed'),'<strong>'.$default.'</strong>').'</p>
446
+ </fieldset>';
447
 
448
  }
449
 
453
  */
454
 
455
  public function news_sitemap_settings() {
456
+ echo '<p><a target="_blank" href="https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=ravanhagen%40gmail%2ecom&item_name=XML%20Sitemap%20Feeds&item_number='.XMLSF_VERSION.'&no_shipping=0&tax=0&charset=UTF%2d8" title="'.
457
+ sprintf(__('Donate to keep the free %s plugin development & support going!','xml-sitemap-feed'),__('XML Sitemap & Google News Feeds','xml-sitemap-feed')).'"><img src="https://www.paypalobjects.com/en_US/i/btn/btn_donate_LG.gif" style="border:none;float:right;margin:4px 0 0 10px" alt="'.
458
+ sprintf(__('Donate to keep the free %s plugin development & support going!','xml-sitemap-feed'),__('XML Sitemap & Google News Feeds','xml-sitemap-feed')).'" width="92" height="26" /></a>'.
459
+ sprintf(__('These settings control the Google News Sitemap generated by the %s plugin.','xml-sitemap-feed'),__('XML Sitemap & Google News Feeds','xml-sitemap-feed')).' '.__('When you are done configuring and preparing your news content and you are convinced your site adheres to the <a href="https://support.google.com/news/publisher/answer/40787?ref_topic=2484652" target="_blank">Google News guidelines</a>, go ahead and <a href="https://support.google.com/news/publisher/troubleshooter/3179220?#ts=3179198" target="_blank">submit your site for inclusion</a>!','xml-sitemap-feed').' '.
460
+ sprintf(__('For ping options, go to %s.','xml-sitemap-feed'),'<a href="options-writing.php">'.translate('Writing Settings').'</a>').'</p>';
461
+
462
  }
463
 
464
  //TODO: publication name allow tag %category% ... post_types (+ exclusion per post or none + allow inclusion per post), limit to category ...
465
  public function news_name_field() {
466
  $options = parent::get_option('news_tags');
 
467
 
468
  $name = !empty($options['name']) ? $options['name'] : '';
469
  echo '
470
+ <fieldset><legend class="screen-reader-text">'.__('Publication name','xml-sitemap-feed').'</legend>
471
+ <input type="text" name="'.parent::prefix().'news_tags[name]" id="xmlsf_news_name" value="'.$name.'" class="regular-text"> <span class="description">'.sprintf(__('By default, the general %s setting will be used.','xml-sitemap-feed'),'<a href="options-general.php">'.translate('Site Title').'</a>').'</span>
472
+ </fieldset>';
473
  }
474
 
475
+ public function news_post_type_field() {
476
+ $defaults = parent::defaults('news_tags');
477
  $options = parent::get_option('news_tags');
478
  $prefix = parent::prefix();
479
 
480
+ $news_post_type = !empty($options['post_type']) ? $options['post_type'] : $defaults['post_type'];
481
+
482
+ $post_types = get_post_types(array('publicly_queryable' =>true),'objects');
483
+
484
+
485
+ // check for valid post types
486
+ if ( !is_array($post_types) || empty($post_types) || is_wp_error($post_types) ) {
487
+ echo '
488
+ <p style="color: red" class="error">'.__('Error: There where no valid post types found. Without at least one public post type, a Google News Sitemap cannot be created by this plugin. Please deselect the option Google News Sitemap at <a href="#xmlsf_sitemaps">Enable XML sitemaps</a> and choose another method.','xml-sitemap-feed').'</p>';
489
+ } else {
490
+ echo '
491
+ <fieldset><legend class="screen-reader-text">'.__('Include post types','xml-sitemap-feed').'</legend>';
492
+
493
+ foreach ( $post_types as $post_type ) {
494
+ // skip unallowed post types
495
+ if ( !is_object($post_type) || in_array($post_type->name,parent::disabled_post_types()) )
496
+ continue;
497
+
498
+ $checked = in_array($post_type->name,$news_post_type) || $news_post_type == 'any' ? true : false;
499
+ $disabled = false;
500
+ if ( isset($options['categories']) && is_array($options['categories']) ) {
501
+ // need to disable all post types that do not have the category taxonomy
502
+ $taxonomies = get_object_taxonomies($post_type->name,'names');
503
+ if ( !in_array('category',(array)$taxonomies) ) {
504
+ $disabled = true;
505
+ $checked = false;
506
+ }
507
+ }
508
+
509
+ echo '
510
+ <label><input type="checkbox" name="'.$prefix.'news_tags[post_type][]" id="xmlsf_post_type_'.
511
+ $post_type->name.'" value="'.$post_type->name.'" '.
512
+ checked( $checked, true, false).' '.
513
+ disabled( $disabled, true, false).' /> '.
514
+ $post_type->label.'</label><br />';
515
+ }
516
+ echo '
517
+ <p class="description">'.sprintf(__('At least one post type must be selected. By default, the post type %s will be used.','xml-sitemap-feed'),translate('Posts')).'</p>
518
+ </fieldset>';
519
+ }
520
+
521
+ }
522
+
523
+ public function news_categories_field() {
524
+ $options = parent::get_option('news_tags');
525
+
526
+ $all_categories = get_terms( 'category', array('hide_empty' => 0,'hierachical' => true) );
527
+ $selected_categories = isset($options['categories']) && is_array($options['categories']) ? $options['categories'] : array();
528
+ $count = count($all_categories);
529
+
530
+ if ($count==0) {
531
+ echo '
532
+ <p class="description">' . translate('No categories') . '</p>';
533
+ return;
534
+ } else {
535
+ echo '
536
+ <fieldset><legend class="screen-reader-text">'.translate('Categories').'</legend>';
537
+
538
+ $size = $count < 15 ? $count : 15;
539
+ echo '
540
+ <label>'.__('Limit to posts in these post categories:','xml-sitemap-feed').'<br />
541
+ <select multiple name="'.parent::prefix().'news_tags[categories][]" size="'.$size.'">';
542
+
543
+ foreach($all_categories as $category) {
544
+ $depth = count( explode( '%#%', get_category_parents($category, false, '%#%') ) ) - 2;
545
+ $pad = str_repeat('&nbsp;', $depth * 3);
546
+
547
+ $cat_name = apply_filters('list_cats', $category->name, $category);
548
+ echo '
549
+ <option class="depth-'.$depth.'" value="'.$category->term_id.'" '.
550
+ selected( in_array($category->term_id,$selected_categories), true, false ).
551
+ '>'.$pad.$cat_name.'</option>';
552
+ }
553
+ echo '
554
+ </select>
555
+ </label>
556
+ <p class="description">'.__('If you wish to limit posts that will feature in your News Sitemap to certain categories, select them here. Use the Ctrl/Cmd key plus click to select more than one or to deselect. If no categories are selected, posts of all categories will be included in your News Sitemap.','xml-sitemap-feed').'<br /><span style="color: red" class="warning">'.__('Please be aware that limiting by post category will rule out all custom post types that do not use post categories, even if you selected them to be included (above).','xml-sitemap-feed').'</span></p>';
557
+ echo '
558
+ </fieldset>';
559
+ }
560
+ }
561
+
562
+ public function news_image_field() {
563
+ $options = parent::get_option('news_tags');
564
+
565
  $image = !empty($options['image']) ? $options['image'] : '';
566
  echo '
567
+ <fieldset><legend class="screen-reader-text">'.translate('Images').'</legend>
568
+ <label>'.__('Add image tags for','xml-sitemap-feed').' <select name="'.parent::prefix().'news_tags[image]">
569
+ <option value="">'.translate('None').'</option>
570
+ <option value="featured" '.
571
+ selected( $image == "featured", true, false).
572
+ '>'.translate('Featured Image').'</option>
573
+ <option value="attached" '.
574
+ selected( $image == "attached", true, false).
575
+ '>'.__('Attached images','xml-sitemap-feed').'</option>
576
+ ';
577
+ echo '</select></label>
578
+ <p class="description">'.__('Note: Google News prefers at most one image per article in the News Sitemap. If multiple valid images are specified, the crawler will have to pick one arbitrarily. Images in News Sitemaps should be in jpeg or png format.','xml-sitemap-feed').' <a href="https://support.google.com/news/publisher/answer/185541" target="_blank">'.translate('More information...').'</a></p>
579
+ </fieldset>';
580
  }
581
 
582
  public function news_access_field() {
585
 
586
  $access = !empty($options['access']) ? $options['access'] : '';
587
  $access_default = !empty($access['default']) ? $access['default'] : '';
 
588
  $access_password = !empty($access['password']) ? $access['password'] : '';
589
  echo '
590
  <fieldset id="xmlsf_news_access"><legend class="screen-reader-text">'.__('Access (&lt;access&gt; tag)','xml-sitemap-feed').'</legend>
598
  <option value="Registration" '.selected( "Registration" == $access_default, true, false).'>'.__('Registration','xml-sitemap-feed').'</option>
599
  <option value="Subscription" '.selected( "Subscription" == $access_default, true, false).'>'.__('Subscription','xml-sitemap-feed').'</option>
600
  </select></label></li>';
 
 
 
 
 
 
 
601
  echo '
602
 
603
  <li><label>'.sprintf(__('Tag %s posts as','xml-sitemap-feed'),translate('Password Protected')).' <select name="'.$prefix.'news_tags[access][password]" id="xmlsf_news_tags_access_password">
705
  //sanitize callback functions
706
 
707
  public function sanitize_robots_settings($new) {
708
+ if(is_array($new)) $new = array_shift(array_filter($new));
709
  return trim(strip_tags($new));
710
  }
711
 
715
  if (isset($new['reset']) && $new['reset'] == '1') // if reset is checked, set transient to clear all settings
716
  set_transient('xmlsf_clear_settings','');
717
 
718
+ if( '1' == get_option('blog_public') ) {
719
  if ($old != $new && !isset($new['reset'])) // when sitemaps are added or removed, set transient to flush rewrite rules
720
  set_transient('xmlsf_flush_rewrite_rules','');
721
 
723
  set_transient('xmlsf_create_genres','');
724
 
725
  $sanitized = $new;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
726
  } else {
727
+ $sanitized = $old;
728
  }
729
 
730
  return $sanitized;
731
  }
732
+
733
  public function sanitize_post_types_settings( $new = array() ) {
734
  $old = parent::get_post_types();
735
  $defaults = parent::defaults('post_types');
744
 
745
  if ( isset($settings['priority']) && is_numeric($settings['priority']) ) {
746
  $sanitized[$post_type]['priority'] = $this->sanitize_priority($settings['priority'],0.1,0.9);
 
 
 
 
747
  } else {
748
  $sanitized[$post_type]['priority'] = $defaults[$post_type]['priority'];
749
  }
755
  return $sanitized;
756
  }
757
 
758
+ private function sanitize_priority($priority, $min = 0.0, $max = 1.0) {
759
+ $priority = floatval(str_replace(",",".",$priority));
760
+ if ($priority <= (float)$min)
761
+ return number_format($min,1);
762
+ elseif ($priority >= (float)$max)
763
+ return number_format($max,1);
764
  else
765
+ return number_format($priority,1);
766
  }
767
 
768
  public function sanitize_taxonomies_settings($new) {
774
  return $new;
775
  }
776
 
777
+ public function sanitize_custom_sitemaps_settings($new) {
778
+ $old = parent::get_custom_sitemaps();
779
+ $callback = create_function('$a','return filter_var($a,FILTER_VALIDATE_URL);');
780
+ if(is_array($new)) $new = array_shift(array_filter($new));
781
+ $input_arr = explode("\n",trim(strip_tags($new)));
782
+ $sanitized = array();
783
+
784
+ foreach ($input_arr as $line) {
785
+ $line = filter_var(esc_url(trim($line)),FILTER_VALIDATE_URL,FILTER_FLAG_PATH_REQUIRED);
786
+ if(!empty($line))
787
+ $sanitized[] = $line;
788
+ }
789
+
790
+ return $sanitized;
791
+ }
792
+
793
  public function sanitize_urls_settings($new) {
794
  $old = parent::get_urls();
795
+ if(is_array($new)) $new = array_shift(array_filter($new));
796
+ $input_arr = explode("\n",trim(strip_tags($new)));
797
  $sanitized = array();
798
  $callback = create_function('$a','return filter_var($a,FILTER_VALIDATE_URL) || is_numeric($a);');
799
 
800
+ foreach ($input_arr as $line) {
801
  if(empty($line))
802
  continue;
803
 
825
 
826
  public function sanitize_domains_settings($new) {
827
  $default = parent::domain();
828
+ if(is_array($new)) $new = array_shift(array_filter($new));
829
  $input = explode("\n",trim(strip_tags($new)));
830
  $sanitized = array();
831
 
832
  foreach ($input as $line) {
833
  $line = trim($line);
834
+ $parsed_url = parse_url(trim(filter_var($line,FILTER_SANITIZE_URL)));
835
+ // Before PHP version 5.4.7, parse_url will return the domain as path when scheme is omitted so we do:
836
+ $domain_arr = explode('/', $parsed_url['path']);
837
+ $domain = trim(!empty($parsed_url['host']) ? $parsed_url['host'] : array_shift(array_filter($domain_arr)));
838
+
839
+ // filter out empties and default domain
840
+ if(!empty($domain) && $domain !== $default && strpos($domain,".".$default) === false)
841
+ $sanitized[] = $domain;
842
  }
843
 
844
  return (!empty($sanitized)) ? $sanitized : '';
923
  // _xmlsf_priority
924
  if ( isset($_POST['xmlsf_priority']) && is_numeric($_POST['xmlsf_priority']) ) {
925
  update_post_meta($post_id, '_xmlsf_priority', $this->sanitize_priority($_POST['xmlsf_priority']) );
 
 
 
 
 
 
926
  } else {
927
  delete_post_meta($post_id, '_xmlsf_priority');
928
  }
943
  function __construct() {
944
  $sitemaps = parent::get_sitemaps();
945
  $prefix = parent::prefix();
 
946
 
947
  // sitemaps
948
  register_setting('reading', $prefix.'sitemaps', array($this,'sanitize_sitemaps_settings') );
949
  add_settings_field($prefix.'sitemaps', __('Enable XML sitemaps','xml-sitemap-feed'), array($this,'sitemaps_settings_field'), 'reading');
950
 
951
+ // robots rules only when permalinks are set
952
+ $rules = get_option( 'rewrite_rules' );
953
+ if( get_option('permalink_structure') && isset( $rules['robots\.txt$'] ) ) {
 
 
 
 
 
 
 
 
 
 
954
  register_setting('reading', $prefix.'robots', array($this,'sanitize_robots_settings') );
955
  add_settings_field($prefix.'robots', __('Additional robots.txt rules','xml-sitemap-feed'), array($this,'robots_settings_field'), 'reading');
956
  }
957
 
958
+ if ( get_option('blog_public') ) {
959
+ if ( is_multisite() && is_plugin_active_for_network(XMLSF_PLUGIN_BASENAME) )
960
+ add_settings_field($prefix.'reset', __('Reset XML sitemaps','xml-sitemap-feed'), array($this,'reset_settings_field'), 'reading');
961
 
962
+ if ( isset($sitemaps['sitemap']) ) {
963
+ // XML SITEMAP SETTINGS
964
+ add_settings_section('xml_sitemap_section', '<a name="xmlsf"></a>'.__('XML Sitemap','xml-sitemap-feed'), array($this,'xml_sitemap_settings'), 'reading');
965
+ // post_types
966
+ register_setting('reading', $prefix.'post_types', array($this,'sanitize_post_types_settings') );
967
+ add_settings_field($prefix.'post_types', __('Include post types','xml-sitemap-feed'), array($this,'post_types_settings_field'), 'reading', 'xml_sitemap_section');
968
+ // taxonomies
969
+ register_setting('reading', $prefix.'taxonomies', array($this,'sanitize_taxonomies_settings') );
970
+ add_settings_field($prefix.'taxonomies', __('Include taxonomies','xml-sitemap-feed'), array($this,'taxonomies_settings_field'), 'reading', 'xml_sitemap_section');
971
+ // custom domains
972
+ register_setting('reading', $prefix.'domains', array($this,'sanitize_domains_settings') );
973
+ add_settings_field($prefix.'domains', __('Allowed domains','xml-sitemap-feed'), array($this,'domains_settings_field'), 'reading', 'xml_sitemap_section');
974
+ // custom urls
975
+ register_setting('reading', $prefix.'urls', array($this,'sanitize_urls_settings') );
976
+ add_settings_field($prefix.'urls', __('Include custom URLs','xml-sitemap-feed'), array($this,'urls_settings_field'), 'reading', 'xml_sitemap_section');
977
+ // custom sitemaps
978
+ register_setting('reading', $prefix.'custom_sitemaps', array($this,'sanitize_custom_sitemaps_settings') );
979
+ add_settings_field($prefix.'custom_sitemaps', __('Include custom XML Sitemaps','xml-sitemap-feed'), array($this,'custom_sitemaps_settings_field'), 'reading', 'xml_sitemap_section');
980
+
981
+ // POST META BOX
982
+ add_action( 'add_meta_boxes', array($this,'add_meta_box') );
983
+ add_action( 'save_post', array($this,'save_metadata') );
984
+ }
985
 
986
+ if ( isset($sitemaps['sitemap-news']) ) {
987
+ // XML SITEMAP SETTINGS
988
+ add_settings_section('news_sitemap_section', '<a name="xmlnf"></a>'.__('Google News Sitemap','xml-sitemap-feed'), array($this,'news_sitemap_settings'), 'reading');
989
+
990
+ // tags
991
+ register_setting('reading', $prefix.'news_tags', array($this,'sanitize_news_tags_settings') );
992
+ add_settings_field($prefix.'news_name', '<label for="xmlsf_news_name">'.__('Publication name','xml-sitemap-feed').'</label>', array($this,'news_name_field'), 'reading', 'news_sitemap_section');
993
+ add_settings_field($prefix.'news_post_type', __('Include post types','xml-sitemap-feed'), array($this,'news_post_type_field'), 'reading', 'news_sitemap_section');
994
+ add_settings_field($prefix.'news_categories', translate('Categories'), array($this,'news_categories_field'), 'reading', 'news_sitemap_section');
995
+ add_settings_field($prefix.'news_image', translate('Images'), array($this,'news_image_field'), 'reading', 'news_sitemap_section');
996
+ add_settings_field($prefix.'news_access', __('Access (&lt;access&gt; tag)','xml-sitemap-feed'), array($this,'news_access_field'), 'reading', 'news_sitemap_section');
997
+ add_settings_field($prefix.'news_genres', __('Genres (&lt;genres&gt; tag)','xml-sitemap-feed'), array($this,'news_genres_field'), 'reading', 'news_sitemap_section');
998
+ add_settings_field($prefix.'news_keywords', __('Topics (&lt;keywords&gt; tag)','xml-sitemap-feed'), array($this,'news_keywords_field'), 'reading', 'news_sitemap_section');
999
+ add_settings_field($prefix.'news_locations', __('Locations (&lt;geo_locations&gt; tag)','xml-sitemap-feed'), array($this,'news_locations_field'), 'reading', 'news_sitemap_section');
1000
+ }
1001
+
1002
+ if ( isset($sitemaps['sitemap']) || isset($sitemaps['sitemap-news']) ) {
1003
+ register_setting('writing', $prefix.'ping', array($this,'sanitize_ping_settings') );
1004
+ add_settings_field($prefix.'ping', translate('Update Services'), array($this,'ping_settings_field'), 'writing');
1005
+ }
1006
  }
1007
 
1008
  // ACTION LINK
1017
 
1018
  if ( class_exists('XMLSitemapFeed') )
1019
  $xmlsf_admin = new XMLSF_Admin();
 
includes/core.php CHANGED
@@ -36,7 +36,7 @@ class XMLSitemapFeed {
36
  // Global values used for priority and changefreq calculation
37
  private $domain;
38
  private $firstdate;
39
- private $lastmodified;
40
  private $postmodified = array();
41
  private $termmodified = array();
42
  private $blogpage;
@@ -66,7 +66,7 @@ class XMLSitemapFeed {
66
  }
67
 
68
  // default options
69
- private function build_defaults()
70
  {
71
  // sitemaps
72
  if ( '1' == get_option('blog_public') )
@@ -120,49 +120,57 @@ class XMLSitemapFeed {
120
  // news sitemap settings
121
  $this->defaults['news_sitemap'] = array();
122
 
123
- // ping search engines
124
  $this->defaults['ping'] = array(
125
  'google' => array (
126
  'active' => '1',
127
  'uri' => 'http://www.google.com/webmasters/tools/ping?sitemap=',
128
- 'type' => 'GET'
 
129
  ),
130
  'bing' => array (
131
  'active' => '1',
132
  'uri' => 'http://www.bing.com/ping?sitemap=',
133
- 'type' => 'GET'
 
134
  ),
135
  'yandex' => array (
136
  'active' => '',
137
  'uri' => 'http://ping.blogs.yandex.ru/RPC2',
138
- 'type' => 'RPC'
139
  ),
140
  'baidu' => array (
141
  'active' => '',
142
  'uri' => 'http://ping.baidu.com/ping/RPC2',
143
- 'type' => 'RPC'
144
  ),
145
  'others' => array (
146
  'active' => '1',
147
  'uri' => 'http://rpc.pingomatic.com/',
148
- 'type' => 'RPC'
149
  ),
150
  );
151
 
152
- $this->defaults['pong'] = array(); // for storing last ping timestamps and status
153
-
154
  // robots
155
- $this->defaults['robots'] = "Disallow: */xmlrpc.php\nDisallow: */wp-*.php\nDisallow: */trackback/\nDisallow: *?wptheme=\nDisallow: *?comments=\nDisallow: *?replytocom\nDisallow: */comment-page-\nDisallow: *?s=\nDisallow: */wp-content/\nAllow: */wp-content/uploads/\n";
 
 
156
 
157
  // additional urls
158
  $this->defaults['urls'] = array();
159
 
 
 
 
160
  // additional allowed domains
161
  $this->defaults['domains'] = array();
162
 
163
  // news sitemap tags settings
 
164
  $this->defaults['news_tags'] = array(
165
- 'name' => '',
 
 
166
  'image' => 'featured',
167
  'access' => array(
168
  'default' => '',
@@ -182,8 +190,6 @@ class XMLSitemapFeed {
182
  'default' => ''
183
  )
184
  );
185
-
186
-
187
  }
188
 
189
  /**
@@ -193,7 +199,7 @@ class XMLSitemapFeed {
193
  public function defaults($key = false)
194
  {
195
  if (empty($this->defaults))
196
- $this->build_defaults();
197
 
198
  if ($key) {
199
  $return = ( isset($this->defaults[$key]) ) ? $this->defaults[$key] : '';
@@ -224,15 +230,7 @@ class XMLSitemapFeed {
224
  // make sure it's an array we are returning
225
  return (!empty($return)) ? (array)$return : array();
226
  }
227
-
228
- public function get_pong()
229
- {
230
- $return = $this->get_option('pong');
231
 
232
- // make sure it's an array we are returning
233
- return (!empty($return)) ? (array)$return : array();
234
- }
235
-
236
  public function disabled_post_types()
237
  {
238
  return $this->disabled_post_types;
@@ -255,10 +253,9 @@ class XMLSitemapFeed {
255
 
256
  public function have_post_types()
257
  {
258
- $post_types = $this->get_option('post_types');
259
  $return = array();
260
 
261
- foreach ( $post_types as $type => $values ) {
262
  if(!empty($values['active'])) {
263
  $count = wp_count_posts( $values['name'] );
264
  if ($count->publish > 0) {
@@ -280,6 +277,21 @@ class XMLSitemapFeed {
280
  return (!empty($return)) ? (array)$return : array();
281
  }
282
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
283
  public function get_urls()
284
  {
285
  $return = $this->get_option('urls');
@@ -297,10 +309,11 @@ class XMLSitemapFeed {
297
 
298
  public function get_domains()
299
  {
300
- $return = array_merge( array( $this->domain() ), (array)$this->get_option('domains') );
301
-
302
- // make sure it's an array we are returning
303
- return (!empty($return)) ? (array)$return : array();
 
304
  }
305
 
306
  public function get_archives($post_type = 'post', $type = '')
@@ -320,7 +333,7 @@ class XMLSitemapFeed {
320
  }
321
  if ( $arcresults ) {
322
  foreach ( (array) $arcresults as $arcresult ) {
323
- $return[$arcresult->year.$arcresult->month] = $this->get_index_url( 'posttype', $post_type, $arcresult->year . $arcresult->month );
324
  }
325
  }
326
  } elseif ('yearly' == $type) {
@@ -336,11 +349,11 @@ class XMLSitemapFeed {
336
  }
337
  if ($arcresults) {
338
  foreach ( (array) $arcresults as $arcresult) {
339
- $return[$arcresult->year] = $this->get_index_url( 'posttype', $post_type, $arcresult->year );
340
  }
341
  }
342
  } else {
343
- $return[0] = $this->get_index_url('posttype', $post_type); // $sitemap = 'home', $type = false, $param = false
344
  }
345
  return $return;
346
  }
@@ -351,15 +364,19 @@ class XMLSitemapFeed {
351
  }
352
 
353
  public function do_tags( $type = 'post' )
354
- {
355
- $return = $this->get_option('post_types');
356
 
357
  // make sure it's an array we are returning
358
- return ( isset($return[$type]) && !empty($return[$type]['tags']) ) ? (array)$return[$type]['tags'] : array();
 
 
 
 
359
  }
360
 
361
- public function is_home($id) {
362
-
363
  if ( empty($this->blogpage) ) {
364
  $blogpage = get_option('page_for_posts');
365
 
@@ -375,7 +392,6 @@ class XMLSitemapFeed {
375
  }
376
 
377
  return in_array($id,$this->blogpage);
378
-
379
  }
380
 
381
  /**
@@ -394,7 +410,7 @@ class XMLSitemapFeed {
394
 
395
  if ( empty($this->postmodified[$post->ID]) ) {
396
  $postmodified = get_post_modified_time( 'Y-m-d H:i:s', true, $post->ID );
397
- $options = $this->get_option('post_types');
398
 
399
  if( !empty($options[$post->post_type]['update_lastmod_on_comments']) )
400
  $lastcomment = get_comments( array(
@@ -404,9 +420,13 @@ class XMLSitemapFeed {
404
  ) );
405
 
406
  if ( isset($lastcomment[0]->comment_date_gmt) )
407
- if ( mysql2date( 'U', $lastcomment[0]->comment_date_gmt ) > mysql2date( 'U', $postmodified ) )
408
  $postmodified = $lastcomment[0]->comment_date_gmt;
409
 
 
 
 
 
410
  $this->postmodified[$post->ID] = $postmodified;
411
  }
412
 
@@ -425,14 +445,14 @@ class XMLSitemapFeed {
425
  'update_post_term_cache' => false,
426
  'update_cache' => false,
427
  'tax_query' => array(
428
- array(
429
- 'taxonomy' => $term->taxonomy,
430
- 'field' => 'slug',
431
- 'terms' => $term->slug
 
432
  )
433
  )
434
- )
435
- );
436
  $this->termmodified[$term->term_id] = isset($posts[0]->post_date_gmt) ? $posts[0]->post_date_gmt : '';
437
  }
438
  return $this->termmodified[$term->term_id];
@@ -441,13 +461,14 @@ class XMLSitemapFeed {
441
  return get_lastdate( 'gmt', $obj->object_type );
442
  // uses get_lastdate() function defined in xml-sitemap/hacks.php !
443
  // which is a shortcut: returns last post date, not last modified date...
444
- // TODO find the long way around (take tax type, get all terms,
445
- // do tax_query with all terms for one post and get its lastmod date)
 
446
  }
447
 
448
  else :
449
 
450
- return '0000-00-00 00:00:00';
451
 
452
  endif;
453
  }
@@ -460,7 +481,7 @@ class XMLSitemapFeed {
460
  $options = $this->get_option('news_tags');
461
  $which = isset($options['image']) ? $options['image'] : '';
462
  } else {
463
- $options = $this->get_option('post_types');
464
  $which = isset($options[$post->post_type]['tags']['image']) ? $options[$post->post_type]['tags']['image'] : '';
465
  }
466
  if('attached' == $which) {
@@ -494,7 +515,7 @@ class XMLSitemapFeed {
494
  public function get_lastmod($sitemap = 'post_type', $term = '')
495
  {
496
  $return = trim(mysql2date('Y-m-d\TH:i:s+00:00', $this->modified($sitemap,$term), false));
497
- return !empty($return) ? '<lastmod>'.$return.'</lastmod>' : '';
498
  }
499
 
500
  public function get_changefreq($sitemap = 'post_type', $term = '')
@@ -504,7 +525,7 @@ class XMLSitemapFeed {
504
  if (empty($modified))
505
  return 'weekly';
506
 
507
- $lastactivityage = ( gmdate('U') - mysql2date( 'U', $modified ) ); // post age
508
 
509
  if ( ($lastactivityage/86400) < 1 ) { // last activity less than 1 day old
510
  $changefreq = 'hourly';
@@ -525,31 +546,31 @@ class XMLSitemapFeed {
525
  {
526
  if ( 'post_type' == $sitemap ) :
527
  global $post;
528
- $options = $this->get_option('post_types');
529
  $defaults = $this->defaults('post_types');
530
  $priority_meta = get_metadata('post', $post->ID, '_xmlsf_priority' , true);
531
 
532
  if ( !empty($priority_meta) || $priority_meta == '0' ) {
533
 
534
- $priority = $priority_meta;
535
 
536
  } elseif ( !empty($options[$post->post_type]['dynamic_priority']) ) {
537
 
538
- $post_modified = mysql2date('U',$post->post_modified_gmt);
539
 
540
  if ( empty($this->lastmodified) )
541
- $this->lastmodified = mysql2date('U',get_lastmodified('GMT',$post->post_type));
542
  // last posts or page modified date in Unix seconds
543
  // uses get_lastmodified() function defined in xml-sitemap/hacks.php !
544
 
545
  if ( empty($this->firstdate) )
546
- $this->firstdate = mysql2date('U',get_firstdate('GMT',$post->post_type));
547
  // uses get_firstdate() function defined in xml-sitemap/hacks.php !
548
 
549
  if ( isset($options[$post->post_type]['priority']) )
550
- $priority_value = $options[$post->post_type]['priority'];
551
  else
552
- $priority_value = $defaults[$post->post_type]['priority'];
553
 
554
  // reduce by age
555
  // NOTE : home/blog page gets same treatment as sticky post
@@ -561,10 +582,6 @@ class XMLSitemapFeed {
561
  if ( $post->comment_count > 0 )
562
  $priority = $priority + 0.1 + ( 0.9 - $priority ) * $post->comment_count / wp_count_comments($post->post_type)->approved;
563
 
564
- // and a final trim for cases where we end up above 1 (sticky posts with many comments)
565
- if ($priority > 1)
566
- $priority = 1;
567
-
568
  } else {
569
 
570
  $priority = ( isset($options[$post->post_type]['priority']) && is_numeric($options[$post->post_type]['priority']) ) ? $options[$post->post_type]['priority'] : $defaults[$post->post_type]['priority'];
@@ -592,6 +609,14 @@ class XMLSitemapFeed {
592
 
593
  endif;
594
 
 
 
 
 
 
 
 
 
595
  return number_format($priority,1);
596
  }
597
 
@@ -639,7 +664,7 @@ class XMLSitemapFeed {
639
  }
640
  }
641
  }
642
-
643
  return apply_filters( 'xmlsf_allowed_domain', $return );
644
  }
645
 
@@ -687,7 +712,7 @@ class XMLSitemapFeed {
687
  // add robots.txt rules
688
  public function robots_txt($output)
689
  {
690
- return $output . $this->get_option('robots') ;
691
  }
692
 
693
  /**
@@ -772,27 +797,44 @@ class XMLSitemapFeed {
772
  }
773
 
774
  if ( $request['feed'] == 'sitemap-news' ) {
 
 
 
 
 
775
  // disable caching
776
- define( 'DONOTCACHEPAGE', 1 ); // wp super cache -- or does super cache always clear feeds after new posts??
777
- // TODO w3tc
778
 
779
- // setup actions and filters
780
  add_action('do_feed_sitemap-news', array($this, 'load_template_news'), 10, 1);
781
- add_filter('post_limits', array($this, 'filter_news_limits') );
782
- add_filter('posts_where', array($this, 'filter_news_where'), 10, 1);
783
 
784
- // modify request parameters
785
- $types_arr = explode(',',XMLSF_NEWS_POST_TYPE);
786
- $request['post_type'] = (in_array('any',$types_arr)) ? 'any' : $types_arr;
787
 
788
- // include post status private at some point?
789
- // $request['post_status'] = array( 'publish', 'private' );
790
- // for now only publish:
791
- $request['post_status'] = 'publish';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
792
 
 
793
  $request['no_found_rows'] = true;
794
- $request['update_post_meta_cache'] = false;
795
- //$request['update_post_term_cache'] = false; // << TODO test: can we disable or do we need this for terms?
796
 
797
  return $request;
798
  }
@@ -819,10 +861,6 @@ class XMLSitemapFeed {
819
  $request['no_found_rows'] = true;
820
  $request['update_post_meta_cache'] = false;
821
  $request['update_post_term_cache'] = false;
822
- /*if ('attachment' == $post_type['name']) {
823
- $request['post_status'] = 'inherit';
824
- $request['post_mime_type'] = 'image,audio'; // ,video,audio
825
- }*/
826
 
827
  return $request;
828
  }
@@ -839,8 +877,9 @@ class XMLSitemapFeed {
839
  $request['taxonomy'] = $taxonomy;
840
  $request['lang'] = '';
841
  $request['no_found_rows'] = true;
842
- $request['update_post_meta_cache'] = false;
843
  $request['update_post_term_cache'] = false;
 
844
  $request['post_status'] = 'publish';
845
 
846
  return $request;
@@ -921,13 +960,22 @@ class XMLSitemapFeed {
921
  {
922
  return 'LIMIT 0, 1000';
923
  }
 
 
 
 
924
 
925
  // Create a new filtering function that will add a where clause to the query,
926
  // used for the Google News Sitemap
927
  public function filter_news_where( $where = '' )
928
  {
929
- // only posts from the last 2 days
930
- return $where . " AND post_date > '" . date('Y-m-d H:i:s', strtotime('-49 hours')) . "'";
 
 
 
 
 
931
  }
932
 
933
 
@@ -952,38 +1000,66 @@ class XMLSitemapFeed {
952
 
953
  public function do_pings($new_status, $old_status, $post)
954
  {
955
- // first check if we've got a post type that is included in our sitemap
956
- foreach($this->get_option('post_types') as $post_type)
957
- if( $post->post_type == $post_type['name'] ) {
958
- $active = true; // got a live one, green light is on.
959
- break;
960
- }
961
- if ( !isset($active) )
962
- return;
963
-
964
- if ( $old_status != 'publish' && $new_status == 'publish' ) {
965
- // Post is published from any other status
966
- $sitemaps = $this->get_sitemaps();
967
- foreach ($this->get_ping() as $se => $data)
968
- if( !empty($data['active']) && '1' == $data['active'])
969
- foreach ( $sitemaps as $pretty )
970
- if ( $this->ping( $data['uri'].urlencode(trailingslashit(get_bloginfo('url')) . $pretty) ) ) {
971
- $pong = $this->get_pong();
972
- $pong[$se][$pretty] = mysql2date('Y-m-d H:i:s', 'now', false);
973
- update_option($this->prefix.'pong',$pong);
 
 
 
 
974
  }
 
 
 
 
975
  }
976
- /*
977
- if ( $old_status == 'publish' && $new_status == 'publish' ) {
978
- // Post is updated
979
- // TODO make pinging in this case optional ... later, maybe
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
980
  }
981
- */
982
- // see more on http://codex.wordpress.org/Post_Status_Transitions
983
  }
984
 
985
  /**
986
- * DE-ACTIVATION
987
  */
988
 
989
  public function clear_settings()
@@ -1002,54 +1078,89 @@ class XMLSitemapFeed {
1002
  }
1003
  $terms = get_terms('gn-location-1',array('hide_empty' => false));
1004
  foreach ( $terms as $term ) {
1005
- wp_delete_term( $term->term_id, 'gn-genre' );
1006
  }
1007
  $terms = get_terms('gn-location-2',array('hide_empty' => false));
1008
  foreach ( $terms as $term ) {
1009
- wp_delete_term( $term->term_id, 'gn-genre' );
1010
  }
1011
  $terms = get_terms('gn-location-3',array('hide_empty' => false));
1012
  foreach ( $terms as $term ) {
1013
- wp_delete_term( $term->term_id, 'gn-genre' );
1014
  }
1015
 
1016
- remove_action('generate_rewrite_rules', array($this, 'rewrite_rules') );
1017
- global $wp_rewrite;
1018
- $wp_rewrite->flush_rules();
 
 
 
 
1019
  }
1020
 
1021
  /**
1022
  * INITIALISATION
1023
  */
1024
 
1025
- public function plugins_loaded()
1026
  {
1027
- // TEXT DOMAIN
1028
- if ( is_admin() ) // text domain needed on admin only
1029
- load_plugin_textdomain('xml-sitemap-feed', false, dirname(dirname(plugin_basename( __FILE__ ))) . '/languages' );
1030
-
1031
- // UPGRADE
1032
- if (get_option('xmlsf_version') != XMLSF_VERSION) {
1033
  // rewrite rules not available on plugins_loaded
1034
  // and don't flush rules from init as Polylang chokes on that
1035
- // just remove the rules and let WP renew them when ready...
1036
  delete_option('rewrite_rules');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1037
 
1038
- // upgrade from ping to pong
1039
- $pings = get_option($this->prefix.'pings');
1040
- if (!empty($pings))
1041
- update_option($this->prefix.'pong',$pings);
1042
-
1043
- $this->yes_mother = true; // did you flush and wash your hands?
1044
 
1045
- update_option('xmlsf_version', XMLSF_VERSION);
1046
  }
 
 
 
 
 
 
 
 
 
 
 
1047
 
1048
  }
1049
 
1050
  private function flush_rules($hard = false)
1051
  {
1052
- if ($this->yes_mother) // did you flush?
 
1053
  return; // yes, mother!
1054
 
1055
  global $wp_rewrite;
@@ -1057,85 +1168,93 @@ class XMLSitemapFeed {
1057
  $wp_rewrite->flush_rules($hard);
1058
 
1059
  $this->yes_mother = true;
 
1060
  }
1061
 
1062
  public function register_gn_taxonomies()
1063
  {
1064
- register_taxonomy( 'gn-genre', 'post', array(
1065
- 'hierarchical' => true,
1066
- 'labels' => array(
1067
- 'name' => __('Google News Genres','xml-sitemap-feed'),
1068
- 'singular_name' => __('Google News Genre','xml-sitemap-feed'),
1069
- //'menu_name' => __('GN Genres','xml-sitemap-feed'),
1070
- ),
1071
- 'public' => false,
1072
- 'show_ui' => true,
1073
- 'show_tagcloud' => false,
1074
- 'query_var' => false,
1075
- 'capabilities' => array( // prevent creation / deletion
1076
- 'manage_terms' => 'nobody',
1077
- 'edit_terms' => 'nobody',
1078
- 'delete_terms' => 'nobody',
1079
- 'assign_terms' => 'edit_posts'
1080
- )
1081
- ));
1082
-
1083
- register_taxonomy( 'gn-location-3', 'post', array(
1084
- 'hierarchical' => false,
1085
- 'labels' => array(
1086
- 'name' => __('Google News Country','xml-sitemap-feed'),
1087
- //'menu_name' => __('GN Genres','xml-sitemap-feed'),
1088
- 'separate_items_with_commas' => __('Only one allowed. Must be consistent with other Google News location entities (if set).','xml-sitemap-feed'),
1089
- ),
1090
- 'public' => false,
1091
- 'show_ui' => true,
1092
- 'show_tagcloud' => false,
1093
- 'query_var' => false,
1094
- 'capabilities' => array( // prevent creation / deletion
1095
- 'manage_terms' => 'nobody',
1096
- 'edit_terms' => 'nobody',
1097
- 'delete_terms' => 'nobody',
1098
- 'assign_terms' => 'edit_posts'
1099
- )
1100
- ));
1101
-
1102
- register_taxonomy( 'gn-location-2', 'post', array(
1103
- 'hierarchical' => false,
1104
- 'labels' => array(
1105
- 'name' => __('Google News State/Province','xml-sitemap-feed'),
1106
- //'menu_name' => __('GN Genres','xml-sitemap-feed'),
1107
- 'separate_items_with_commas' => __('Only one allowed. Must be consistent with other Google News location entities (if set).','xml-sitemap-feed'),
1108
- ),
1109
- 'public' => false,
1110
- 'show_ui' => true,
1111
- 'show_tagcloud' => false,
1112
- 'query_var' => false,
1113
- 'capabilities' => array( // prevent creation / deletion
1114
- 'manage_terms' => 'nobody',
1115
- 'edit_terms' => 'nobody',
1116
- 'delete_terms' => 'nobody',
1117
- 'assign_terms' => 'edit_posts'
1118
- )
1119
- ));
1120
-
1121
- register_taxonomy( 'gn-location-1', 'post', array(
1122
- 'hierarchical' => false,
1123
- 'labels' => array(
1124
- 'name' => __('Google News City','xml-sitemap-feed'),
1125
- //'menu_name' => __('GN Genres','xml-sitemap-feed'),
1126
- 'separate_items_with_commas' => __('Only one allowed. Must be consistent with other Google News location entities (if set).','xml-sitemap-feed'),
1127
- ),
1128
- 'public' => false,
1129
- 'show_ui' => true,
1130
- 'show_tagcloud' => false,
1131
- 'query_var' => false,
1132
- 'capabilities' => array( // prevent creation / deletion
1133
- 'manage_terms' => 'nobody',
1134
- 'edit_terms' => 'nobody',
1135
- 'delete_terms' => 'nobody',
1136
- 'assign_terms' => 'edit_posts'
1137
- )
1138
- ));
 
 
 
 
 
 
 
1139
 
1140
  }
1141
 
@@ -1203,7 +1322,7 @@ class XMLSitemapFeed {
1203
  // REQUEST main filtering function
1204
  add_filter('request', array($this, 'filter_request'), 1 );
1205
 
1206
- // TEXT DOMAIN, LANGUAGE PLUGIN FILTERS ...
1207
  add_action('plugins_loaded', array($this,'plugins_loaded'), 11 );
1208
 
1209
  // REWRITES
@@ -1213,7 +1332,7 @@ class XMLSitemapFeed {
1213
  // TAXONOMY
1214
  add_action('init', array($this,'register_news_taxonomy'), 0 );
1215
 
1216
- // REGISTER SETTINGS, SETTINGS FIELDS, UPGRADE checks...
1217
  add_action('admin_init', array($this,'admin_init'));
1218
 
1219
  // ROBOTSTXT
@@ -1223,8 +1342,15 @@ class XMLSitemapFeed {
1223
  // PINGING
1224
  add_action('transition_post_status', array($this, 'do_pings'), 10, 3);
1225
 
 
 
 
 
 
 
 
1226
  // DE-ACTIVATION
1227
- register_deactivation_hook( XMLSF_PLUGIN_DIR . '/xml-sitemap.php', array($this, 'clear_settings') );
 
1228
  }
1229
-
1230
  }
36
  // Global values used for priority and changefreq calculation
37
  private $domain;
38
  private $firstdate;
39
+ private $lastmodified; // unused at the moment
40
  private $postmodified = array();
41
  private $termmodified = array();
42
  private $blogpage;
66
  }
67
 
68
  // default options
69
+ private function set_defaults()
70
  {
71
  // sitemaps
72
  if ( '1' == get_option('blog_public') )
120
  // news sitemap settings
121
  $this->defaults['news_sitemap'] = array();
122
 
123
+ // search engines to ping
124
  $this->defaults['ping'] = array(
125
  'google' => array (
126
  'active' => '1',
127
  'uri' => 'http://www.google.com/webmasters/tools/ping?sitemap=',
128
+ 'type' => 'GET',
129
+ 'news' => '1'
130
  ),
131
  'bing' => array (
132
  'active' => '1',
133
  'uri' => 'http://www.bing.com/ping?sitemap=',
134
+ 'type' => 'GET',
135
+ 'news' => '1'
136
  ),
137
  'yandex' => array (
138
  'active' => '',
139
  'uri' => 'http://ping.blogs.yandex.ru/RPC2',
140
+ 'type' => 'RPC',
141
  ),
142
  'baidu' => array (
143
  'active' => '',
144
  'uri' => 'http://ping.baidu.com/ping/RPC2',
145
+ 'type' => 'RPC',
146
  ),
147
  'others' => array (
148
  'active' => '1',
149
  'uri' => 'http://rpc.pingomatic.com/',
150
+ 'type' => 'RPC',
151
  ),
152
  );
153
 
 
 
154
  // robots
155
+ $this->defaults['robots'] = "";
156
+ // Old rules "Disallow: */xmlrpc.php\nDisallow: */wp-*.php\nDisallow: */trackback/\nDisallow: *?wptheme=\nDisallow: *?comments=\nDisallow: *?replytocom\nDisallow: */comment-page-\nDisallow: *?s=\nDisallow: */wp-content/\nAllow: */wp-content/uploads/\n";
157
+ // Better is to set <meta name="robots" content="noindex, follow"> or send X-Robots-Tag header. TODO !!
158
 
159
  // additional urls
160
  $this->defaults['urls'] = array();
161
 
162
+ // additional custom_sitemaps
163
+ $this->defaults['custom_sitemaps'] = array();
164
+
165
  // additional allowed domains
166
  $this->defaults['domains'] = array();
167
 
168
  // news sitemap tags settings
169
+ $news_post_types = defined('XMLSF_NEWS_POST_TYPE') ? explode(',',XMLSF_NEWS_POST_TYPE) : array('post');
170
  $this->defaults['news_tags'] = array(
171
+ 'name' => '',
172
+ 'post_type' => (in_array('any',$news_post_types)) ? 'any' : $news_post_types,
173
+ 'categories' => '',
174
  'image' => 'featured',
175
  'access' => array(
176
  'default' => '',
190
  'default' => ''
191
  )
192
  );
 
 
193
  }
194
 
195
  /**
199
  public function defaults($key = false)
200
  {
201
  if (empty($this->defaults))
202
+ $this->set_defaults();
203
 
204
  if ($key) {
205
  $return = ( isset($this->defaults[$key]) ) ? $this->defaults[$key] : '';
230
  // make sure it's an array we are returning
231
  return (!empty($return)) ? (array)$return : array();
232
  }
 
 
 
 
233
 
 
 
 
 
234
  public function disabled_post_types()
235
  {
236
  return $this->disabled_post_types;
253
 
254
  public function have_post_types()
255
  {
 
256
  $return = array();
257
 
258
+ foreach ( $this->get_post_types() as $type => $values ) {
259
  if(!empty($values['active'])) {
260
  $count = wp_count_posts( $values['name'] );
261
  if ($count->publish > 0) {
277
  return (!empty($return)) ? (array)$return : array();
278
  }
279
 
280
+ public function get_custom_sitemaps()
281
+ {
282
+ $return = $this->get_option('custom_sitemaps');
283
+
284
+ // make sure it's an array we are returning
285
+ if(!empty($return)) {
286
+ if(is_array($return))
287
+ return $return;
288
+ else
289
+ return explode("\n",$return);
290
+ } else {
291
+ return array();
292
+ }
293
+ }
294
+
295
  public function get_urls()
296
  {
297
  $return = $this->get_option('urls');
309
 
310
  public function get_domains()
311
  {
312
+ $domains = $this->get_option('domains');
313
+ if (!empty($domains) && is_array($domains))
314
+ return array_merge( array( $this->domain() ), $domains );
315
+ else
316
+ return array( $this->domain() );
317
  }
318
 
319
  public function get_archives($post_type = 'post', $type = '')
333
  }
334
  if ( $arcresults ) {
335
  foreach ( (array) $arcresults as $arcresult ) {
336
+ $return[$arcresult->year.$arcresult->month] = esc_html( $this->get_index_url( 'posttype', $post_type, $arcresult->year . $arcresult->month ) );
337
  }
338
  }
339
  } elseif ('yearly' == $type) {
349
  }
350
  if ($arcresults) {
351
  foreach ( (array) $arcresults as $arcresult) {
352
+ $return[$arcresult->year] = esc_html($this->get_index_url( 'posttype', $post_type, $arcresult->year ) );
353
  }
354
  }
355
  } else {
356
+ $return[0] = esc_html($this->get_index_url('posttype', $post_type) ); // $sitemap = 'home', $type = false, $param = false
357
  }
358
  return $return;
359
  }
364
  }
365
 
366
  public function do_tags( $type = 'post' )
367
+ {
368
+ $return = $this->get_post_types();
369
 
370
  // make sure it's an array we are returning
371
+ return (
372
+ is_string($type) &&
373
+ isset($return[$type]) &&
374
+ !empty($return[$type]['tags'])
375
+ ) ? (array)$return[$type]['tags'] : array();
376
  }
377
 
378
+ public function is_home($id)
379
+ {
380
  if ( empty($this->blogpage) ) {
381
  $blogpage = get_option('page_for_posts');
382
 
392
  }
393
 
394
  return in_array($id,$this->blogpage);
 
395
  }
396
 
397
  /**
410
 
411
  if ( empty($this->postmodified[$post->ID]) ) {
412
  $postmodified = get_post_modified_time( 'Y-m-d H:i:s', true, $post->ID );
413
+ $options = $this->get_post_types();
414
 
415
  if( !empty($options[$post->post_type]['update_lastmod_on_comments']) )
416
  $lastcomment = get_comments( array(
420
  ) );
421
 
422
  if ( isset($lastcomment[0]->comment_date_gmt) )
423
+ if ( mysql2date( 'U', $lastcomment[0]->comment_date_gmt, false ) > mysql2date( 'U', $postmodified, false ) )
424
  $postmodified = $lastcomment[0]->comment_date_gmt;
425
 
426
+ // make sure lastmod is not older than publication date (happens on scheduled posts)
427
+ if ( isset($post->post_date_gmt) && strtotime($post->post_date_gmt) > strtotime($postmodified) )
428
+ $postmodified = $post->post_date_gmt;
429
+
430
  $this->postmodified[$post->ID] = $postmodified;
431
  }
432
 
445
  'update_post_term_cache' => false,
446
  'update_cache' => false,
447
  'tax_query' => array(
448
+ array(
449
+ 'taxonomy' => $term->taxonomy,
450
+ 'field' => 'slug',
451
+ 'terms' => $term->slug
452
+ )
453
  )
454
  )
455
+ );
 
456
  $this->termmodified[$term->term_id] = isset($posts[0]->post_date_gmt) ? $posts[0]->post_date_gmt : '';
457
  }
458
  return $this->termmodified[$term->term_id];
461
  return get_lastdate( 'gmt', $obj->object_type );
462
  // uses get_lastdate() function defined in xml-sitemap/hacks.php !
463
  // which is a shortcut: returns last post date, not last modified date...
464
+ // TODO find the long way home: take tax type, get all terms,
465
+ // do tax_query with all terms for one post and get its lastmod date
466
+ // ... or can 'terms' in tax_query be empty?
467
  }
468
 
469
  else :
470
 
471
+ return '';
472
 
473
  endif;
474
  }
481
  $options = $this->get_option('news_tags');
482
  $which = isset($options['image']) ? $options['image'] : '';
483
  } else {
484
+ $options = $this->get_post_types();
485
  $which = isset($options[$post->post_type]['tags']['image']) ? $options[$post->post_type]['tags']['image'] : '';
486
  }
487
  if('attached' == $which) {
515
  public function get_lastmod($sitemap = 'post_type', $term = '')
516
  {
517
  $return = trim(mysql2date('Y-m-d\TH:i:s+00:00', $this->modified($sitemap,$term), false));
518
+ return !empty($return) ? "\t<lastmod>".$return."</lastmod>\r\n\t" : '';
519
  }
520
 
521
  public function get_changefreq($sitemap = 'post_type', $term = '')
525
  if (empty($modified))
526
  return 'weekly';
527
 
528
+ $lastactivityage = ( gmdate('U') - mysql2date( 'U', $modified, false ) ); // post age
529
 
530
  if ( ($lastactivityage/86400) < 1 ) { // last activity less than 1 day old
531
  $changefreq = 'hourly';
546
  {
547
  if ( 'post_type' == $sitemap ) :
548
  global $post;
549
+ $options = $this->get_post_types();
550
  $defaults = $this->defaults('post_types');
551
  $priority_meta = get_metadata('post', $post->ID, '_xmlsf_priority' , true);
552
 
553
  if ( !empty($priority_meta) || $priority_meta == '0' ) {
554
 
555
+ $priority = floatval(str_replace(",",".",$priority_meta));
556
 
557
  } elseif ( !empty($options[$post->post_type]['dynamic_priority']) ) {
558
 
559
+ $post_modified = mysql2date('U',$post->post_modified_gmt, false);
560
 
561
  if ( empty($this->lastmodified) )
562
+ $this->lastmodified = mysql2date('U',get_lastmodified('GMT',$post->post_type),false);
563
  // last posts or page modified date in Unix seconds
564
  // uses get_lastmodified() function defined in xml-sitemap/hacks.php !
565
 
566
  if ( empty($this->firstdate) )
567
+ $this->firstdate = mysql2date('U',get_firstdate('GMT',$post->post_type),false);
568
  // uses get_firstdate() function defined in xml-sitemap/hacks.php !
569
 
570
  if ( isset($options[$post->post_type]['priority']) )
571
+ $priority_value = floatval(str_replace(",",".",$options[$post->post_type]['priority']));
572
  else
573
+ $priority_value = floatval($defaults[$post->post_type]['priority']);
574
 
575
  // reduce by age
576
  // NOTE : home/blog page gets same treatment as sticky post
582
  if ( $post->comment_count > 0 )
583
  $priority = $priority + 0.1 + ( 0.9 - $priority ) * $post->comment_count / wp_count_comments($post->post_type)->approved;
584
 
 
 
 
 
585
  } else {
586
 
587
  $priority = ( isset($options[$post->post_type]['priority']) && is_numeric($options[$post->post_type]['priority']) ) ? $options[$post->post_type]['priority'] : $defaults[$post->post_type]['priority'];
609
 
610
  endif;
611
 
612
+ // make sure we're not below zero
613
+ if ($priority < 0)
614
+ $priority = 0;
615
+
616
+ // and a final trim for cases where we ended up above 1 (sticky posts with many comments)
617
+ if ($priority > 1)
618
+ $priority = 1;
619
+
620
  return number_format($priority,1);
621
  }
622
 
664
  }
665
  }
666
  }
667
+
668
  return apply_filters( 'xmlsf_allowed_domain', $return );
669
  }
670
 
712
  // add robots.txt rules
713
  public function robots_txt($output)
714
  {
715
+ return $output . $this->get_option('robots') . "\n\n";
716
  }
717
 
718
  /**
797
  }
798
 
799
  if ( $request['feed'] == 'sitemap-news' ) {
800
+ $defaults = $this->defaults('news_tags');
801
+ $options = $this->get_option('news_tags');
802
+ $news_post_type = isset($options['post_type']) && !empty($options['post_type']) ? $options['post_type'] : $defaults['post_type'];
803
+ if (empty($news_post_type)) $news_post_type = 'post';
804
+
805
  // disable caching
806
+ define('DONOTCACHEPAGE', true);
807
+ define('DONOTCACHEDB', true);
808
 
809
+ // setup template
810
  add_action('do_feed_sitemap-news', array($this, 'load_template_news'), 10, 1);
 
 
811
 
812
+ // set up query filters
813
+ // TODO: test 'gmt' against 'blog' against 'server'
 
814
 
815
+ if ( function_exists('date_default_timezone_set') ) {
816
+ date_default_timezone_set ( 'UTC' );
817
+ $zone = 'gmt';
818
+ } else {
819
+ $zone = 'blog';
820
+ }
821
+ if ( get_lastdate($zone, $news_post_type) > date('Y-m-d H:i:s', strtotime('-48 hours')) ) {
822
+ add_filter('post_limits', array($this, 'filter_news_limits'));
823
+ add_filter('posts_where', array($this, 'filter_news_where'), 10, 1);
824
+ } else {
825
+ add_filter('post_limits', array($this, 'filter_no_news_limits'));
826
+ }
827
+
828
+ /* modify request parameters */
829
+ // post type
830
+ $request['post_type'] = $news_post_type;
831
+
832
+ // categories
833
+ if ( isset($options['categories']) && is_array($options['categories']) )
834
+ $request['cat'] = implode(',',$options['categories']);
835
 
836
+ $request['post_status'] = 'publish';
837
  $request['no_found_rows'] = true;
 
 
838
 
839
  return $request;
840
  }
861
  $request['no_found_rows'] = true;
862
  $request['update_post_meta_cache'] = false;
863
  $request['update_post_term_cache'] = false;
 
 
 
 
864
 
865
  return $request;
866
  }
877
  $request['taxonomy'] = $taxonomy;
878
  $request['lang'] = '';
879
  $request['no_found_rows'] = true;
880
+ $request['cache_results'] = false;
881
  $request['update_post_term_cache'] = false;
882
+ $request['update_post_meta_cache'] = false;
883
  $request['post_status'] = 'publish';
884
 
885
  return $request;
960
  {
961
  return 'LIMIT 0, 1000';
962
  }
963
+ public function filter_no_news_limits( $limits )
964
+ {
965
+ return 'LIMIT 0, 1';
966
+ }
967
 
968
  // Create a new filtering function that will add a where clause to the query,
969
  // used for the Google News Sitemap
970
  public function filter_news_where( $where = '' )
971
  {
972
+ // only posts from the last 48 hours
973
+ if ( function_exists('date_default_timezone_set') ) {
974
+ date_default_timezone_set ( 'UTC' );
975
+ return $where . " AND post_date_gmt > '" . date('Y-m-d H:i:s', strtotime('-48 hours')) . "'";
976
+ } else {
977
+ return $where . " AND post_date > '" . date('Y-m-d H:i:s', strtotime('-48 hours')) . "'";
978
+ }
979
  }
980
 
981
 
1000
 
1001
  public function do_pings($new_status, $old_status, $post)
1002
  {
1003
+ $sitemaps = $this->get_sitemaps();
1004
+ $to_ping = $this->get_ping();
1005
+ $update = false;
1006
+
1007
+ // first check if news sitemap is set
1008
+ if ( !empty($sitemaps['sitemap-news']) ) {
1009
+ // then check if we've got a post type that is included in our news sitemap
1010
+ $news_tags = $this->get_option('news_tags');
1011
+ if ( !empty($news_tags['post_type']) && is_array($news_tags['post_type']) && in_array($post->post_type,$news_tags['post_type']) ) {
1012
+ // are we publishing?
1013
+ if ( $old_status != 'publish' && $new_status == 'publish' ) {
1014
+ // loop through ping targets
1015
+ foreach ($to_ping as $se => $data) {
1016
+ // check active switch
1017
+ if( empty($data['active']) || empty($data['news']) )
1018
+ continue;
1019
+ // and if we did not ping already within the last 5 minutes
1020
+ if( !empty($data['pong']) && is_array($data['pong']) && !empty($data['pong'][$sitemaps['sitemap-news']]) && (int)$data['pong'][$sitemaps['sitemap-news']] + 300 > time() )
1021
+ continue;
1022
+ // ping !
1023
+ if ( $this->ping( $data['uri'].urlencode(trailingslashit(get_bloginfo('url')) . $sitemaps['sitemap-news']) ) ) {
1024
+ $to_ping[$se]['pong'][$sitemaps['sitemap-news']] = time();
1025
+ $update = true;
1026
  }
1027
+
1028
+ }
1029
+ }
1030
+ }
1031
  }
1032
+
1033
+ // first check if regular sitemap is set
1034
+ if ( !empty($sitemaps['sitemap']) ) {
1035
+ // then check if we've got a post type that is included in our sitemap
1036
+ foreach($this->get_post_types() as $post_type) {
1037
+ if ( !empty($post_type) && is_array($post_type) && in_array($post->post_type,$post_type) ) {
1038
+ // are we publishing?
1039
+ if ( $old_status != 'publish' && $new_status == 'publish' ) {
1040
+ foreach ($to_ping as $se => $data) {
1041
+ // check active switch
1042
+ if( empty($data['active']) || empty($data['type']) || $data['type']!='GET' )
1043
+ continue;
1044
+ // and if we did not ping already within the last hour
1045
+ if( !empty($data['pong']) && is_array($data['pong']) && !empty($data['pong'][$sitemaps['sitemap']]) && (int)$data['pong'][$sitemaps['sitemap']] + 3600 > time() )
1046
+ continue;
1047
+ // ping !
1048
+ if ( $this->ping( $data['uri'].urlencode(trailingslashit(get_bloginfo('url')) . $sitemaps['sitemap']) ) ) {
1049
+ $to_ping[$se]['pong'][$sitemaps['sitemap']] = time();
1050
+ $update = true;
1051
+ }
1052
+ }
1053
+ }
1054
+ }
1055
+ }
1056
  }
1057
+
1058
+ if ( $update ) update_option($this->prefix.'ping',$to_ping);
1059
  }
1060
 
1061
  /**
1062
+ * CLEAR ALL SETTINGS
1063
  */
1064
 
1065
  public function clear_settings()
1078
  }
1079
  $terms = get_terms('gn-location-1',array('hide_empty' => false));
1080
  foreach ( $terms as $term ) {
1081
+ wp_delete_term( $term->term_id, 'gn-location-1' );
1082
  }
1083
  $terms = get_terms('gn-location-2',array('hide_empty' => false));
1084
  foreach ( $terms as $term ) {
1085
+ wp_delete_term( $term->term_id, 'gn-location-2' );
1086
  }
1087
  $terms = get_terms('gn-location-3',array('hide_empty' => false));
1088
  foreach ( $terms as $term ) {
1089
+ wp_delete_term( $term->term_id, 'gn-location-3' );
1090
  }
1091
 
1092
+ error_log('XML Sitemap Feeds settings cleared');
1093
+ }
1094
+
1095
+ function cache_flush()
1096
+ {
1097
+ // make this optional?
1098
+ wp_cache_flush();
1099
  }
1100
 
1101
  /**
1102
  * INITIALISATION
1103
  */
1104
 
1105
+ public function upgrade($version)
1106
  {
1107
+ if ( version_compare(XMLSF_VERSION, $version, '>') ) {
 
 
 
 
 
1108
  // rewrite rules not available on plugins_loaded
1109
  // and don't flush rules from init as Polylang chokes on that
1110
+ // just remove the db option and let WP regenerate them when ready...
1111
  delete_option('rewrite_rules');
1112
+ // ... but make sure rules are regenerated when admin is visited.
1113
+ set_transient('xmlsf_flush_rewrite_rules','');
1114
+
1115
+ // remove robots.txt rule blocking stylesheets, but only one time!
1116
+ if ( version_compare('4.4', $version, '>') && $robot_rules = get_option($this->prefix.'robots')) {
1117
+ $robot_rules = str_replace(array("Disallow: */wp-content/","Allow: */wp-content/uploads/"),"",$robot_rules);
1118
+ delete_option($this->prefix.'robots');
1119
+ add_option($this->prefix.'robots', $robot_rules, '', 'no');
1120
+ }
1121
+
1122
+ // upgrade pings
1123
+ if ( $pong = get_option( $this->prefix.'pong' ) && is_array($pong) ) {
1124
+ $ping = $this->get_ping();
1125
+ foreach ( $pong as $se => $arr) {
1126
+ if ( is_array( $arr ) ) {
1127
+ // convert formatted time to unix time
1128
+ foreach ( $arr as $pretty => $date ) {
1129
+ $time = strtotime($date);
1130
+ $arr[$pretty] = (int)$time < time() ? $time : '';
1131
+ }
1132
+ // and set array
1133
+ $ping[$se]['pong'] = $arr;
1134
+ }
1135
+ }
1136
+ delete_option( $this->prefix.'pong' );
1137
+ delete_option( $this->prefix.'ping' );
1138
+ add_option( $this->prefix.'ping', array_merge( $this->defaults('ping'), $ping ), '', 'no' );
1139
+ }
1140
 
1141
+ delete_option('xmlsf_version');
1142
+ add_option($this->prefix.'version', XMLSF_VERSION, '', 'no');
 
 
 
 
1143
 
1144
+ error_log('XML Sitemap Feeds upgraded from '.$version.' to '.XMLSF_VERSION);
1145
  }
1146
+
1147
+ }
1148
+
1149
+ public function plugins_loaded()
1150
+ {
1151
+ // TEXT DOMAIN
1152
+ if ( is_admin() ) // text domain needed on admin only
1153
+ load_plugin_textdomain('xml-sitemap-feed', false, dirname(dirname(plugin_basename( __FILE__ ))) . '/languages' );
1154
+
1155
+ // UPGRADE
1156
+ $this->upgrade( get_option('xmlsf_version', 0) );
1157
 
1158
  }
1159
 
1160
  private function flush_rules($hard = false)
1161
  {
1162
+ // did you flush already?
1163
+ if ($this->yes_mother)
1164
  return; // yes, mother!
1165
 
1166
  global $wp_rewrite;
1168
  $wp_rewrite->flush_rules($hard);
1169
 
1170
  $this->yes_mother = true;
1171
+ error_log('XML Sitemap Feeds rewrite rules flushed');
1172
  }
1173
 
1174
  public function register_gn_taxonomies()
1175
  {
1176
+ $defaults = $this->defaults('news_tags');
1177
+ $options = $this->get_option('news_tags');
1178
+
1179
+ $post_types = !empty($options['post_type']) ? $options['post_type'] : $defaults['post_type'];
1180
+ if ($post_types=='any')
1181
+ $post_types = get_post_types(array('public'=>true));
1182
+
1183
+ register_taxonomy( 'gn-genre', $post_types, array(
1184
+ 'hierarchical' => true,
1185
+ 'labels' => array(
1186
+ 'name' => __('Google News Genres','xml-sitemap-feed'),
1187
+ 'singular_name' => __('Google News Genre','xml-sitemap-feed'),
1188
+ //'menu_name' => __('GN Genres','xml-sitemap-feed'),
1189
+ ),
1190
+ 'public' => false,
1191
+ 'show_ui' => true,
1192
+ 'show_tagcloud' => false,
1193
+ 'query_var' => false,
1194
+ 'capabilities' => array( // prevent creation / deletion
1195
+ 'manage_terms' => 'nobody',
1196
+ 'edit_terms' => 'nobody',
1197
+ 'delete_terms' => 'nobody',
1198
+ 'assign_terms' => 'edit_posts'
1199
+ )
1200
+ ));
1201
+
1202
+ register_taxonomy( 'gn-location-3', $post_types, array(
1203
+ 'hierarchical' => false,
1204
+ 'labels' => array(
1205
+ 'name' => __('Google News Country','xml-sitemap-feed'),
1206
+ //'menu_name' => __('GN Genres','xml-sitemap-feed'),
1207
+ 'separate_items_with_commas' => __('Only one allowed. Must be consistent with other Google News location entities (if set).','xml-sitemap-feed'),
1208
+ ),
1209
+ 'public' => false,
1210
+ 'show_ui' => true,
1211
+ 'show_tagcloud' => false,
1212
+ 'query_var' => false,
1213
+ 'capabilities' => array( // prevent creation / deletion
1214
+ 'manage_terms' => 'nobody',
1215
+ 'edit_terms' => 'nobody',
1216
+ 'delete_terms' => 'nobody',
1217
+ 'assign_terms' => 'edit_posts'
1218
+ )
1219
+ ));
1220
+
1221
+ register_taxonomy( 'gn-location-2', $post_types, array(
1222
+ 'hierarchical' => false,
1223
+ 'labels' => array(
1224
+ 'name' => __('Google News State/Province','xml-sitemap-feed'),
1225
+ //'menu_name' => __('GN Genres','xml-sitemap-feed'),
1226
+ 'separate_items_with_commas' => __('Only one allowed. Must be consistent with other Google News location entities (if set).','xml-sitemap-feed'),
1227
+ ),
1228
+ 'public' => false,
1229
+ 'show_ui' => true,
1230
+ 'show_tagcloud' => false,
1231
+ 'query_var' => false,
1232
+ 'capabilities' => array( // prevent creation / deletion
1233
+ 'manage_terms' => 'nobody',
1234
+ 'edit_terms' => 'nobody',
1235
+ 'delete_terms' => 'nobody',
1236
+ 'assign_terms' => 'edit_posts'
1237
+ )
1238
+ ));
1239
+
1240
+ register_taxonomy( 'gn-location-1', $post_types, array(
1241
+ 'hierarchical' => false,
1242
+ 'labels' => array(
1243
+ 'name' => __('Google News City','xml-sitemap-feed'),
1244
+ //'menu_name' => __('GN Genres','xml-sitemap-feed'),
1245
+ 'separate_items_with_commas' => __('Only one allowed. Must be consistent with other Google News location entities (if set).','xml-sitemap-feed'),
1246
+ ),
1247
+ 'public' => false,
1248
+ 'show_ui' => true,
1249
+ 'show_tagcloud' => false,
1250
+ 'query_var' => false,
1251
+ 'capabilities' => array( // prevent creation / deletion
1252
+ 'manage_terms' => 'nobody',
1253
+ 'edit_terms' => 'nobody',
1254
+ 'delete_terms' => 'nobody',
1255
+ 'assign_terms' => 'edit_posts'
1256
+ )
1257
+ ));
1258
 
1259
  }
1260
 
1322
  // REQUEST main filtering function
1323
  add_filter('request', array($this, 'filter_request'), 1 );
1324
 
1325
+ // TEXT DOMAIN, UPGRADE PROCESS ...
1326
  add_action('plugins_loaded', array($this,'plugins_loaded'), 11 );
1327
 
1328
  // REWRITES
1332
  // TAXONOMY
1333
  add_action('init', array($this,'register_news_taxonomy'), 0 );
1334
 
1335
+ // REGISTER SETTINGS, SETTINGS FIELDS...
1336
  add_action('admin_init', array($this,'admin_init'));
1337
 
1338
  // ROBOTSTXT
1342
  // PINGING
1343
  add_action('transition_post_status', array($this, 'do_pings'), 10, 3);
1344
 
1345
+ // CLEAR OBJECT CACHE
1346
+ add_action('transition_post_status', array($this, 'cache_flush'), 99);
1347
+
1348
+ // ACTIVATION
1349
+ // activation currently same as upgrade routine based on db version check
1350
+ //register_activation_hook( XMLSF_PLUGIN_BASENAME, array($this, 'activate') );
1351
+
1352
  // DE-ACTIVATION
1353
+ register_deactivation_hook( XMLSF_PLUGIN_BASENAME, array($this, 'flush_rules') );
1354
+
1355
  }
 
1356
  }
includes/feed-sitemap-custom.php CHANGED
@@ -7,9 +7,10 @@
7
 
8
  status_header('200'); // force header('HTTP/1.1 200 OK') even for sites without posts
9
  header('Content-Type: text/xml; charset=' . get_bloginfo('charset'), true);
 
10
 
11
  echo '<?xml version="1.0" encoding="' . get_bloginfo('charset') . '"?>
12
- <?xml-stylesheet type="text/xsl" href="' . plugins_url('xsl/sitemap.xsl.php',__FILE__) . '?ver=' . XMLSF_VERSION . '"?>
13
  <!-- generated-on="' . date('Y-m-d\TH:i:s+00:00') . '" -->
14
  <!-- generator="XML & Google News Sitemap Feed plugin for WordPress" -->
15
  <!-- generator-url="http://status301.net/wordpress-plugins/xml-sitemap-feed/" -->
@@ -25,9 +26,7 @@ global $xmlsf;
25
  $urls = $xmlsf->get_urls();
26
 
27
  // and loop away!
28
- if ( !empty($urls) ) :
29
- foreach ( $urls as $url ) {
30
-
31
  if (empty($url[0]))
32
  continue;
33
 
@@ -43,8 +42,6 @@ if ( !empty($urls) ) :
43
  <!-- URL <?php echo esc_url( $url[0] ); ?> skipped: Not within allowed domains. -->
44
  <?php
45
  }
46
-
47
- }
48
- endif;
49
  ?></urlset>
50
- <?php $xmlsf->_e_usage(); ?>
7
 
8
  status_header('200'); // force header('HTTP/1.1 200 OK') even for sites without posts
9
  header('Content-Type: text/xml; charset=' . get_bloginfo('charset'), true);
10
+ header('X-Robots-Tag: noindex, follow', true);
11
 
12
  echo '<?xml version="1.0" encoding="' . get_bloginfo('charset') . '"?>
13
+ <?xml-stylesheet type="text/xsl" href="' . XMLSF_PLUGIN_URL . '/includes/xsl/sitemap.xsl?ver=' . XMLSF_VERSION . '"?>
14
  <!-- generated-on="' . date('Y-m-d\TH:i:s+00:00') . '" -->
15
  <!-- generator="XML & Google News Sitemap Feed plugin for WordPress" -->
16
  <!-- generator-url="http://status301.net/wordpress-plugins/xml-sitemap-feed/" -->
26
  $urls = $xmlsf->get_urls();
27
 
28
  // and loop away!
29
+ foreach ( $urls as $url ) {
 
 
30
  if (empty($url[0]))
31
  continue;
32
 
42
  <!-- URL <?php echo esc_url( $url[0] ); ?> skipped: Not within allowed domains. -->
43
  <?php
44
  }
45
+ }
 
 
46
  ?></urlset>
47
+ <?php $xmlsf->_e_usage();
includes/feed-sitemap-home.php CHANGED
@@ -7,9 +7,10 @@
7
 
8
  status_header('200'); // force header('HTTP/1.1 200 OK') even for sites without posts
9
  header('Content-Type: text/xml; charset=' . get_bloginfo('charset'), true);
 
10
 
11
  echo '<?xml version="1.0" encoding="' . get_bloginfo('charset') . '"?>
12
- <?xml-stylesheet type="text/xsl" href="' . plugins_url('xsl/sitemap.xsl.php',__FILE__) . '?ver=' . XMLSF_VERSION . '"?>
13
  <!-- generated-on="' . date('Y-m-d\TH:i:s+00:00') . '" -->
14
  <!-- generator="XML & Google News Sitemap Feed plugin for WordPress" -->
15
  <!-- generator-url="http://status301.net/wordpress-plugins/xml-sitemap-feed/" -->
@@ -43,4 +44,4 @@ foreach ( $xmlsf->get_home_urls() as $url ) {
43
  }
44
  ?>
45
  </urlset>
46
- <?php $xmlsf->_e_usage(); ?>
7
 
8
  status_header('200'); // force header('HTTP/1.1 200 OK') even for sites without posts
9
  header('Content-Type: text/xml; charset=' . get_bloginfo('charset'), true);
10
+ header('X-Robots-Tag: noindex, follow', true);
11
 
12
  echo '<?xml version="1.0" encoding="' . get_bloginfo('charset') . '"?>
13
+ <?xml-stylesheet type="text/xsl" href="' . XMLSF_PLUGIN_URL . '/includes/xsl/sitemap.xsl?ver=' . XMLSF_VERSION . '"?>
14
  <!-- generated-on="' . date('Y-m-d\TH:i:s+00:00') . '" -->
15
  <!-- generator="XML & Google News Sitemap Feed plugin for WordPress" -->
16
  <!-- generator-url="http://status301.net/wordpress-plugins/xml-sitemap-feed/" -->
44
  }
45
  ?>
46
  </urlset>
47
+ <?php $xmlsf->_e_usage();
includes/feed-sitemap-news.php CHANGED
@@ -10,9 +10,10 @@ $options = $xmlsf->get_option('news_tags');
10
 
11
  status_header('200'); // force header('HTTP/1.1 200 OK') for sites without posts
12
  header('Content-Type: text/xml; charset=' . get_bloginfo('charset'), true);
 
13
 
14
  echo '<?xml version="1.0" encoding="'.get_bloginfo('charset').'"?>
15
- <?xml-stylesheet type="text/xsl" href="' . plugins_url('xsl/sitemap-news.xsl.php',__FILE__) . '?ver=' . XMLSF_VERSION . '"?>
16
  <!-- generated-on="'.date('Y-m-d\TH:i:s+00:00').'" -->
17
  <!-- generator="XML & Google News Sitemap Feed plugin for WordPress" -->
18
  <!-- generator-url="http://status301.net/wordpress-plugins/xml-sitemap-feed/" -->
@@ -38,9 +39,8 @@ echo '">
38
  // bloginfo_rss('language') returns improper format so
39
  // we explode on hyphen and use only first part.
40
  // TODO this workaround breaks (simplified) chinese :(
41
- $language = reset(explode('-', convert_chars(strip_tags(get_bloginfo('language'))) ));
42
- if ( empty($language) )
43
- $language = 'en';
44
 
45
  // loop away!
46
  if ( have_posts() ) :
@@ -66,8 +66,13 @@ if ( have_posts() ) :
66
  else
67
  echo apply_filters( 'the_title_xmlsitemap', get_bloginfo('name') ); ?></news:name>
68
  <news:language><?php
69
- $lang = reset(get_the_terms($post->ID,'language'));
70
- echo (is_object($lang)) ? $lang->slug : $language; ?></news:language>
 
 
 
 
 
71
  </news:publication>
72
  <news:publication_date><?php
73
  echo mysql2date('Y-m-d\TH:i:s+00:00', $post->post_date_gmt, false); ?></news:publication_date>
@@ -154,7 +159,7 @@ if ( have_posts() ) :
154
  foreach ($locs as $tax) {
155
  $terms = get_the_terms($post->ID,$tax);
156
  if ( is_array($terms) ) {
157
- $obj = array_shift($terms);
158
  $term = is_object($obj) ? trim($obj->name) : '';
159
  if ( !empty($term) ) {
160
  $locations .= $sep . $term;
@@ -184,14 +189,19 @@ if ( have_posts() ) :
184
  continue;
185
  ?>
186
  <image:image>
187
- <image:loc><?php echo $image['loc']; ?></image:loc>
188
  <?php
189
- if ( !empty($image['title']) )
190
- echo "\t\t\t<image:title>{$image['title']}</image:title>\n";
191
-
192
- if ( !empty($image['caption']) )
193
- echo "\t\t\t<image:caption>{$image['caption']}</image:caption>\n";
194
- ?>
 
 
 
 
 
195
  </image:image>
196
  <?php
197
  }
@@ -201,17 +211,17 @@ if ( have_posts() ) :
201
  <?php
202
  endwhile;
203
  else :
204
- // TODO replace link to home with the last post even if it's older than 2 days?
205
 
206
  $lastmodified_gmt = get_lastmodified('GMT'); // last posts or page modified date
207
  ?>
208
  <url>
209
  <loc><?php
210
  // hook for filter 'xml_sitemap_url' provides a string here and MUST get a string returned
211
- $url = apply_filters( 'xml_sitemap_url', trailingslashit(home_url()) );
212
- if ( is_string($url) )
213
- echo esc_url( $url );
214
- else
215
  echo esc_url( trailingslashit(home_url()) ); ?></loc>
216
  <lastmod><?php echo mysql2date('Y-m-d\TH:i:s+00:00', $lastmodified_gmt, false); ?></lastmod>
217
  <changefreq>daily</changefreq>
@@ -221,4 +231,4 @@ else :
221
  endif;
222
 
223
  ?></urlset>
224
- <?php $xmlsf->_e_usage(); ?>
10
 
11
  status_header('200'); // force header('HTTP/1.1 200 OK') for sites without posts
12
  header('Content-Type: text/xml; charset=' . get_bloginfo('charset'), true);
13
+ header('X-Robots-Tag: noindex, follow', true);
14
 
15
  echo '<?xml version="1.0" encoding="'.get_bloginfo('charset').'"?>
16
+ <?xml-stylesheet type="text/xsl" href="' . XMLSF_PLUGIN_URL . '/includes/xsl/sitemap-news.xsl?ver=' . XMLSF_VERSION . '"?>
17
  <!-- generated-on="'.date('Y-m-d\TH:i:s+00:00').'" -->
18
  <!-- generator="XML & Google News Sitemap Feed plugin for WordPress" -->
19
  <!-- generator-url="http://status301.net/wordpress-plugins/xml-sitemap-feed/" -->
39
  // bloginfo_rss('language') returns improper format so
40
  // we explode on hyphen and use only first part.
41
  // TODO this workaround breaks (simplified) chinese :(
42
+ $language = explode('-', convert_chars(strip_tags(get_bloginfo('language'))));
43
+ $language = empty($language) ? 'en' : reset($language);
 
44
 
45
  // loop away!
46
  if ( have_posts() ) :
66
  else
67
  echo apply_filters( 'the_title_xmlsitemap', get_bloginfo('name') ); ?></news:name>
68
  <news:language><?php
69
+ $lang = get_the_terms($post->ID,'language');
70
+ if ( is_array($lang) ) {
71
+ $lang = reset($lang);
72
+ echo is_object($lang) ? $lang->slug : $language;
73
+ } else {
74
+ echo $language;
75
+ } ?></news:language>
76
  </news:publication>
77
  <news:publication_date><?php
78
  echo mysql2date('Y-m-d\TH:i:s+00:00', $post->post_date_gmt, false); ?></news:publication_date>
159
  foreach ($locs as $tax) {
160
  $terms = get_the_terms($post->ID,$tax);
161
  if ( is_array($terms) ) {
162
+ $obj = reset($terms);
163
  $term = is_object($obj) ? trim($obj->name) : '';
164
  if ( !empty($term) ) {
165
  $locations .= $sep . $term;
189
  continue;
190
  ?>
191
  <image:image>
192
+ <image:loc><?php echo utf8_uri_encode( $image['loc'] ); ?></image:loc>
193
  <?php
194
+ if ( !empty($image['title']) ) {
195
+ ?>
196
+ <image:title><![CDATA[<?php echo str_replace(']]>', ']]&gt;', $image['title']); ?>]]></image:title>
197
+ <?php
198
+ }
199
+ if ( !empty($image['caption']) ) {
200
+ ?>
201
+ <image:caption><![CDATA[<?php echo str_replace(']]>', ']]&gt;', $image['caption']); ?>]]></image:caption>
202
+ <?php
203
+ }
204
+ ?>
205
  </image:image>
206
  <?php
207
  }
211
  <?php
212
  endwhile;
213
  else :
214
+ // No posts? Then there is only the homepage...
215
 
216
  $lastmodified_gmt = get_lastmodified('GMT'); // last posts or page modified date
217
  ?>
218
  <url>
219
  <loc><?php
220
  // hook for filter 'xml_sitemap_url' provides a string here and MUST get a string returned
221
+ //$url = apply_filters( 'xml_sitemap_url', trailingslashit(home_url()) );
222
+ //if ( is_string($url) )
223
+ // echo esc_url( $url );
224
+ //else
225
  echo esc_url( trailingslashit(home_url()) ); ?></loc>
226
  <lastmod><?php echo mysql2date('Y-m-d\TH:i:s+00:00', $lastmodified_gmt, false); ?></lastmod>
227
  <changefreq>daily</changefreq>
231
  endif;
232
 
233
  ?></urlset>
234
+ <?php $xmlsf->_e_usage();
includes/feed-sitemap-post_type.php CHANGED
@@ -7,9 +7,10 @@
7
 
8
  status_header('200'); // force header('HTTP/1.1 200 OK') even for sites without posts
9
  header('Content-Type: text/xml; charset=' . get_bloginfo('charset'), true);
 
10
 
11
  echo '<?xml version="1.0" encoding="' . get_bloginfo('charset') . '"?>
12
- <?xml-stylesheet type="text/xsl" href="' . plugins_url('xsl/sitemap.xsl.php',__FILE__) . '?ver=' . XMLSF_VERSION . '"?>
13
  <!-- generated-on="' . date('Y-m-d\TH:i:s+00:00') . '" -->
14
  <!-- generator="XML & Google News Sitemap Feed plugin for WordPress" -->
15
  <!-- generator-url="http://status301.net/wordpress-plugins/xml-sitemap-feed/" -->
@@ -34,14 +35,6 @@ echo !empty($image) ? '
34
  echo '">
35
  ';
36
 
37
- // get site language for default language
38
- // bloginfo_rss('language') returns improper format so
39
- // we explode on hyphen and use only first part.
40
- // TODO this workaround breaks (simplified) chinese :(
41
- $language = reset(explode('-', convert_chars(strip_tags(get_bloginfo('language'))) ));
42
- if ( empty($language) )
43
- $language = 'en';
44
-
45
  // any ID's we need to exclude?
46
  $excluded = $xmlsf->get_excluded($post_type);
47
 
@@ -71,14 +64,19 @@ if ( have_posts() ) :
71
  continue;
72
  ?>
73
  <image:image>
74
- <image:loc><?php echo $image['loc']; ?></image:loc>
75
  <?php
76
- if ( !empty($image['title']) )
77
- echo "\t\t\t<image:title>{$image['title']}</image:title>\n";
78
-
79
- if ( !empty($image['caption']) )
80
- echo "\t\t\t<image:caption>{$image['caption']}</image:caption>\n";
81
- ?>
 
 
 
 
 
82
  </image:image>
83
  <?php
84
  }
@@ -89,4 +87,4 @@ if ( have_posts() ) :
89
  endwhile;
90
  endif;
91
  ?></urlset>
92
- <?php $xmlsf->_e_usage(); ?>
7
 
8
  status_header('200'); // force header('HTTP/1.1 200 OK') even for sites without posts
9
  header('Content-Type: text/xml; charset=' . get_bloginfo('charset'), true);
10
+ header('X-Robots-Tag: noindex, follow', true);
11
 
12
  echo '<?xml version="1.0" encoding="' . get_bloginfo('charset') . '"?>
13
+ <?xml-stylesheet type="text/xsl" href="' . XMLSF_PLUGIN_URL . '/includes/xsl/sitemap.xsl?ver=' . XMLSF_VERSION . '"?>
14
  <!-- generated-on="' . date('Y-m-d\TH:i:s+00:00') . '" -->
15
  <!-- generator="XML & Google News Sitemap Feed plugin for WordPress" -->
16
  <!-- generator-url="http://status301.net/wordpress-plugins/xml-sitemap-feed/" -->
35
  echo '">
36
  ';
37
 
 
 
 
 
 
 
 
 
38
  // any ID's we need to exclude?
39
  $excluded = $xmlsf->get_excluded($post_type);
40
 
64
  continue;
65
  ?>
66
  <image:image>
67
+ <image:loc><?php echo utf8_uri_encode( $image['loc'] ); ?></image:loc>
68
  <?php
69
+ if ( !empty($image['title']) ) {
70
+ ?>
71
+ <image:title><![CDATA[<?php echo str_replace(']]>', ']]&gt;', $image['title']); ?>]]></image:title>
72
+ <?php
73
+ }
74
+ if ( !empty($image['caption']) ) {
75
+ ?>
76
+ <image:caption><![CDATA[<?php echo str_replace(']]>', ']]&gt;', $image['caption']); ?>]]></image:caption>
77
+ <?php
78
+ }
79
+ ?>
80
  </image:image>
81
  <?php
82
  }
87
  endwhile;
88
  endif;
89
  ?></urlset>
90
+ <?php $xmlsf->_e_usage();
includes/feed-sitemap-taxonomy.php CHANGED
@@ -7,9 +7,10 @@
7
 
8
  status_header('200'); // force header('HTTP/1.1 200 OK') for sites without posts
9
  header('Content-Type: text/xml; charset=' . get_bloginfo('charset', 'UTF-8'), true);
 
10
 
11
  echo '<?xml version="1.0" encoding="'.get_bloginfo('charset', 'UTF-8').'"?>
12
- <?xml-stylesheet type="text/xsl" href="' . plugins_url('xsl/sitemap.xsl.php',__FILE__) . '?ver=' . XMLSF_VERSION . '"?>
13
  <!-- generated-on="'.date('Y-m-d\TH:i:s+00:00').'" -->
14
  <!-- generator="XML & Google News Sitemap Feed plugin for WordPress" -->
15
  <!-- generator-url="http://status310.net/wordpress-plugins/xml-sitemap-feed/" -->
@@ -49,4 +50,4 @@ if ( $terms ) :
49
  endif;
50
 
51
  ?></urlset>
52
- <?php $xmlsf->_e_usage(); ?>
7
 
8
  status_header('200'); // force header('HTTP/1.1 200 OK') for sites without posts
9
  header('Content-Type: text/xml; charset=' . get_bloginfo('charset', 'UTF-8'), true);
10
+ header('X-Robots-Tag: noindex, follow', true);
11
 
12
  echo '<?xml version="1.0" encoding="'.get_bloginfo('charset', 'UTF-8').'"?>
13
+ <?xml-stylesheet type="text/xsl" href="' . XMLSF_PLUGIN_URL . '/includes/xsl/sitemap.xsl?ver=' . XMLSF_VERSION . '"?>
14
  <!-- generated-on="'.date('Y-m-d\TH:i:s+00:00').'" -->
15
  <!-- generator="XML & Google News Sitemap Feed plugin for WordPress" -->
16
  <!-- generator-url="http://status310.net/wordpress-plugins/xml-sitemap-feed/" -->
50
  endif;
51
 
52
  ?></urlset>
53
+ <?php $xmlsf->_e_usage();
includes/feed-sitemap.php CHANGED
@@ -7,8 +7,10 @@
7
 
8
  status_header('200'); // force header('HTTP/1.1 200 OK') for sites without posts
9
  header('Content-Type: text/xml; charset=' . get_bloginfo('charset'), true);
 
10
 
11
- echo '<?xml version="1.0" encoding="'.get_bloginfo('charset').'"?><?xml-stylesheet type="text/xsl" href="' . plugins_url('xsl/sitemap-index.xsl.php',__FILE__) . '?ver=' . XMLSF_VERSION . '"?>
 
12
  <!-- generated-on="'.date('Y-m-d\TH:i:s+00:00').'" -->
13
  <!-- generator="XML & Google News Sitemap Feed plugin for WordPress" -->
14
  <!-- generator-url="http://status301.net/wordpress-plugins/xml-sitemap-feed/" -->
@@ -50,8 +52,7 @@ foreach ( $xmlsf->get_taxonomies() as $taxonomy ) :
50
  ?>
51
  <sitemap>
52
  <loc><?php echo $xmlsf->get_index_url('taxonomy',$taxonomy); ?></loc>
53
- <?php echo $xmlsf->get_lastmod('taxonomy',$taxonomy); ?>
54
- </sitemap>
55
  <?php
56
  }
57
  endforeach;
@@ -65,5 +66,17 @@ if ( !empty($urls) ) :
65
  </sitemap>
66
  <?php
67
  endif;
 
 
 
 
 
 
 
 
 
 
 
 
68
  ?></sitemapindex>
69
- <?php $xmlsf->_e_usage(); ?>
7
 
8
  status_header('200'); // force header('HTTP/1.1 200 OK') for sites without posts
9
  header('Content-Type: text/xml; charset=' . get_bloginfo('charset'), true);
10
+ header('X-Robots-Tag: noindex, follow', true);
11
 
12
+ echo '<?xml version="1.0" encoding="'.get_bloginfo('charset').'"?>
13
+ <?xml-stylesheet type="text/xsl" href="' . XMLSF_PLUGIN_URL . '/includes/xsl/sitemap-index.xsl?ver=' . XMLSF_VERSION . '"?>
14
  <!-- generated-on="'.date('Y-m-d\TH:i:s+00:00').'" -->
15
  <!-- generator="XML & Google News Sitemap Feed plugin for WordPress" -->
16
  <!-- generator-url="http://status301.net/wordpress-plugins/xml-sitemap-feed/" -->
52
  ?>
53
  <sitemap>
54
  <loc><?php echo $xmlsf->get_index_url('taxonomy',$taxonomy); ?></loc>
55
+ <?php echo $xmlsf->get_lastmod('taxonomy',$taxonomy); ?></sitemap>
 
56
  <?php
57
  }
58
  endforeach;
66
  </sitemap>
67
  <?php
68
  endif;
69
+
70
+ // custom sitemaps
71
+ $custom_sitemaps = $xmlsf->get_custom_sitemaps();
72
+ foreach ($custom_sitemaps as $url) {
73
+ if (empty($url) || !$xmlsf->is_allowed_domain($url))
74
+ continue;
75
+ ?>
76
+ <sitemap>
77
+ <loc><?php echo esc_url($url); ?></loc>
78
+ </sitemap>
79
+ <?php
80
+ }
81
  ?></sitemapindex>
82
+ <?php $xmlsf->_e_usage();
includes/xsl/{sitemap-index.xsl.php → sitemap-index.xsl} RENAMED
@@ -1,12 +1,4 @@
1
- <?php
2
- /* ------------------------------------------
3
- XML News Sitemap Feed Styleheet Template
4
- ------------------------------------------ */
5
-
6
- header('Content-Type: text/xsl; charset=utf-8', true);
7
-
8
- echo '<?xml version="1.0" encoding="UTF-8"?>
9
- '; ?>
10
  <xsl:stylesheet version="2.0"
11
  xmlns:html="http://www.w3.org/TR/REC-html40"
12
  xmlns:sitemap="http://www.sitemaps.org/schemas/sitemap/0.9"
@@ -46,7 +38,7 @@ echo '<?xml version="1.0" encoding="UTF-8"?>
46
  </table>
47
  </div>
48
  <div id="footer">
49
- <p><img src="<?php echo 'http://' . $_SERVER['HTTP_HOST'] . dirname(dirname(dirname($_SERVER['SCRIPT_NAME']))); ?>/images/sitemapxml.gif" alt="XML Sitemap" title="XML Sitemap" /> generated by <a href="http://status301.net/wordpress-plugins/xml-sitemap-feed/" title="XML Sitemap Feed plugin for WordPress">XML &amp; Google News Sitemap Feed <?php echo (preg_match( '`^\d{1,2}\.\d{1,2}(\.\d{1,2})?$`' , $_GET['ver'] )) ? $_GET['ver'] : ''; ?></a> running on <a href="http://wordpress.org/">WordPress</a>.</p>
50
  </div>
51
  </body>
52
  </html>
1
+ <?xml version="1.0" encoding="UTF-8"?>
 
 
 
 
 
 
 
 
2
  <xsl:stylesheet version="2.0"
3
  xmlns:html="http://www.w3.org/TR/REC-html40"
4
  xmlns:sitemap="http://www.sitemaps.org/schemas/sitemap/0.9"
38
  </table>
39
  </div>
40
  <div id="footer">
41
+ <p><img src="data:image/gif;base64,R0lGODlhUAAPAJEAAGZmZv////9mAImOeSwAAAAAUAAPAAACoISPqcvtD0+YtNqLs968myCE4kiW5jkGw8q27gvDwYfWdq3G+i7T9w/M8Ya7GQAUoiSTEyYSKYA2nSKhdXUdCIlaXzRVDVdB0+dS2lJZ1bkt0Sgti6NysvM5jbq2ai2WywJHYrZUaEhIWJXm99foNiRI9XUoV4g4GJjJyEgBGAkEivIIyPUZeppCqorlheo6ulr00UFba3uLEaG7y9urUAAAOw%3D%3D" alt="XML Sitemap" title="XML Sitemap" /> generated by <a href="http://status301.net/wordpress-plugins/xml-sitemap-feed/" title="XML Sitemap Feed plugin for WordPress">XML Sitemap &amp; Google News Feeds</a> running on <a href="http://wordpress.org/">WordPress</a>.</p>
42
  </div>
43
  </body>
44
  </html>
includes/xsl/{sitemap-news.xsl.php → sitemap-news.xsl} RENAMED
@@ -1,11 +1,4 @@
1
- <?php
2
- /* ------------------------------------------
3
- XML News Sitemap Feed Styleheet Template
4
- ------------------------------------------ */
5
-
6
- header('Content-Type: text/xsl; charset=utf-8', true);
7
-
8
- echo '<?xml version="1.0" encoding="UTF-8"?>'; ?>
9
  <xsl:stylesheet version="2.0"
10
  xmlns:html="http://www.w3.org/TR/REC-html40"
11
  xmlns:sitemap="http://www.sitemaps.org/schemas/sitemap/0.9"
@@ -33,9 +26,9 @@ echo '<?xml version="1.0" encoding="UTF-8"?>'; ?>
33
  <th>Language</th>
34
  <th>Genre(s)</th>
35
  <th>Keyword(s)</th>
36
- <th># Images</th>
37
  <th>Location</th>
38
- <th>Publication Date</th>
39
  </tr>
40
  <xsl:variable name="lower" select="'abcdefghijklmnopqrstuvwxyz'"/>
41
  <xsl:variable name="upper" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ'"/>
@@ -50,13 +43,13 @@ echo '<?xml version="1.0" encoding="UTF-8"?>'; ?>
50
  <td><xsl:value-of select="news:news/news:keywords"/></td>
51
  <td><xsl:value-of select="count(image:image)"/></td>
52
  <td><xsl:value-of select="news:news/news:geo_locations"/></td>
53
- <td><xsl:value-of select="concat(substring(news:news/news:publication_date,0,11),concat(' ', substring(news:news/news:publication_date,12,5)))"/></td>
54
  </tr>
55
  </xsl:for-each>
56
  </table>
57
  </div>
58
  <div id="footer">
59
- <p><img src="<?php echo 'http://' . $_SERVER['HTTP_HOST'] . dirname(dirname(dirname($_SERVER['SCRIPT_NAME']))); ?>/images/sitemapxml.gif" alt="XML Sitemap" title="XML Sitemap" /> generated by <a href="http://status301.net/wordpress-plugins/xml-sitemap-feed/" title="XML Sitemap Feed plugin for WordPress">XML &amp; Google News Sitemap Feed <?php echo (preg_match( '`^\d{1,2}\.\d{1,2}(\.\d{1,2})?$`' , $_GET['ver'] )) ? $_GET['ver'] : ''; ?></a> running on <a href="http://wordpress.org/">WordPress</a>.</p>
60
  </div>
61
  </body>
62
  </html>
1
+ <?xml version="1.0" encoding="UTF-8"?>
 
 
 
 
 
 
 
2
  <xsl:stylesheet version="2.0"
3
  xmlns:html="http://www.w3.org/TR/REC-html40"
4
  xmlns:sitemap="http://www.sitemaps.org/schemas/sitemap/0.9"
26
  <th>Language</th>
27
  <th>Genre(s)</th>
28
  <th>Keyword(s)</th>
29
+ <th>Image(s)</th>
30
  <th>Location</th>
31
+ <th>Publication Date (GMT)</th>
32
  </tr>
33
  <xsl:variable name="lower" select="'abcdefghijklmnopqrstuvwxyz'"/>
34
  <xsl:variable name="upper" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ'"/>
43
  <td><xsl:value-of select="news:news/news:keywords"/></td>
44
  <td><xsl:value-of select="count(image:image)"/></td>
45
  <td><xsl:value-of select="news:news/news:geo_locations"/></td>
46
+ <td><xsl:value-of select="concat(substring(news:news/news:publication_date,0,11),concat(' ', substring(news:news/news:publication_date,12,8)))"/></td>
47
  </tr>
48
  </xsl:for-each>
49
  </table>
50
  </div>
51
  <div id="footer">
52
+ <p><img src="data:image/gif;base64,R0lGODlhUAAPAJEAAGZmZv////9mAImOeSwAAAAAUAAPAAACoISPqcvtD0+YtNqLs968myCE4kiW5jkGw8q27gvDwYfWdq3G+i7T9w/M8Ya7GQAUoiSTEyYSKYA2nSKhdXUdCIlaXzRVDVdB0+dS2lJZ1bkt0Sgti6NysvM5jbq2ai2WywJHYrZUaEhIWJXm99foNiRI9XUoV4g4GJjJyEgBGAkEivIIyPUZeppCqorlheo6ulr00UFba3uLEaG7y9urUAAAOw%3D%3D" alt="XML Sitemap" title="XML Sitemap" /> generated by <a href="http://status301.net/wordpress-plugins/xml-sitemap-feed/" title="XML Sitemap Feed plugin for WordPress">XML Sitemap &amp; Google News Feeds</a> running on <a href="http://wordpress.org/">WordPress</a>.</p>
53
  </div>
54
  </body>
55
  </html>
includes/xsl/{sitemap.xsl.php → sitemap.xsl} RENAMED
@@ -1,11 +1,4 @@
1
- <?php
2
- /* -------------------------------------
3
- XML Sitemap Feed Styleheet Template
4
- ------------------------------------- */
5
-
6
- header('Content-Type: text/xsl; charset=utf-8', true);
7
-
8
- echo '<?xml version="1.0" encoding="UTF-8"?>'; ?>
9
  <xsl:stylesheet version="2.0"
10
  xmlns:html="http://www.w3.org/TR/REC-html40"
11
  xmlns:sitemap="http://www.sitemaps.org/schemas/sitemap/0.9"
@@ -49,7 +42,7 @@ echo '<?xml version="1.0" encoding="UTF-8"?>'; ?>
49
  </table>
50
  </div>
51
  <div id="footer">
52
- <p><img src="<?php echo 'http://' . $_SERVER['HTTP_HOST'] . dirname(dirname(dirname($_SERVER['SCRIPT_NAME']))); ?>/images/sitemapxml.gif" alt="XML Sitemap" title="XML Sitemap" /> generated by <a href="http://status301.net/wordpress-plugins/xml-sitemap-feed/" title="XML Sitemap Feed plugin for WordPress">XML &amp; Google News Sitemap Feed <?php echo (preg_match( '`^\d{1,2}\.\d{1,2}(\.\d{1,2})?$`' , $_GET['ver'] )) ? $_GET['ver'] : ''; ?></a> running on <a href="http://wordpress.org/">WordPress</a>.</p>
53
  </div>
54
  </body>
55
  </html>
1
+ <?xml version="1.0" encoding="UTF-8"?>
 
 
 
 
 
 
 
2
  <xsl:stylesheet version="2.0"
3
  xmlns:html="http://www.w3.org/TR/REC-html40"
4
  xmlns:sitemap="http://www.sitemaps.org/schemas/sitemap/0.9"
42
  </table>
43
  </div>
44
  <div id="footer">
45
+ <p><img src="data:image/gif;base64,R0lGODlhUAAPAJEAAGZmZv////9mAImOeSwAAAAAUAAPAAACoISPqcvtD0+YtNqLs968myCE4kiW5jkGw8q27gvDwYfWdq3G+i7T9w/M8Ya7GQAUoiSTEyYSKYA2nSKhdXUdCIlaXzRVDVdB0+dS2lJZ1bkt0Sgti6NysvM5jbq2ai2WywJHYrZUaEhIWJXm99foNiRI9XUoV4g4GJjJyEgBGAkEivIIyPUZeppCqorlheo6ulr00UFba3uLEaG7y9urUAAAOw%3D%3D" alt="XML Sitemap" title="XML Sitemap" /> generated by <a href="http://status301.net/wordpress-plugins/xml-sitemap-feed/" title="XML Sitemap Feed plugin for WordPress">XML Sitemap &amp; Google News Feeds</a> running on <a href="http://wordpress.org/">WordPress</a>.</p>
46
  </div>
47
  </body>
48
  </html>
languages/xml-sitemap-feed-fr_FR.mo CHANGED
Binary file
languages/xml-sitemap-feed-fr_FR.po CHANGED
@@ -2,247 +2,581 @@ msgid ""
2
  msgstr ""
3
  "Project-Id-Version: XML Sitemap and Google News feeds/4.0\n"
4
  "Report-Msgid-Bugs-To: \n"
5
- "POT-Creation-Date: 2013-04-29 19:59+0100\n"
6
- "PO-Revision-Date: 2013-04-29 21:03+0100\n"
7
  "Last-Translator: RavanH <ravanhagen@gmail.com>\n"
8
  "Language-Team: \n"
9
- "Language: \n"
10
  "MIME-Version: 1.0\n"
11
  "Content-Type: text/plain; charset=UTF-8\n"
12
  "Content-Transfer-Encoding: 8bit\n"
13
  "X-Poedit-KeywordsList: __;_e;_n\n"
14
  "X-Poedit-SourceCharset: UTF-8\n"
15
- "X-Poedit-Language: French\n"
16
- "X-Poedit-Country: FRANCE\n"
17
 
18
- #: ../includes/admin.php:15
19
- #, php-format
20
- msgid "Donate to keep the free %s plugin development & support going!"
21
- msgstr "Faites un don pour aider le développement et support de l'extension %s. Merci !"
22
 
23
- #: ../includes/admin.php:15
24
- #: ../includes/admin.php:269
25
- msgid "XML Sitemap & Google News Feeds"
26
- msgstr "Flux XML Sitemap & Google News"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
27
 
28
- #: ../includes/admin.php:15
 
 
 
 
29
  #, php-format
30
- msgid "These settings control the XML Sitemaps generated by the %s plugin."
31
- msgstr "Ces options contrôlent le XML Sitemap par l'extension %s."
 
 
 
 
 
32
 
33
- #: ../includes/admin.php:16
34
  #, php-format
35
- msgid "XML Sitemaps will be disabled automatically when you check the option %1$s at %2$s above."
36
- msgstr "Les XML Sitemaps seront désactivés automatiquement si l'option %1$s sous %2$s en haut est activée."
37
 
38
- #: ../includes/admin.php:16
39
- msgid "Discourage search engines from indexing this site"
 
40
  msgstr ""
 
 
41
 
42
- #: ../includes/admin.php:16
43
- msgid "Search Engine Visibility"
 
 
44
  msgstr ""
 
 
45
 
46
- #: ../includes/admin.php:16
47
- #, php-format
48
- msgid "XML Sitemaps are disabled because you have checked the option %1$s at %2$s above."
49
- msgstr "Les XML Sitemaps sont désactivés parce-que l'option %1$s sous %2$s en haut est activée."
50
 
51
- #: ../includes/admin.php:40
52
- #: ../includes/admin.php:410
53
- msgid "XML Sitemaps"
54
- msgstr "XML Sitemaps"
55
 
56
- #: ../includes/admin.php:41
57
- msgid "Regular XML Sitemaps"
58
- msgstr "XML Sitemaps normaux"
 
 
59
 
60
- #: ../includes/admin.php:43
61
- #: ../includes/admin.php:48
62
- msgid "View"
 
63
  msgstr ""
 
 
64
 
65
- #: ../includes/admin.php:46
66
- #: ../includes/admin.php:173
67
- msgid "Google News Sitemap"
68
- msgstr "Google News Sitemap"
 
69
 
70
- #: ../includes/admin.php:58
71
- #: ../includes/admin.php:419
72
- msgid "Include post types"
73
- msgstr "Types d'articles à inclure"
74
 
75
- #: ../includes/admin.php:82
76
- #: ../includes/admin.php:327
77
- #: ../includes/admin.php:369
78
- msgid "Settings"
79
  msgstr ""
80
 
81
- #: ../includes/admin.php:97
 
 
 
 
82
  msgid "Year"
83
  msgstr "Année"
84
 
85
- #: ../includes/admin.php:98
86
  msgid "Month"
87
  msgstr "Mois"
88
 
89
- #: ../includes/admin.php:102
90
  msgid "Split by"
91
- msgstr "Trier par"
92
 
93
- #: ../includes/admin.php:105
94
- #: ../includes/admin.php:140
95
- msgid "None"
 
96
  msgstr ""
 
 
97
 
98
- #: ../includes/admin.php:112
99
- msgid "Split by year if you experience errors or slow sitemaps. In very rare cases, split by month is needed."
100
- msgstr "Trie par an si tu vois des erreurs ou des sitemaps très lentes. Aux très rares cas, un trie par mois est nécessaire."
101
-
102
- #: ../includes/admin.php:117
103
- #: ../includes/admin.php:365
104
  msgid "Priority"
105
  msgstr "Priorité"
106
 
107
- #: ../includes/admin.php:119
108
- msgid "Priority can be overridden on individual posts. *"
109
- msgstr "La Priorité peut être remplacée par article. *"
110
 
111
- #: ../includes/admin.php:124
112
- msgid "Automatically adjusts Priority according to relative age and comment count."
113
- msgstr "Ajuste la Priorité automatiquement selon l'âge relatif et le nombre des commentaires."
 
 
 
114
 
115
- #: ../includes/admin.php:124
116
- msgid "Sticky posts will not be subject to reduction by age. Individual posts with fixed Priority will always keep that value."
117
- msgstr "Articles mise en avant ne seront pas soumis à la réduction selon l'âge. Articles avec Priorité fixe garderont cette valeur."
 
 
 
 
118
 
119
- #: ../includes/admin.php:129
120
  msgid "Update Lastmod and Changefreq on comments."
121
  msgstr "Mise à jour de Lastmod et Changefreq à la soumission des commentaires."
122
 
123
- #: ../includes/admin.php:129
124
- msgid "Set this if discussion on your site warrants reindexation upon each new comment."
125
- msgstr "Configurez ceci si la discussion sur votre site nécessite la ré-indexation après chaque nouveau commentaire."
 
 
 
 
126
 
127
- #: ../includes/admin.php:133
128
- msgid "Include:"
129
- msgstr "Inclure :"
130
 
131
- #: ../includes/admin.php:138
132
- msgid "Image tags for"
133
- msgstr "Balises d'image pour"
134
 
135
- #: ../includes/admin.php:143
136
- msgid "Featured Image"
 
 
 
 
137
  msgstr ""
 
 
 
 
138
 
139
- #: ../includes/admin.php:146
140
- msgid "Attached images"
141
- msgstr "Images attachées"
 
 
 
 
142
 
143
- #: ../includes/admin.php:154
144
- msgid "Google News tags"
145
- msgstr "Balises Google News"
 
 
146
 
147
- #: ../includes/admin.php:154
148
- msgid "Only set when your site has been or will soon be accepted by Google News. **"
149
- msgstr "Seulement si ton site est (ou sera bientôt) accepté par Google News. **"
150
 
151
- #: ../includes/admin.php:171
152
- msgid "* Priority settings do not affect ranking in search results in any way. They are only meant to suggest search engines which URLs to index first. Once a URL has been indexed, its Priority becomes meaningless until its Lastmod is updated."
153
- msgstr "* Les paramètres de Priorité n'affectent pas le classement dans les résultats de recherche. Ils ont pour seul but de proposer des moteurs de recherche les URL à premier indice. Une fois qu'un URL a été indexé, sa priorité devient vide de sens jusqu'à le moment son Lastmod est mis à jour."
 
 
154
 
155
- #: ../includes/admin.php:171
156
- msgid "Maximum Priority (1.0) is reserved for the front page, individual posts and, when allowed, posts with high comment count."
157
- msgstr "La Priorité maximum (1.0) est réservé à la page d'accueil, articles individuels et, si permis, articles avec beaucoup des commentaires."
 
 
 
 
 
 
 
158
 
159
- #: ../includes/admin.php:173
160
  #, php-format
161
- msgid "** Google recommends using a seperate news sitemap. You can do this by checking the option %1$s at %2$s above."
162
- msgstr "** Google recommande un sitemap dédié News. Utilise l'option %1$s sous %2$s en haut pour cela."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
163
 
164
- #: ../includes/admin.php:173
165
  #: ../includes/admin.php:413
166
- msgid "Enable XML sitemaps"
167
- msgstr "Activez XML Sitemaps"
 
 
 
168
 
169
- #: ../includes/admin.php:183
170
- #: ../includes/admin.php:422
171
- msgid "Include taxonomies"
172
- msgstr "Taxonomies à inclure"
 
173
 
174
- #: ../includes/admin.php:213
175
- msgid "No taxonomies available for the currently included post types."
176
- msgstr "Aucun taxonomie disponible pour les types d'articles actuellement inclus."
177
 
178
- #: ../includes/admin.php:216
179
- msgid "It is generally not recommended to include taxonomy pages, unless their content brings added value. For example, when you use category descriptions with information that is not present elsewhere on your site or if taxonomy pages list posts with an excerpt that is different from, but complementary to the post content. In these cases you might consider including certain taxonomies. Otherwise, you might even consider disallowing indexation to prevent a possible duplicate content penalty. You can do this by adding specific robots.txt rules below."
180
- msgstr "Généralement, il est déconseillé à inclure les pages des taxonomies, sauf si ils représentent une valeur ajoutée. Par exemple, lorsque on utilise des descriptions des catégories que donnent des informations pas présents ailleurs sur le site. Sinon, vous pourriez même envisager interdire l'indexation pour éviter punition 'duplicate content' . Ajoute des règles spécifiques robots.txt ci-dessous pour cela."
181
 
182
- #: ../includes/admin.php:226
183
- msgid "Google"
184
- msgstr "Google"
 
 
 
 
185
 
186
- #: ../includes/admin.php:227
187
- msgid "Bing"
188
- msgstr "Bing"
189
 
190
- #: ../includes/admin.php:231
191
- #: ../includes/admin.php:425
192
- msgid "Ping on Publish"
193
- msgstr "Ping en Publiant"
194
 
195
- #: ../includes/admin.php:250
196
  #, php-format
197
- msgid "Successfully pinged for %1$s on %2$s GMT."
198
- msgstr "Pingé avec succès pour %1$s le %2$s GMT."
 
 
 
 
 
 
 
 
199
 
200
- #: ../includes/admin.php:259
201
  #, php-format
202
- msgid "Rules to append to the %s generated by WordPress."
203
- msgstr "Règles à ajouter au %s produit par WordPress."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
204
 
205
- #: ../includes/admin.php:260
206
- msgid "Only add rules here when you know what you are doing, otherwise you might break search engine access to your site."
207
- msgstr "Ajoutez des règles ici seulement si vous saviez le faire, vous risquez bloquer l'accès aux moteurs de recherche."
 
 
208
 
209
- #: ../includes/admin.php:260
210
- msgid "These rules will not have effect when you are using a static robots.txt file."
211
- msgstr "Ces règles ne seront pas effectué si vous utilisez un fichier robots.txt statique."
212
 
213
- #: ../includes/admin.php:267
214
- msgid "Clear all XML Sitemap Feed options from the database and start fresh with the default settings."
215
- msgstr "Supprimez tous les options Flux XML Sitemap et redémarrez avec les valeurs par défaut."
 
 
 
216
 
217
- #: ../includes/admin.php:269
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
218
  #, php-format
219
- msgid "Disabling and reenabling the %s plugin will have the same effect."
220
- msgstr "La désactivation et la réactivation de l'extension % s auront le même effet."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
221
 
222
- #: ../includes/admin.php:344
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
223
  msgid "XML Sitemap"
224
  msgstr "XML Sitemap"
225
 
226
- #: ../includes/admin.php:361
227
  msgid "Exclude from XML Sitemap"
228
  msgstr "Exclure de l'XML Sitemap"
229
 
230
- #: ../includes/admin.php:369
231
  #, php-format
232
  msgid "Leave empty for automatic Priority as configured on %1$s > %2$s."
233
- msgstr "Laissez vide pour la Priorité automatique comme configuré dans %1$s > %2$s."
234
-
235
- #: ../includes/admin.php:369
236
- msgid "Reading"
237
  msgstr ""
 
238
 
239
- #: ../includes/admin.php:431
240
- msgid "Additional robots.txt rules"
241
- msgstr "Règles robots.txt additionelles"
242
 
243
- #: ../includes/admin.php:434
244
- msgid "Reset XML sitemaps"
245
- msgstr "Remise à nouveau"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
246
 
247
  #~ msgid "year of publication"
248
  #~ msgstr "année de la publication"
2
  msgstr ""
3
  "Project-Id-Version: XML Sitemap and Google News feeds/4.0\n"
4
  "Report-Msgid-Bugs-To: \n"
5
+ "POT-Creation-Date: 2015-01-05 04:05+0100\n"
6
+ "PO-Revision-Date: 2015-06-09 21:29+0100\n"
7
  "Last-Translator: RavanH <ravanhagen@gmail.com>\n"
8
  "Language-Team: \n"
9
+ "Language: fr_FR\n"
10
  "MIME-Version: 1.0\n"
11
  "Content-Type: text/plain; charset=UTF-8\n"
12
  "Content-Transfer-Encoding: 8bit\n"
13
  "X-Poedit-KeywordsList: __;_e;_n\n"
14
  "X-Poedit-SourceCharset: UTF-8\n"
15
+ "X-Generator: Poedit 1.7.5\n"
 
16
 
17
+ #: ../includes/core.php:1186
18
+ msgid "Google News Genres"
19
+ msgstr "Genres Google News"
 
20
 
21
+ #: ../includes/core.php:1187
22
+ msgid "Google News Genre"
23
+ msgstr "Google News Genre"
24
+
25
+ #: ../includes/core.php:1205
26
+ msgid "Google News Country"
27
+ msgstr "Google News Pays"
28
+
29
+ #: ../includes/core.php:1207 ../includes/core.php:1226
30
+ #: ../includes/core.php:1245
31
+ msgid ""
32
+ "Only one allowed. Must be consistent with other Google News location "
33
+ "entities (if set)."
34
+ msgstr ""
35
+
36
+ #: ../includes/core.php:1224
37
+ msgid "Google News State/Province"
38
+ msgstr "Google News Région"
39
+
40
+ #: ../includes/core.php:1243
41
+ msgid "Google News City"
42
+ msgstr "Google News Ville"
43
+
44
+ #: ../includes/admin.php:19
45
+ msgid "XML Sitemaps"
46
+ msgstr "XML Sitemaps"
47
+
48
+ #: ../includes/admin.php:20
49
+ msgid "XML Sitemap Index"
50
+ msgstr "Index XML Sitemap"
51
+
52
+ #: ../includes/admin.php:25 ../includes/admin.php:988
53
+ msgid "Google News Sitemap"
54
+ msgstr "Google News Sitemap"
55
+
56
+ #: ../includes/admin.php:69
57
+ msgid "Google"
58
+ msgstr "Google"
59
+
60
+ #: ../includes/admin.php:72
61
+ msgid "Bing & Yahoo"
62
+ msgstr ""
63
+
64
+ #: ../includes/admin.php:75
65
+ msgid "Yandex"
66
+ msgstr ""
67
+
68
+ #: ../includes/admin.php:78
69
+ msgid "Baidu"
70
+ msgstr ""
71
 
72
+ #: ../includes/admin.php:81
73
+ msgid "Ping-O-Matic"
74
+ msgstr ""
75
+
76
+ #: ../includes/admin.php:136
77
  #, php-format
78
+ msgid "Successfully sent %1$s on %2$s."
79
+ msgstr "Le %1$s est envoyé avec succès le %2$s."
80
+
81
+ #: ../includes/admin.php:197 ../includes/admin.php:387
82
+ #: ../includes/admin.php:955
83
+ msgid "Additional robots.txt rules"
84
+ msgstr "Règles robots.txt additionelles"
85
 
86
+ #: ../includes/admin.php:198
87
  #, php-format
88
+ msgid "Rules that will be appended to the %s generated by WordPress:"
89
+ msgstr "Règles à ajouter au %s produit par WordPress."
90
 
91
+ #: ../includes/admin.php:199
92
+ msgid ""
93
+ "These rules will not have effect when you are using a static robots.txt file."
94
  msgstr ""
95
+ "Ces règles ne seront pas effectué si vous utilisez un fichier robots.txt "
96
+ "statique."
97
 
98
+ #: ../includes/admin.php:199
99
+ msgid ""
100
+ "Only add rules here when you know what you are doing, otherwise you might "
101
+ "break search engine access to your site."
102
  msgstr ""
103
+ "Ajoutez des règles ici seulement si vous saviez le faire, vous risquez "
104
+ "bloquer l'accès aux moteurs de recherche."
105
 
106
+ #: ../includes/admin.php:205 ../includes/admin.php:960
107
+ msgid "Reset XML sitemaps"
108
+ msgstr "Remise à nouveau"
 
109
 
110
+ #: ../includes/admin.php:207
111
+ msgid "Clear all XML Sitemap Feed settings from the database."
112
+ msgstr "Supprimez tous les options Flux XML Sitemap."
 
113
 
114
+ #: ../includes/admin.php:210
115
+ msgid ""
116
+ "You can use this to start fresh with the default settings or to remove all "
117
+ "XML Sitemap and Google News settings and taxonomy terms before uninstalling."
118
+ msgstr ""
119
 
120
+ #: ../includes/admin.php:219 ../includes/admin.php:220
121
+ #: ../includes/admin.php:457 ../includes/admin.php:458
122
+ #, php-format
123
+ msgid "Donate to keep the free %s plugin development & support going!"
124
  msgstr ""
125
+ "Faites un don pour aider le développement et support de l'extension %s. "
126
+ "Merci !"
127
 
128
+ #: ../includes/admin.php:219 ../includes/admin.php:220
129
+ #: ../includes/admin.php:221 ../includes/admin.php:457
130
+ #: ../includes/admin.php:458 ../includes/admin.php:459
131
+ msgid "XML Sitemap & Google News Feeds"
132
+ msgstr "Flux XML Sitemap & Google News"
133
 
134
+ #: ../includes/admin.php:221
135
+ #, php-format
136
+ msgid "These settings control the XML Sitemaps generated by the %s plugin."
137
+ msgstr "Ces options contrôlent le XML Sitemap par l'extension %s."
138
 
139
+ #: ../includes/admin.php:222 ../includes/admin.php:460
140
+ #, php-format
141
+ msgid "For ping options, go to %s."
 
142
  msgstr ""
143
 
144
+ #: ../includes/admin.php:235
145
+ msgid "XML Sitemaps for post types"
146
+ msgstr ""
147
+
148
+ #: ../includes/admin.php:274
149
  msgid "Year"
150
  msgstr "Année"
151
 
152
+ #: ../includes/admin.php:275
153
  msgid "Month"
154
  msgstr "Mois"
155
 
156
+ #: ../includes/admin.php:279
157
  msgid "Split by"
158
+ msgstr "Découper par"
159
 
160
+ #: ../includes/admin.php:289
161
+ msgid ""
162
+ "Split by year if you experience errors or slow sitemaps. In very rare cases, "
163
+ "split by month is needed."
164
  msgstr ""
165
+ "A utiliser si vous constatez des erreurs ou des lenteurs dans vos sitemaps. "
166
+ "Dans de rares cas, le découpage par mois peut être nécessaire."
167
 
168
+ #: ../includes/admin.php:294 ../includes/admin.php:908
 
 
 
 
 
169
  msgid "Priority"
170
  msgstr "Priorité"
171
 
172
+ #: ../includes/admin.php:296
173
+ msgid "Priority can be overridden on individual posts."
174
+ msgstr "La Priorité peut être remplacée par article."
175
 
176
+ #: ../includes/admin.php:301
177
+ msgid ""
178
+ "Automatically adjusts Priority according to relative age and comment count."
179
+ msgstr ""
180
+ "Ajuste la Priorité automatiquement selon l'âge relatif et le nombre des "
181
+ "commentaires."
182
 
183
+ #: ../includes/admin.php:301
184
+ msgid ""
185
+ "Sticky posts will not be subject to reduction by age. Individual posts with "
186
+ "fixed Priority will always keep that value."
187
+ msgstr ""
188
+ "Articles mise en avant ne seront pas soumis à la réduction selon l'âge. "
189
+ "Articles avec Priorité fixe garderont cette valeur."
190
 
191
+ #: ../includes/admin.php:306
192
  msgid "Update Lastmod and Changefreq on comments."
193
  msgstr "Mise à jour de Lastmod et Changefreq à la soumission des commentaires."
194
 
195
+ #: ../includes/admin.php:306
196
+ msgid ""
197
+ "Set this if discussion on your site warrants reindexation upon each new "
198
+ "comment."
199
+ msgstr ""
200
+ "Configurez ceci si la discussion sur votre site nécessite la ré-indexation "
201
+ "après chaque nouveau commentaire."
202
 
203
+ #: ../includes/admin.php:310 ../includes/admin.php:568
204
+ msgid "Add image tags for"
205
+ msgstr "Ajouter des balises d'image pour"
206
 
207
+ #: ../includes/admin.php:318 ../includes/admin.php:575
208
+ msgid "Attached images"
209
+ msgstr "Images attachées"
210
 
211
+ #: ../includes/admin.php:328
212
+ msgid ""
213
+ "Priority settings do not affect ranking in search results in any way. They "
214
+ "are only meant to suggest search engines which URLs to index first. Once a "
215
+ "URL has been indexed, its Priority becomes meaningless until its Lastmod is "
216
+ "updated."
217
  msgstr ""
218
+ "Les paramètres de Priorité n'affectent pas le classement dans les résultats "
219
+ "de recherche. Ils ont pour seul but de proposer des moteurs de recherche les "
220
+ "URL à premier indice. Une fois qu'un URL a été indexé, sa priorité devient "
221
+ "vide de sens jusqu'à le moment son Lastmod est mis à jour."
222
 
223
+ #: ../includes/admin.php:329
224
+ msgid ""
225
+ "Maximum Priority (1.0) is reserved for the front page, individual posts and, "
226
+ "when allowed, posts with high comment count."
227
+ msgstr ""
228
+ "La Priorité maximum (1.0) est réservé à la page d'accueil, articles "
229
+ "individuels et, si permis, articles avec beaucoup des commentaires."
230
 
231
+ #: ../includes/admin.php:329
232
+ msgid ""
233
+ "Priority values are taken as relative values. Setting all to the same (high) "
234
+ "value is pointless."
235
+ msgstr ""
236
 
237
+ #: ../includes/admin.php:379
238
+ msgid "XML Sitemaps for taxonomies"
239
+ msgstr ""
240
 
241
+ #: ../includes/admin.php:385
242
+ msgid ""
243
+ "It is generally not recommended to include taxonomy pages, unless their "
244
+ "content brings added value."
245
+ msgstr ""
246
 
247
+ #: ../includes/admin.php:386
248
+ msgid ""
249
+ "For example, when you use category descriptions with information that is not "
250
+ "present elsewhere on your site or if taxonomy pages list posts with an "
251
+ "excerpt that is different from, but complementary to the post content. In "
252
+ "these cases you might consider including certain taxonomies. Otherwise, if "
253
+ "you fear <a href=\"http://moz.com/learn/seo/duplicate-content\">negative "
254
+ "affects of duplicate content</a> or PageRank spread, you might even consider "
255
+ "disallowing indexation of taxonomies."
256
+ msgstr ""
257
 
258
+ #: ../includes/admin.php:387
259
  #, php-format
260
+ msgid ""
261
+ "You can do this by adding specific robots.txt rules in the %s field above."
262
+ msgstr ""
263
+
264
+ #: ../includes/admin.php:402
265
+ msgid "No taxonomies available for the currently included post types."
266
+ msgstr ""
267
+ "Aucun taxonomie disponible pour les types d'articles actuellement inclus."
268
+
269
+ #: ../includes/admin.php:410 ../includes/admin.php:979
270
+ msgid "Include custom XML Sitemaps"
271
+ msgstr "Inclure des XML Sitemaps externes"
272
+
273
+ #: ../includes/admin.php:411
274
+ msgid "Additional XML Sitemaps to append to the main XML Sitemap Index:"
275
+ msgstr ""
276
 
 
277
  #: ../includes/admin.php:413
278
+ msgid ""
279
+ "Add the full URL, including protocol (http/https) and domain, of any XML "
280
+ "Sitemap that you want to append to the Sitemap Index. Start each URL on a "
281
+ "new line."
282
+ msgstr ""
283
 
284
+ #: ../includes/admin.php:413
285
+ msgid ""
286
+ "Only valid sitemaps are allowed in the Sitemap Index. Use your Google/Bing "
287
+ "Webmaster Tools to verify!"
288
+ msgstr ""
289
 
290
+ #: ../includes/admin.php:430 ../includes/admin.php:976
291
+ msgid "Include custom URLs"
292
+ msgstr "Inclure des URLs externes"
293
 
294
+ #: ../includes/admin.php:431
295
+ msgid "Additional URLs to append in an extra XML Sitemap:"
296
+ msgstr ""
297
 
298
+ #: ../includes/admin.php:433
299
+ msgid ""
300
+ "Add the full URL, including protocol (http/https) and domain, of any "
301
+ "(static) page that you want to append to the ones already included by "
302
+ "WordPress. Optionally add a priority value between 0 and 1, separated with a "
303
+ "space after the URL. Start each URL on a new line."
304
+ msgstr ""
305
 
306
+ #: ../includes/admin.php:443 ../includes/admin.php:973
307
+ msgid "Allowed domains"
308
+ msgstr ""
309
 
310
+ #: ../includes/admin.php:444
311
+ msgid "Additional domains to allow in the XML Sitemaps:"
312
+ msgstr ""
 
313
 
314
+ #: ../includes/admin.php:445
315
  #, php-format
316
+ msgid ""
317
+ "By default, only the domain %s as used in your WordPress site address is "
318
+ "allowed. This means that all URLs that use another domain (custom URLs or "
319
+ "using a plugin like Page Links To) are filtered from the XML Sitemap. "
320
+ "However, if you are the verified owner of other domains in your Google/Bing "
321
+ "Webmaster Tools account, you can include these in the same sitemap. Add "
322
+ "these domains, without protocol (http/https) each on a new line. Note that "
323
+ "if you enter a domain with www, all URLs without it or with other subdomains "
324
+ "will be filtered."
325
+ msgstr ""
326
 
327
+ #: ../includes/admin.php:459
328
  #, php-format
329
+ msgid ""
330
+ "These settings control the Google News Sitemap generated by the %s plugin."
331
+ msgstr "Ces options contrôlent le Google News Sitemap par l'extension %s."
332
+
333
+ #: ../includes/admin.php:459
334
+ msgid ""
335
+ "When you are done configuring and preparing your news content and you are "
336
+ "convinced your site adheres to the <a href=\"https://support.google.com/news/"
337
+ "publisher/answer/40787?ref_topic=2484652\" target=\"_blank\">Google News "
338
+ "guidelines</a>, go ahead and <a href=\"https://support.google.com/news/"
339
+ "publisher/troubleshooter/3179220?#ts=3179198\" target=\"_blank\">submit your "
340
+ "site for inclusion</a>!"
341
+ msgstr ""
342
+
343
+ #: ../includes/admin.php:470 ../includes/admin.php:992
344
+ msgid "Publication name"
345
+ msgstr ""
346
+
347
+ #: ../includes/admin.php:471
348
+ #, php-format
349
+ msgid "By default, the general %s setting will be used."
350
+ msgstr ""
351
+
352
+ #: ../includes/admin.php:488
353
+ msgid ""
354
+ "Error: There where no valid post types found. Without at least one public "
355
+ "post type, a Google News Sitemap cannot be created by this plugin. Please "
356
+ "deselect the option Google News Sitemap at <a href=\"#xmlsf_sitemaps"
357
+ "\">Enable XML sitemaps</a> and choose another method."
358
+ msgstr ""
359
+
360
+ #: ../includes/admin.php:491 ../includes/admin.php:967
361
+ #: ../includes/admin.php:993
362
+ msgid "Include post types"
363
+ msgstr "Types d'articles à inclure"
364
+
365
+ #: ../includes/admin.php:517
366
+ #, php-format
367
+ msgid ""
368
+ "At least one post type must be selected. By default, the post type %s will "
369
+ "be used."
370
+ msgstr ""
371
+
372
+ #: ../includes/admin.php:540
373
+ msgid "Limit to posts in these post categories:"
374
+ msgstr ""
375
+
376
+ #: ../includes/admin.php:556
377
+ msgid ""
378
+ "If you wish to limit posts that will feature in your News Sitemap to certain "
379
+ "categories, select them here. Use the Ctrl/Cmd key plus click to select more "
380
+ "than one or to deselect. If no categories are selected, posts of all "
381
+ "categories will be included in your News Sitemap."
382
+ msgstr ""
383
+
384
+ #: ../includes/admin.php:556
385
+ msgid ""
386
+ "Please be aware that limiting by post category will rule out all custom post "
387
+ "types that do not use post categories, even if you selected them to be "
388
+ "included (above)."
389
+ msgstr ""
390
+
391
+ #: ../includes/admin.php:578
392
+ msgid ""
393
+ "Note: Google News prefers at most one image per article in the News Sitemap. "
394
+ "If multiple valid images are specified, the crawler will have to pick one "
395
+ "arbitrarily. Images in News Sitemaps should be in jpeg or png format."
396
+ msgstr ""
397
+
398
+ #: ../includes/admin.php:590 ../includes/admin.php:996
399
+ msgid "Access (&lt;access&gt; tag)"
400
+ msgstr ""
401
+
402
+ #: ../includes/admin.php:591
403
+ #, php-format
404
+ msgid ""
405
+ "The &lt;access&gt; tag specifies whether an article is available to all "
406
+ "readers (%1$s), or only to those with a free (%2$s) or paid membership "
407
+ "(%3$s) to your site."
408
+ msgstr ""
409
+
410
+ #: ../includes/admin.php:591 ../includes/admin.php:598
411
+ #: ../includes/admin.php:604
412
+ msgid "Registration"
413
+ msgstr ""
414
+
415
+ #: ../includes/admin.php:591 ../includes/admin.php:599
416
+ #: ../includes/admin.php:605
417
+ msgid "Subscription"
418
+ msgstr ""
419
+
420
+ #: ../includes/admin.php:596
421
+ msgid "Tag normal posts as"
422
+ msgstr ""
423
+
424
+ #: ../includes/admin.php:603
425
+ #, php-format
426
+ msgid "Tag %s posts as"
427
+ msgstr ""
428
 
429
+ #: ../includes/admin.php:610
430
+ msgid ""
431
+ "Note: The &lt;access&gt; tag is required when applicable. Do not leave it to "
432
+ "Public when your content is not."
433
+ msgstr ""
434
 
435
+ #: ../includes/admin.php:630 ../includes/admin.php:997
436
+ msgid "Genres (&lt;genres&gt; tag)"
437
+ msgstr ""
438
 
439
+ #: ../includes/admin.php:631
440
+ msgid ""
441
+ "The &lt;genres&gt; tag specifies one or more properties for an article, "
442
+ "namely, whether it is a press release, a blog post, an opinion, an op-ed "
443
+ "piece, user-generated content, or satire."
444
+ msgstr ""
445
 
446
+ #: ../includes/admin.php:631
447
+ msgid "You can assign Google News genres when writing a new post."
448
+ msgstr ""
449
+
450
+ #: ../includes/admin.php:642
451
+ msgid "Default genre:"
452
+ msgstr ""
453
+
454
+ #: ../includes/admin.php:651
455
+ msgid ""
456
+ "Note: The &lt;genres&gt; tag is required when applicable and restricted to "
457
+ "the list provided above."
458
+ msgstr ""
459
+
460
+ #: ../includes/admin.php:663 ../includes/admin.php:998
461
+ msgid "Topics (&lt;keywords&gt; tag)"
462
+ msgstr ""
463
+
464
+ #: ../includes/admin.php:664
465
+ msgid ""
466
+ "The &lt;keywords&gt; tag is used to help classify the articles you submit to "
467
+ "Google News by <strong>topic</strong>."
468
+ msgstr ""
469
+
470
+ #: ../includes/admin.php:666
471
  #, php-format
472
+ msgid "Use %s for topics."
473
+ msgstr ""
474
+
475
+ #: ../includes/admin.php:673
476
+ msgid "Default topic(s):"
477
+ msgstr ""
478
+
479
+ #: ../includes/admin.php:675 ../includes/admin.php:698
480
+ msgid "Separate with a comma."
481
+ msgstr ""
482
+
483
+ #: ../includes/admin.php:679
484
+ msgid ""
485
+ "Keywords may be drawn from, but are not limited to, the list of <a href="
486
+ "\"http://www.google.com/support/news_pub/bin/answer.py?answer=116037\" "
487
+ "target=\"_blank\">existing Google News keywords</a>."
488
+ msgstr ""
489
+
490
+ #: ../includes/admin.php:689 ../includes/admin.php:999
491
+ msgid "Locations (&lt;geo_locations&gt; tag)"
492
+ msgstr ""
493
+
494
+ #: ../includes/admin.php:690
495
+ msgid ""
496
+ "The &lt;geo_locations&gt; tag is used identify the geographic location of "
497
+ "your articles."
498
+ msgstr ""
499
 
500
+ #: ../includes/admin.php:690
501
+ msgid "You can assign locations when writing a new post."
502
+ msgstr ""
503
+
504
+ #: ../includes/admin.php:696
505
+ msgid "Default location:"
506
+ msgstr ""
507
+
508
+ #: ../includes/admin.php:700
509
+ msgid ""
510
+ "You should list location entities from smallest entity to largest. For "
511
+ "example: <code>Detroit, Michigan, USA</code> or <code>Rhône-Alpes, France</"
512
+ "code>."
513
+ msgstr ""
514
+
515
+ #: ../includes/admin.php:872 ../includes/admin.php:964
516
  msgid "XML Sitemap"
517
  msgstr "XML Sitemap"
518
 
519
+ #: ../includes/admin.php:904
520
  msgid "Exclude from XML Sitemap"
521
  msgstr "Exclure de l'XML Sitemap"
522
 
523
+ #: ../includes/admin.php:910
524
  #, php-format
525
  msgid "Leave empty for automatic Priority as configured on %1$s > %2$s."
 
 
 
 
526
  msgstr ""
527
+ "Laissez vide pour la Priorité automatique comme configuré dans %1$s > %2$s."
528
 
529
+ #: ../includes/admin.php:949
530
+ msgid "Enable XML sitemaps"
531
+ msgstr "Activez XML Sitemaps"
532
 
533
+ #: ../includes/admin.php:970
534
+ msgid "Include taxonomies"
535
+ msgstr "Taxonomies à inclure"
536
+
537
+ #~ msgid ""
538
+ #~ "XML Sitemaps will be disabled automatically when you check the option "
539
+ #~ "%1$s at %2$s above."
540
+ #~ msgstr ""
541
+ #~ "Les XML Sitemaps seront désactivés automatiquement si l'option %1$s sous "
542
+ #~ "%2$s en haut est activée."
543
+
544
+ #~ msgid ""
545
+ #~ "XML Sitemaps are disabled because you have checked the option %1$s at "
546
+ #~ "%2$s above."
547
+ #~ msgstr ""
548
+ #~ "Les XML Sitemaps sont désactivés parce-que l'option %1$s sous %2$s en "
549
+ #~ "haut est activée."
550
+
551
+ #~ msgid "Regular XML Sitemaps"
552
+ #~ msgstr "XML Sitemaps normaux"
553
+
554
+ #~ msgid "Include:"
555
+ #~ msgstr "Inclure :"
556
+
557
+ #~ msgid ""
558
+ #~ "Only set when your site has been or will soon be accepted by Google News. "
559
+ #~ "**"
560
+ #~ msgstr ""
561
+ #~ "Seulement si ton site est (ou sera bientôt) accepté par Google News. **"
562
+
563
+ #~ msgid ""
564
+ #~ "** Google recommends using a seperate news sitemap. You can do this by "
565
+ #~ "checking the option %1$s at %2$s above."
566
+ #~ msgstr ""
567
+ #~ "** Google recommande un sitemap dédié News. Utilise l'option %1$s sous "
568
+ #~ "%2$s en haut pour cela."
569
+
570
+ #~ msgid "Bing"
571
+ #~ msgstr "Bing"
572
+
573
+ #~ msgid "Ping on Publish"
574
+ #~ msgstr "Ping en Publiant"
575
+
576
+ #~ msgid "Disabling and reenabling the %s plugin will have the same effect."
577
+ #~ msgstr ""
578
+ #~ "La désactivation et la réactivation de l'extension % s auront le même "
579
+ #~ "effet."
580
 
581
  #~ msgid "year of publication"
582
  #~ msgstr "année de la publication"
languages/xml-sitemap-feed-nl_NL.mo CHANGED
Binary file
languages/xml-sitemap-feed-nl_NL.po CHANGED
@@ -1,9 +1,9 @@
1
  msgid ""
2
  msgstr ""
3
- "Project-Id-Version: XML Sitemap and Google News feeds/4.3\n"
4
  "Report-Msgid-Bugs-To: \n"
5
- "POT-Creation-Date: 2013-09-01 16:38+0100\n"
6
- "PO-Revision-Date: 2013-09-01 17:09+0100\n"
7
  "Last-Translator: RavanH <ravanhagen@gmail.com>\n"
8
  "Language-Team: RavanH <ravanhagen@gmail.com>\n"
9
  "Language: nl_NL\n"
@@ -15,6 +15,35 @@ msgstr ""
15
  "X-Generator: Poedit 1.5.4\n"
16
  "Plural-Forms: nplurals=2; plural=(n != 1);\n"
17
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
18
  #: ../includes/admin.php:19
19
  msgid "XML Sitemaps"
20
  msgstr "XML Sitemaps"
@@ -23,7 +52,7 @@ msgstr "XML Sitemaps"
23
  msgid "XML Sitemap Index"
24
  msgstr "XML Sitemap Index"
25
 
26
- #: ../includes/admin.php:25 ../includes/admin.php:820
27
  msgid "Google News Sitemap"
28
  msgstr "Google News Sitemap"
29
 
@@ -47,82 +76,94 @@ msgstr "Baidu"
47
  msgid "Ping-O-Matic"
48
  msgstr "Ping-O-Matic"
49
 
50
- #: ../includes/admin.php:89 ../includes/admin.php:778
51
- msgid "Ping on Publish"
52
- msgstr "Ping bij Publiceren"
53
-
54
- #: ../includes/admin.php:113
55
  #, php-format
56
- msgid "Successfully pinged for %1$s on %2$s GMT."
57
- msgstr "Succesvol gepinged voor %1$s op %2$s GMT."
58
 
59
- #: ../includes/admin.php:123
60
- #, php-format
61
- msgid "Rules to append to the %s generated by WordPress."
62
- msgstr "Regels om aan de WordPress gegenereerde %s toe te voegen."
63
 
64
- #: ../includes/admin.php:124
65
- msgid ""
66
- "Only add rules here when you know what you are doing, otherwise you might "
67
- "break search engine access to your site."
68
- msgstr ""
69
- "Definieer hier alleen regels als je weet wat je doet, anders zou je de "
70
- "toegang tot je site kunnen verstoren."
71
 
72
- #: ../includes/admin.php:124
73
  msgid ""
74
  "These rules will not have effect when you are using a static robots.txt file."
75
  msgstr ""
76
  "Deze regels hebben geen effect als je een statisch robots.txt bestand "
77
  "gebruikt."
78
 
79
- #: ../includes/admin.php:131
80
  msgid ""
81
- "Clear all XML Sitemap Feed options from the database and start fresh with "
82
- "the default settings."
83
  msgstr ""
84
- "Wis alle XML Sitemap Feed opties van de database en start opnieuw met de "
85
- "standaard instellingen."
86
 
87
- #: ../includes/admin.php:133
88
- #, php-format
89
- msgid "Disabling and reenabling the %s plugin will have the same effect."
90
- msgstr "Uit- en weer inschakelen van de %s plugin heeft hetzelfde effect."
91
 
92
- #: ../includes/admin.php:133 ../includes/admin.php:141
93
- #: ../includes/admin.php:352
94
- msgid "XML Sitemap & Google News Feeds"
95
- msgstr "XML Sitemap & Google News Feeds"
 
 
 
 
 
 
 
 
96
 
97
- #: ../includes/admin.php:141 ../includes/admin.php:352
 
98
  #, php-format
99
  msgid "Donate to keep the free %s plugin development & support going!"
100
  msgstr ""
101
  "Doneer om de ontwikkeling en ondersteuning van de %s plugin gaande te houden!"
102
 
103
- #: ../includes/admin.php:141
 
 
 
 
 
 
104
  #, php-format
105
  msgid "These settings control the XML Sitemaps generated by the %s plugin."
106
  msgstr ""
107
  "Deze instellingen beheersen de XML Sitemaps gegenereerd door de %s plugin."
108
 
109
- #: ../includes/admin.php:150
 
 
 
 
 
110
  msgid "XML Sitemaps for post types"
111
- msgstr "XML Sitemaps voor berichttypes"
112
 
113
- #: ../includes/admin.php:189
114
  msgid "Year"
115
  msgstr "Jaar"
116
 
117
- #: ../includes/admin.php:190
118
  msgid "Month"
119
  msgstr "Maand"
120
 
121
- #: ../includes/admin.php:194
122
  msgid "Split by"
123
  msgstr "Verdeel naar"
124
 
125
- #: ../includes/admin.php:204
126
  msgid ""
127
  "Split by year if you experience errors or slow sitemaps. In very rare cases, "
128
  "split by month is needed."
@@ -130,34 +171,34 @@ msgstr ""
130
  "Verdeel naar jaar als je errors of trage sitemaps ondervindt. In zeldzame "
131
  "gevallen is een verdeling naar maand nodig."
132
 
133
- #: ../includes/admin.php:209 ../includes/admin.php:725
134
  msgid "Priority"
135
  msgstr "Prioriteit"
136
 
137
- #: ../includes/admin.php:211
138
  msgid "Priority can be overridden on individual posts."
139
- msgstr "De Priority kan per post worden aangepast."
140
 
141
- #: ../includes/admin.php:216
142
  msgid ""
143
  "Automatically adjusts Priority according to relative age and comment count."
144
  msgstr ""
145
  "Pas de Priority automatisch aan naar relatieve leeftijd en aantal "
146
  "commentaren."
147
 
148
- #: ../includes/admin.php:216
149
  msgid ""
150
  "Sticky posts will not be subject to reduction by age. Individual posts with "
151
  "fixed Priority will always keep that value."
152
  msgstr ""
153
- "Sticky posts worden niet onderworpen aan een reductie naar leeftijd. Posts "
154
- "met een vastgezette Priority behouden deze."
155
 
156
- #: ../includes/admin.php:221
157
  msgid "Update Lastmod and Changefreq on comments."
158
  msgstr "Pas de Lastmod en Changefreq aan bij commentaren."
159
 
160
- #: ../includes/admin.php:221
161
  msgid ""
162
  "Set this if discussion on your site warrants reindexation upon each new "
163
  "comment."
@@ -165,15 +206,15 @@ msgstr ""
165
  "Activeer dit als discussies op je site het waard zijn om na ieder commentaar "
166
  "opnieuw geïndexeerd te worden."
167
 
168
- #: ../includes/admin.php:225 ../includes/admin.php:371
169
  msgid "Add image tags for"
170
  msgstr "Voeg afbeeldingstags toe voor"
171
 
172
- #: ../includes/admin.php:233 ../includes/admin.php:378
173
  msgid "Attached images"
174
  msgstr "Bijgevoegde afbeeldingen"
175
 
176
- #: ../includes/admin.php:243
177
  msgid ""
178
  "Priority settings do not affect ranking in search results in any way. They "
179
  "are only meant to suggest search engines which URLs to index first. Once a "
@@ -185,7 +226,7 @@ msgstr ""
185
  "een URL geïndexeerd is, wordt de prioriteit betekenisloos totdat de Lastmod "
186
  "is veranderd."
187
 
188
- #: ../includes/admin.php:243
189
  msgid ""
190
  "Maximum Priority (1.0) is reserved for the front page, individual posts and, "
191
  "when allowed, posts with high comment count."
@@ -193,7 +234,7 @@ msgstr ""
193
  "Maximum Priority (1.0) is gereserveerd voor de voorpagina, individuele posts "
194
  "en, indien toegestaan, posts met veel commentaren."
195
 
196
- #: ../includes/admin.php:243
197
  msgid ""
198
  "Priority values are taken as relative values. Setting all to the same (high) "
199
  "value is pointless."
@@ -201,11 +242,11 @@ msgstr ""
201
  "Priority is een relatieve waarde. Het is zinloos om ze allemaal dezelfde "
202
  "(hoge) waarde te geven."
203
 
204
- #: ../includes/admin.php:294
205
  msgid "XML Sitemaps for taxonomies"
206
  msgstr "XML Sitemaps voor taxonomieën"
207
 
208
- #: ../includes/admin.php:300
209
  msgid ""
210
  "It is generally not recommended to include taxonomy pages, unless their "
211
  "content brings added value."
@@ -213,7 +254,7 @@ msgstr ""
213
  "Het is over het algemeen niet aangeraden om taxonomie-pagina's bij te "
214
  "sluiten, tenzij ze een toegevoegde waarde hebben."
215
 
216
- #: ../includes/admin.php:300
217
  msgid ""
218
  "For example, when you use category descriptions with information that is not "
219
  "present elsewhere on your site or if taxonomy pages list posts with an "
@@ -231,7 +272,7 @@ msgstr ""
231
  "dubbele inhoud</a> of verspeiding van PageRank vreest, zelfs kunnen "
232
  "overwegen om indexatie van taxonomieën te verbieden."
233
 
234
- #: ../includes/admin.php:300
235
  #, php-format
236
  msgid ""
237
  "You can do this by adding specific robots.txt rules in the %s field above."
@@ -239,36 +280,65 @@ msgstr ""
239
  "Je kunt dit doen door specifieke robots.txt-regels in het veld %s hierboven "
240
  "toe te voegen."
241
 
242
- #: ../includes/admin.php:300 ../includes/admin.php:789
243
- msgid "Additional robots.txt rules"
244
- msgstr "Aanvullende robots.txt regels"
245
-
246
- #: ../includes/admin.php:315
247
  msgid "No taxonomies available for the currently included post types."
248
- msgstr "Geen taxonomieën beschikbaar voor de huidige bijgesloten post types."
249
 
250
- #: ../includes/admin.php:331
251
- msgid "Additional URLs to append to the XML Sitemap."
252
- msgstr "Extra URL's om in de XML Sitemap bij te sluiten."
253
 
254
- #: ../includes/admin.php:332
 
 
 
 
255
  msgid ""
256
- "Add the full URL, including protocol (http/https) and domain, of any static "
257
- "page or WordPress page that you want to append to the ones already included "
258
- "by the settings above. Optionally add a priority value between 0 and 1, "
259
- "separated with a space, after the URL. Start each URL on a new line."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
260
  msgstr ""
261
  "Voer de volledige URL in, inclusief protocol (http/https) en domein, van "
262
- "statische pagina's of specifieke WordPress pagina's die je wil voegen bij "
263
- "degene die middels bovenstaande instellingen al zijn geactiveerd. Geef "
264
- "eventueel een Priority-waarde tussen 0 en 1 met een spatie gescheiden achter "
265
- "de URL. Begin iedere URL op een nieuwe regel."
266
 
267
- #: ../includes/admin.php:341
268
- msgid "Additional domains to allow in the XML Sitemap."
269
- msgstr "Extra domeinen op in de XML Sitemap toe te staan. "
270
 
271
- #: ../includes/admin.php:342
 
 
 
 
272
  #, php-format
273
  msgid ""
274
  "By default, only the domain %s as used in your WordPress site address is "
@@ -289,14 +359,14 @@ msgstr ""
289
  "https), ieder op een nieuwe regel. Let op: als je een domein met www "
290
  "gebruikt dan worden URL's zonder www of met andere subdomeinen, gefilterd."
291
 
292
- #: ../includes/admin.php:352
293
  #, php-format
294
  msgid ""
295
  "These settings control the Google News Sitemap generated by the %s plugin."
296
  msgstr ""
297
  "Deze instellingen beheersen de XML Sitemaps gegenereerd door de %s plugin."
298
 
299
- #: ../includes/admin.php:352
300
  msgid ""
301
  "When you are done configuring and preparing your news content and you are "
302
  "convinced your site adheres to the <a href=\"https://support.google.com/news/"
@@ -312,16 +382,79 @@ msgstr ""
312
  "com/news/publisher/troubleshooter/3179220?#ts=3179198\" target=\"_blank\">je "
313
  "site voor insluiting indienen</a>!"
314
 
315
- #: ../includes/admin.php:362
 
 
 
 
316
  #, php-format
317
  msgid "By default, the general %s setting will be used."
318
  msgstr "Standaard wordt de algemene %s instelling gebruikt."
319
 
320
- #: ../includes/admin.php:392 ../includes/admin.php:826
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
321
  msgid "Access (&lt;access&gt; tag)"
322
  msgstr "Toegang (&lt;access&gt; tag)"
323
 
324
- #: ../includes/admin.php:393
325
  #, php-format
326
  msgid ""
327
  "The &lt;access&gt; tag specifies whether an article is available to all "
@@ -332,26 +465,26 @@ msgstr ""
332
  "(%1$s), of alleen via een gratis (%2$s) of betaalde inschrijving (%3$s) op "
333
  "je site."
334
 
335
- #: ../includes/admin.php:393 ../includes/admin.php:400
336
- #: ../includes/admin.php:413
337
  msgid "Registration"
338
  msgstr "Registratie"
339
 
340
- #: ../includes/admin.php:393 ../includes/admin.php:401
341
- #: ../includes/admin.php:414
342
  msgid "Subscription"
343
  msgstr "Abonnement"
344
 
345
- #: ../includes/admin.php:398
346
  msgid "Tag normal posts as"
347
  msgstr "Normale artikelen taggen als"
348
 
349
- #: ../includes/admin.php:412
350
  #, php-format
351
  msgid "Tag %s posts as"
352
  msgstr "%s artikelen taggen als"
353
 
354
- #: ../includes/admin.php:419
355
  msgid ""
356
  "Note: The &lt;access&gt; tag is required when applicable. Do not leave it to "
357
  "Public when your content is not."
@@ -359,11 +492,11 @@ msgstr ""
359
  "Let op: de &lt;access&gt; tag is verplicht wanneer van toepassing. Laat het "
360
  "niet op Public als je inhoud "
361
 
362
- #: ../includes/admin.php:439 ../includes/admin.php:827
363
  msgid "Genres (&lt;genres&gt; tag)"
364
  msgstr "Genres (&lt;genres&gt; tag)"
365
 
366
- #: ../includes/admin.php:440
367
  msgid ""
368
  "The &lt;genres&gt; tag specifies one or more properties for an article, "
369
  "namely, whether it is a press release, a blog post, an opinion, an op-ed "
@@ -373,16 +506,16 @@ msgstr ""
373
  "of het een persbericht, een blog artikel, een mening, een zogenaamd op-ed "
374
  "stuk, gebruiker-gegenereerde inhoud, of satire is."
375
 
376
- #: ../includes/admin.php:440
377
  msgid "You can assign Google News genres when writing a new post."
378
  msgstr ""
379
  "Je kunt Google News genres toewijzen bij het opstellen van een nieuw artikel."
380
 
381
- #: ../includes/admin.php:451
382
  msgid "Default genre:"
383
  msgstr "Standaard genre:"
384
 
385
- #: ../includes/admin.php:460
386
  msgid ""
387
  "Note: The &lt;genres&gt; tag is required when applicable and restricted to "
388
  "the list provided above."
@@ -390,11 +523,11 @@ msgstr ""
390
  "Let op: de &lt;genres&gt; tag is verplicht wanneer van toepassing en "
391
  "gelimiteerd tot de bovenstaande lijst."
392
 
393
- #: ../includes/admin.php:472 ../includes/admin.php:828
394
  msgid "Topics (&lt;keywords&gt; tag)"
395
  msgstr "Onderwerpen (&lt;keywords&gt; tag)"
396
 
397
- #: ../includes/admin.php:473
398
  msgid ""
399
  "The &lt;keywords&gt; tag is used to help classify the articles you submit to "
400
  "Google News by <strong>topic</strong>."
@@ -402,20 +535,20 @@ msgstr ""
402
  "De &lt;keywords&gt; tag wordt gebruikt om de bij Google News ingediende "
403
  "artikelen te classificeren naar <strong>onderwerp</strong>."
404
 
405
- #: ../includes/admin.php:475
406
  #, php-format
407
  msgid "Use %s for topics."
408
  msgstr "Gebruik %s voor onderwerpen."
409
 
410
- #: ../includes/admin.php:480
411
  msgid "Default topic(s):"
412
  msgstr "Standaard onderwerpen:"
413
 
414
- #: ../includes/admin.php:482 ../includes/admin.php:503
415
  msgid "Separate with a comma."
416
  msgstr "Scheiden met een komma."
417
 
418
- #: ../includes/admin.php:484
419
  msgid ""
420
  "Keywords may be drawn from, but are not limited to, the list of <a href="
421
  "\"http://www.google.com/support/news_pub/bin/answer.py?answer=116037\" "
@@ -425,11 +558,11 @@ msgstr ""
425
  "van <a href=\"http://www.google.com/support/news_pub/bin/answer.py?"
426
  "answer=116037\" target=\"_blank\">bestaande Google News keywords</a>."
427
 
428
- #: ../includes/admin.php:494 ../includes/admin.php:829
429
  msgid "Locations (&lt;geo_locations&gt; tag)"
430
  msgstr "Locaties (&lt;geo_locations&gt; tag)"
431
 
432
- #: ../includes/admin.php:495
433
  msgid ""
434
  "The &lt;geo_locations&gt; tag is used identify the geographic location of "
435
  "your articles."
@@ -437,15 +570,15 @@ msgstr ""
437
  "De &lt;geo_locations&gt; tag dient bij het bepalen van de geografische "
438
  "locatie van je artikelen."
439
 
440
- #: ../includes/admin.php:495
441
  msgid "You can assign locations when writing a new post."
442
  msgstr "Je kunt de locatie bij het schrijven van een nieuw artikel instellen."
443
 
444
- #: ../includes/admin.php:501
445
  msgid "Default location:"
446
  msgstr "Standaardlocatie:"
447
 
448
- #: ../includes/admin.php:505
449
  msgid ""
450
  "You should list location entities from smallest entity to largest. For "
451
  "example: <code>Detroit, Michigan, USA</code> or <code>Rhône-Alpes, France</"
@@ -455,76 +588,36 @@ msgstr ""
455
  "Bijvoorbeeld: <code>Detroit, Michigan, USA</code> of <code>Rhône-Alpes, "
456
  "France</code>."
457
 
458
- #: ../includes/admin.php:689 ../includes/admin.php:798
459
  msgid "XML Sitemap"
460
  msgstr "XML Sitemap"
461
 
462
- #: ../includes/admin.php:721
463
  msgid "Exclude from XML Sitemap"
464
  msgstr "Uit in de XML Sitemap houden."
465
 
466
- #: ../includes/admin.php:727
467
  #, php-format
468
  msgid "Leave empty for automatic Priority as configured on %1$s > %2$s."
469
  msgstr ""
470
  "Laat leeg voor automatische Priority zoals geconfigureerd op %1$s > %2$s."
471
 
472
- #: ../includes/admin.php:773
473
  msgid "Enable XML sitemaps"
474
  msgstr "XML sitemaps activeren"
475
 
476
- #: ../includes/admin.php:794
477
- msgid "Reset XML sitemaps"
478
- msgstr "XML sitemaps resetten"
479
-
480
- #: ../includes/admin.php:801
481
- msgid "Include post types"
482
- msgstr "Post types bijsluiten"
483
-
484
- #: ../includes/admin.php:804
485
  msgid "Include taxonomies"
486
  msgstr "Taxonomieën bijsluiten"
487
 
488
- #: ../includes/admin.php:807
489
- msgid "Include custom URLs"
490
- msgstr "Aangepaste URL's bijsluiten"
491
-
492
- #: ../includes/admin.php:811
493
- msgid "Additional allowed domains"
494
- msgstr "Additionele toegestane domeinen"
495
 
496
- #: ../includes/admin.php:824
497
- msgid "Publication name"
498
- msgstr "Publicatienaam"
499
-
500
- #: ../includes/core.php:1059
501
- msgid "Google News Genres"
502
- msgstr "Google News Genres"
503
-
504
- #: ../includes/core.php:1060
505
- msgid "Google News Genre"
506
- msgstr "Google News Genre"
507
 
508
- #: ../includes/core.php:1078
509
- msgid "Google News Country"
510
- msgstr "Google News Land"
511
-
512
- #: ../includes/core.php:1080 ../includes/core.php:1099
513
- #: ../includes/core.php:1118
514
- msgid ""
515
- "Only one allowed. Must be consistent with other Google News location "
516
- "entities (if set)."
517
- msgstr ""
518
- "Slechts één toegestaan. Moet consistent zijn met de andere locatie-"
519
- "entiteiten (indien ingevoerd)."
520
-
521
- #: ../includes/core.php:1097
522
- msgid "Google News State/Province"
523
- msgstr "Google News Staat/Provincie"
524
-
525
- #: ../includes/core.php:1116
526
- msgid "Google News City"
527
- msgstr "Google News Stad"
528
 
529
  #~ msgid ""
530
  #~ "XML Sitemaps will be disabled automatically when you check the option "
1
  msgid ""
2
  msgstr ""
3
+ "Project-Id-Version: XML Sitemap and Google News feeds/4.4\n"
4
  "Report-Msgid-Bugs-To: \n"
5
+ "POT-Creation-Date: 2015-01-05 04:05+0100\n"
6
+ "PO-Revision-Date: 2015-01-05 04:27+0100\n"
7
  "Last-Translator: RavanH <ravanhagen@gmail.com>\n"
8
  "Language-Team: RavanH <ravanhagen@gmail.com>\n"
9
  "Language: nl_NL\n"
15
  "X-Generator: Poedit 1.5.4\n"
16
  "Plural-Forms: nplurals=2; plural=(n != 1);\n"
17
 
18
+ #: ../includes/core.php:1186
19
+ msgid "Google News Genres"
20
+ msgstr "Google News Genres"
21
+
22
+ #: ../includes/core.php:1187
23
+ msgid "Google News Genre"
24
+ msgstr "Google News Genre"
25
+
26
+ #: ../includes/core.php:1205
27
+ msgid "Google News Country"
28
+ msgstr "Google News Land"
29
+
30
+ #: ../includes/core.php:1207 ../includes/core.php:1226
31
+ #: ../includes/core.php:1245
32
+ msgid ""
33
+ "Only one allowed. Must be consistent with other Google News location "
34
+ "entities (if set)."
35
+ msgstr ""
36
+ "Slechts één toegestaan. Moet consistent zijn met de andere locatie-"
37
+ "entiteiten (indien ingevoerd)."
38
+
39
+ #: ../includes/core.php:1224
40
+ msgid "Google News State/Province"
41
+ msgstr "Google News Staat/Provincie"
42
+
43
+ #: ../includes/core.php:1243
44
+ msgid "Google News City"
45
+ msgstr "Google News Stad"
46
+
47
  #: ../includes/admin.php:19
48
  msgid "XML Sitemaps"
49
  msgstr "XML Sitemaps"
52
  msgid "XML Sitemap Index"
53
  msgstr "XML Sitemap Index"
54
 
55
+ #: ../includes/admin.php:25 ../includes/admin.php:988
56
  msgid "Google News Sitemap"
57
  msgstr "Google News Sitemap"
58
 
76
  msgid "Ping-O-Matic"
77
  msgstr "Ping-O-Matic"
78
 
79
+ #: ../includes/admin.php:136
 
 
 
 
80
  #, php-format
81
+ msgid "Successfully sent %1$s on %2$s."
82
+ msgstr "Succesvolle verzending van %1$s op %2$s."
83
 
84
+ #: ../includes/admin.php:197 ../includes/admin.php:387
85
+ #: ../includes/admin.php:955
86
+ msgid "Additional robots.txt rules"
87
+ msgstr "Aanvullende robots.txt regels"
88
 
89
+ #: ../includes/admin.php:198
90
+ #, php-format
91
+ msgid "Rules that will be appended to the %s generated by WordPress:"
92
+ msgstr "Regels die aan de WordPress-gegenereerde %s zullen worden toegevoegd:"
 
 
 
93
 
94
+ #: ../includes/admin.php:199
95
  msgid ""
96
  "These rules will not have effect when you are using a static robots.txt file."
97
  msgstr ""
98
  "Deze regels hebben geen effect als je een statisch robots.txt bestand "
99
  "gebruikt."
100
 
101
+ #: ../includes/admin.php:199
102
  msgid ""
103
+ "Only add rules here when you know what you are doing, otherwise you might "
104
+ "break search engine access to your site."
105
  msgstr ""
106
+ "Definieer hier alleen regels als je weet wat je doet, anders zou je de "
107
+ "toegang tot je site kunnen verstoren."
108
 
109
+ #: ../includes/admin.php:205 ../includes/admin.php:960
110
+ msgid "Reset XML sitemaps"
111
+ msgstr "XML sitemaps resetten"
 
112
 
113
+ #: ../includes/admin.php:207
114
+ msgid "Clear all XML Sitemap Feed settings from the database."
115
+ msgstr "Wis alle XML Sitemap Feed opties van de database."
116
+
117
+ #: ../includes/admin.php:210
118
+ msgid ""
119
+ "You can use this to start fresh with the default settings or to remove all "
120
+ "XML Sitemap and Google News settings and taxonomy terms before uninstalling."
121
+ msgstr ""
122
+ "Gebruik dit op opnieuw met de default instellingen te beginnen of om alle "
123
+ "XML Sitemap and Google News instellingen te verwijderen voor het de-"
124
+ "installeren."
125
 
126
+ #: ../includes/admin.php:219 ../includes/admin.php:220
127
+ #: ../includes/admin.php:457 ../includes/admin.php:458
128
  #, php-format
129
  msgid "Donate to keep the free %s plugin development & support going!"
130
  msgstr ""
131
  "Doneer om de ontwikkeling en ondersteuning van de %s plugin gaande te houden!"
132
 
133
+ #: ../includes/admin.php:219 ../includes/admin.php:220
134
+ #: ../includes/admin.php:221 ../includes/admin.php:457
135
+ #: ../includes/admin.php:458 ../includes/admin.php:459
136
+ msgid "XML Sitemap & Google News Feeds"
137
+ msgstr "XML Sitemap & Google News Feeds"
138
+
139
+ #: ../includes/admin.php:221
140
  #, php-format
141
  msgid "These settings control the XML Sitemaps generated by the %s plugin."
142
  msgstr ""
143
  "Deze instellingen beheersen de XML Sitemaps gegenereerd door de %s plugin."
144
 
145
+ #: ../includes/admin.php:222 ../includes/admin.php:460
146
+ #, php-format
147
+ msgid "For ping options, go to %s."
148
+ msgstr "Ga naar %s voor Ping instellingen."
149
+
150
+ #: ../includes/admin.php:235
151
  msgid "XML Sitemaps for post types"
152
+ msgstr "XML Sitemaps voor berichttypen"
153
 
154
+ #: ../includes/admin.php:274
155
  msgid "Year"
156
  msgstr "Jaar"
157
 
158
+ #: ../includes/admin.php:275
159
  msgid "Month"
160
  msgstr "Maand"
161
 
162
+ #: ../includes/admin.php:279
163
  msgid "Split by"
164
  msgstr "Verdeel naar"
165
 
166
+ #: ../includes/admin.php:289
167
  msgid ""
168
  "Split by year if you experience errors or slow sitemaps. In very rare cases, "
169
  "split by month is needed."
171
  "Verdeel naar jaar als je errors of trage sitemaps ondervindt. In zeldzame "
172
  "gevallen is een verdeling naar maand nodig."
173
 
174
+ #: ../includes/admin.php:294 ../includes/admin.php:908
175
  msgid "Priority"
176
  msgstr "Prioriteit"
177
 
178
+ #: ../includes/admin.php:296
179
  msgid "Priority can be overridden on individual posts."
180
+ msgstr "De Priority kan per bericht worden aangepast."
181
 
182
+ #: ../includes/admin.php:301
183
  msgid ""
184
  "Automatically adjusts Priority according to relative age and comment count."
185
  msgstr ""
186
  "Pas de Priority automatisch aan naar relatieve leeftijd en aantal "
187
  "commentaren."
188
 
189
+ #: ../includes/admin.php:301
190
  msgid ""
191
  "Sticky posts will not be subject to reduction by age. Individual posts with "
192
  "fixed Priority will always keep that value."
193
  msgstr ""
194
+ "Sticky berichten worden niet onderworpen aan een reductie naar leeftijd. "
195
+ "Berichten met een vastgezette prioriteit behouden deze."
196
 
197
+ #: ../includes/admin.php:306
198
  msgid "Update Lastmod and Changefreq on comments."
199
  msgstr "Pas de Lastmod en Changefreq aan bij commentaren."
200
 
201
+ #: ../includes/admin.php:306
202
  msgid ""
203
  "Set this if discussion on your site warrants reindexation upon each new "
204
  "comment."
206
  "Activeer dit als discussies op je site het waard zijn om na ieder commentaar "
207
  "opnieuw geïndexeerd te worden."
208
 
209
+ #: ../includes/admin.php:310 ../includes/admin.php:568
210
  msgid "Add image tags for"
211
  msgstr "Voeg afbeeldingstags toe voor"
212
 
213
+ #: ../includes/admin.php:318 ../includes/admin.php:575
214
  msgid "Attached images"
215
  msgstr "Bijgevoegde afbeeldingen"
216
 
217
+ #: ../includes/admin.php:328
218
  msgid ""
219
  "Priority settings do not affect ranking in search results in any way. They "
220
  "are only meant to suggest search engines which URLs to index first. Once a "
226
  "een URL geïndexeerd is, wordt de prioriteit betekenisloos totdat de Lastmod "
227
  "is veranderd."
228
 
229
+ #: ../includes/admin.php:329
230
  msgid ""
231
  "Maximum Priority (1.0) is reserved for the front page, individual posts and, "
232
  "when allowed, posts with high comment count."
234
  "Maximum Priority (1.0) is gereserveerd voor de voorpagina, individuele posts "
235
  "en, indien toegestaan, posts met veel commentaren."
236
 
237
+ #: ../includes/admin.php:329
238
  msgid ""
239
  "Priority values are taken as relative values. Setting all to the same (high) "
240
  "value is pointless."
242
  "Priority is een relatieve waarde. Het is zinloos om ze allemaal dezelfde "
243
  "(hoge) waarde te geven."
244
 
245
+ #: ../includes/admin.php:379
246
  msgid "XML Sitemaps for taxonomies"
247
  msgstr "XML Sitemaps voor taxonomieën"
248
 
249
+ #: ../includes/admin.php:385
250
  msgid ""
251
  "It is generally not recommended to include taxonomy pages, unless their "
252
  "content brings added value."
254
  "Het is over het algemeen niet aangeraden om taxonomie-pagina's bij te "
255
  "sluiten, tenzij ze een toegevoegde waarde hebben."
256
 
257
+ #: ../includes/admin.php:386
258
  msgid ""
259
  "For example, when you use category descriptions with information that is not "
260
  "present elsewhere on your site or if taxonomy pages list posts with an "
272
  "dubbele inhoud</a> of verspeiding van PageRank vreest, zelfs kunnen "
273
  "overwegen om indexatie van taxonomieën te verbieden."
274
 
275
+ #: ../includes/admin.php:387
276
  #, php-format
277
  msgid ""
278
  "You can do this by adding specific robots.txt rules in the %s field above."
280
  "Je kunt dit doen door specifieke robots.txt-regels in het veld %s hierboven "
281
  "toe te voegen."
282
 
283
+ #: ../includes/admin.php:402
 
 
 
 
284
  msgid "No taxonomies available for the currently included post types."
285
+ msgstr "Geen taxonomieën beschikbaar voor de huidige bijgesloten berichttypes."
286
 
287
+ #: ../includes/admin.php:410 ../includes/admin.php:979
288
+ msgid "Include custom XML Sitemaps"
289
+ msgstr "Aangepaste XML Sitemaps toevoegen"
290
 
291
+ #: ../includes/admin.php:411
292
+ msgid "Additional XML Sitemaps to append to the main XML Sitemap Index:"
293
+ msgstr "Extra URL's om in de XML Sitemap Index bij te sluiten:"
294
+
295
+ #: ../includes/admin.php:413
296
  msgid ""
297
+ "Add the full URL, including protocol (http/https) and domain, of any XML "
298
+ "Sitemap that you want to append to the Sitemap Index. Start each URL on a "
299
+ "new line."
300
+ msgstr ""
301
+ "Voer de volledige URL in, inclusief protocol (http/https) en domein, van XML "
302
+ "Sitemaps die je wil toevoegen aan de Sitemap Index. Begin iedere URL op een "
303
+ "nieuwe regel."
304
+
305
+ #: ../includes/admin.php:413
306
+ msgid ""
307
+ "Only valid sitemaps are allowed in the Sitemap Index. Use your Google/Bing "
308
+ "Webmaster Tools to verify!"
309
+ msgstr ""
310
+ "Alleen valide sitemaps zijn toegestaan in de Sitemap Index. Gebruik je "
311
+ "Google/Bing Webmaster Tools om ze te verifiëren!"
312
+
313
+ #: ../includes/admin.php:430 ../includes/admin.php:976
314
+ msgid "Include custom URLs"
315
+ msgstr "Aangepaste URL's bijsluiten"
316
+
317
+ #: ../includes/admin.php:431
318
+ msgid "Additional URLs to append in an extra XML Sitemap:"
319
+ msgstr "Extra URL's om in een extra XML Sitemap bij te sluiten:"
320
+
321
+ #: ../includes/admin.php:433
322
+ msgid ""
323
+ "Add the full URL, including protocol (http/https) and domain, of any "
324
+ "(static) page that you want to append to the ones already included by "
325
+ "WordPress. Optionally add a priority value between 0 and 1, separated with a "
326
+ "space after the URL. Start each URL on a new line."
327
  msgstr ""
328
  "Voer de volledige URL in, inclusief protocol (http/https) en domein, van "
329
+ "(statische) pagina's die je wil voegen bij die die door WordPress worden "
330
+ "gegenereerd. Geef eventueel een Priority-waarde tussen 0 en 1 met een spatie "
331
+ "gescheiden achter de URL. Begin iedere URL op een nieuwe regel."
 
332
 
333
+ #: ../includes/admin.php:443 ../includes/admin.php:973
334
+ msgid "Allowed domains"
335
+ msgstr "Toegestane domeinen"
336
 
337
+ #: ../includes/admin.php:444
338
+ msgid "Additional domains to allow in the XML Sitemaps:"
339
+ msgstr "Extra domeinen om in de XML Sitemap toe te staan:"
340
+
341
+ #: ../includes/admin.php:445
342
  #, php-format
343
  msgid ""
344
  "By default, only the domain %s as used in your WordPress site address is "
359
  "https), ieder op een nieuwe regel. Let op: als je een domein met www "
360
  "gebruikt dan worden URL's zonder www of met andere subdomeinen, gefilterd."
361
 
362
+ #: ../includes/admin.php:459
363
  #, php-format
364
  msgid ""
365
  "These settings control the Google News Sitemap generated by the %s plugin."
366
  msgstr ""
367
  "Deze instellingen beheersen de XML Sitemaps gegenereerd door de %s plugin."
368
 
369
+ #: ../includes/admin.php:459
370
  msgid ""
371
  "When you are done configuring and preparing your news content and you are "
372
  "convinced your site adheres to the <a href=\"https://support.google.com/news/"
382
  "com/news/publisher/troubleshooter/3179220?#ts=3179198\" target=\"_blank\">je "
383
  "site voor insluiting indienen</a>!"
384
 
385
+ #: ../includes/admin.php:470 ../includes/admin.php:992
386
+ msgid "Publication name"
387
+ msgstr "Publicatienaam"
388
+
389
+ #: ../includes/admin.php:471
390
  #, php-format
391
  msgid "By default, the general %s setting will be used."
392
  msgstr "Standaard wordt de algemene %s instelling gebruikt."
393
 
394
+ #: ../includes/admin.php:488
395
+ msgid ""
396
+ "Error: There where no valid post types found. Without at least one public "
397
+ "post type, a Google News Sitemap cannot be created by this plugin. Please "
398
+ "deselect the option Google News Sitemap at <a href=\"#xmlsf_sitemaps"
399
+ "\">Enable XML sitemaps</a> and choose another method."
400
+ msgstr ""
401
+
402
+ #: ../includes/admin.php:491 ../includes/admin.php:967
403
+ #: ../includes/admin.php:993
404
+ msgid "Include post types"
405
+ msgstr "Berichttypes bijsluiten"
406
+
407
+ #: ../includes/admin.php:517
408
+ #, php-format
409
+ msgid ""
410
+ "At least one post type must be selected. By default, the post type %s will "
411
+ "be used."
412
+ msgstr ""
413
+ "Er moet ten minste één post type zijn geselecteerd. Standaard wordt %s "
414
+ "gebruikt."
415
+
416
+ #: ../includes/admin.php:540
417
+ msgid "Limit to posts in these post categories:"
418
+ msgstr "Beperk tot berichten in deze bericht-categorieën:"
419
+
420
+ #: ../includes/admin.php:556
421
+ msgid ""
422
+ "If you wish to limit posts that will feature in your News Sitemap to certain "
423
+ "categories, select them here. Use the Ctrl/Cmd key plus click to select more "
424
+ "than one or to deselect. If no categories are selected, posts of all "
425
+ "categories will be included in your News Sitemap."
426
+ msgstr ""
427
+ "Als je berichten in je News Sitemap wil beperken tot bepaalde categorieën, "
428
+ "selecteer die hier. Gebruik de Ctrl/Cmd toets plus klik om meerdere te "
429
+ "selecteren of de selectie ongedaan te maken. Als er geen categorieën "
430
+ "geselecteerd zijn, worden artikelen niet gefilterd in je News Sitemap."
431
+
432
+ #: ../includes/admin.php:556
433
+ msgid ""
434
+ "Please be aware that limiting by post category will rule out all custom post "
435
+ "types that do not use post categories, even if you selected them to be "
436
+ "included (above)."
437
+ msgstr ""
438
+ "Let op dat beperken tot bepaalde categorieën alle artikelen van berichttypen "
439
+ "die geen bericht-categorieën gebruiken, uitsluit zelfs als je deze hebt "
440
+ "geselecteerd voor bijsluiting (boven)."
441
+
442
+ #: ../includes/admin.php:578
443
+ msgid ""
444
+ "Note: Google News prefers at most one image per article in the News Sitemap. "
445
+ "If multiple valid images are specified, the crawler will have to pick one "
446
+ "arbitrarily. Images in News Sitemaps should be in jpeg or png format."
447
+ msgstr ""
448
+ "Let op: Google Nieuws prefereert maximaal één afbeelding per bericht in de "
449
+ "News Sitemap. Bij meerder afbeeldingen zal de zoekmachine er willekeurig één "
450
+ "uitlichten. Afbeeldingen in News Sitemaps dienen van het jpeg of png formaat "
451
+ "te zijn."
452
+
453
+ #: ../includes/admin.php:590 ../includes/admin.php:996
454
  msgid "Access (&lt;access&gt; tag)"
455
  msgstr "Toegang (&lt;access&gt; tag)"
456
 
457
+ #: ../includes/admin.php:591
458
  #, php-format
459
  msgid ""
460
  "The &lt;access&gt; tag specifies whether an article is available to all "
465
  "(%1$s), of alleen via een gratis (%2$s) of betaalde inschrijving (%3$s) op "
466
  "je site."
467
 
468
+ #: ../includes/admin.php:591 ../includes/admin.php:598
469
+ #: ../includes/admin.php:604
470
  msgid "Registration"
471
  msgstr "Registratie"
472
 
473
+ #: ../includes/admin.php:591 ../includes/admin.php:599
474
+ #: ../includes/admin.php:605
475
  msgid "Subscription"
476
  msgstr "Abonnement"
477
 
478
+ #: ../includes/admin.php:596
479
  msgid "Tag normal posts as"
480
  msgstr "Normale artikelen taggen als"
481
 
482
+ #: ../includes/admin.php:603
483
  #, php-format
484
  msgid "Tag %s posts as"
485
  msgstr "%s artikelen taggen als"
486
 
487
+ #: ../includes/admin.php:610
488
  msgid ""
489
  "Note: The &lt;access&gt; tag is required when applicable. Do not leave it to "
490
  "Public when your content is not."
492
  "Let op: de &lt;access&gt; tag is verplicht wanneer van toepassing. Laat het "
493
  "niet op Public als je inhoud "
494
 
495
+ #: ../includes/admin.php:630 ../includes/admin.php:997
496
  msgid "Genres (&lt;genres&gt; tag)"
497
  msgstr "Genres (&lt;genres&gt; tag)"
498
 
499
+ #: ../includes/admin.php:631
500
  msgid ""
501
  "The &lt;genres&gt; tag specifies one or more properties for an article, "
502
  "namely, whether it is a press release, a blog post, an opinion, an op-ed "
506
  "of het een persbericht, een blog artikel, een mening, een zogenaamd op-ed "
507
  "stuk, gebruiker-gegenereerde inhoud, of satire is."
508
 
509
+ #: ../includes/admin.php:631
510
  msgid "You can assign Google News genres when writing a new post."
511
  msgstr ""
512
  "Je kunt Google News genres toewijzen bij het opstellen van een nieuw artikel."
513
 
514
+ #: ../includes/admin.php:642
515
  msgid "Default genre:"
516
  msgstr "Standaard genre:"
517
 
518
+ #: ../includes/admin.php:651
519
  msgid ""
520
  "Note: The &lt;genres&gt; tag is required when applicable and restricted to "
521
  "the list provided above."
523
  "Let op: de &lt;genres&gt; tag is verplicht wanneer van toepassing en "
524
  "gelimiteerd tot de bovenstaande lijst."
525
 
526
+ #: ../includes/admin.php:663 ../includes/admin.php:998
527
  msgid "Topics (&lt;keywords&gt; tag)"
528
  msgstr "Onderwerpen (&lt;keywords&gt; tag)"
529
 
530
+ #: ../includes/admin.php:664
531
  msgid ""
532
  "The &lt;keywords&gt; tag is used to help classify the articles you submit to "
533
  "Google News by <strong>topic</strong>."
535
  "De &lt;keywords&gt; tag wordt gebruikt om de bij Google News ingediende "
536
  "artikelen te classificeren naar <strong>onderwerp</strong>."
537
 
538
+ #: ../includes/admin.php:666
539
  #, php-format
540
  msgid "Use %s for topics."
541
  msgstr "Gebruik %s voor onderwerpen."
542
 
543
+ #: ../includes/admin.php:673
544
  msgid "Default topic(s):"
545
  msgstr "Standaard onderwerpen:"
546
 
547
+ #: ../includes/admin.php:675 ../includes/admin.php:698
548
  msgid "Separate with a comma."
549
  msgstr "Scheiden met een komma."
550
 
551
+ #: ../includes/admin.php:679
552
  msgid ""
553
  "Keywords may be drawn from, but are not limited to, the list of <a href="
554
  "\"http://www.google.com/support/news_pub/bin/answer.py?answer=116037\" "
558
  "van <a href=\"http://www.google.com/support/news_pub/bin/answer.py?"
559
  "answer=116037\" target=\"_blank\">bestaande Google News keywords</a>."
560
 
561
+ #: ../includes/admin.php:689 ../includes/admin.php:999
562
  msgid "Locations (&lt;geo_locations&gt; tag)"
563
  msgstr "Locaties (&lt;geo_locations&gt; tag)"
564
 
565
+ #: ../includes/admin.php:690
566
  msgid ""
567
  "The &lt;geo_locations&gt; tag is used identify the geographic location of "
568
  "your articles."
570
  "De &lt;geo_locations&gt; tag dient bij het bepalen van de geografische "
571
  "locatie van je artikelen."
572
 
573
+ #: ../includes/admin.php:690
574
  msgid "You can assign locations when writing a new post."
575
  msgstr "Je kunt de locatie bij het schrijven van een nieuw artikel instellen."
576
 
577
+ #: ../includes/admin.php:696
578
  msgid "Default location:"
579
  msgstr "Standaardlocatie:"
580
 
581
+ #: ../includes/admin.php:700
582
  msgid ""
583
  "You should list location entities from smallest entity to largest. For "
584
  "example: <code>Detroit, Michigan, USA</code> or <code>Rhône-Alpes, France</"
588
  "Bijvoorbeeld: <code>Detroit, Michigan, USA</code> of <code>Rhône-Alpes, "
589
  "France</code>."
590
 
591
+ #: ../includes/admin.php:872 ../includes/admin.php:964
592
  msgid "XML Sitemap"
593
  msgstr "XML Sitemap"
594
 
595
+ #: ../includes/admin.php:904
596
  msgid "Exclude from XML Sitemap"
597
  msgstr "Uit in de XML Sitemap houden."
598
 
599
+ #: ../includes/admin.php:910
600
  #, php-format
601
  msgid "Leave empty for automatic Priority as configured on %1$s > %2$s."
602
  msgstr ""
603
  "Laat leeg voor automatische Priority zoals geconfigureerd op %1$s > %2$s."
604
 
605
+ #: ../includes/admin.php:949
606
  msgid "Enable XML sitemaps"
607
  msgstr "XML sitemaps activeren"
608
 
609
+ #: ../includes/admin.php:970
 
 
 
 
 
 
 
 
610
  msgid "Include taxonomies"
611
  msgstr "Taxonomieën bijsluiten"
612
 
613
+ #~ msgid "Ping on Publish"
614
+ #~ msgstr "Ping bij Publiceren"
 
 
 
 
 
615
 
616
+ #~ msgid "Disabling and reenabling the %s plugin will have the same effect."
617
+ #~ msgstr "Uit- en weer inschakelen van de %s plugin heeft hetzelfde effect."
 
 
 
 
 
 
 
 
 
618
 
619
+ #~ msgid "No categories found."
620
+ #~ msgstr "Geen categoriën gevonden."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
621
 
622
  #~ msgid ""
623
  #~ "XML Sitemaps will be disabled automatically when you check the option "
languages/xml-sitemap-feed-xx_XX.po CHANGED
@@ -1,9 +1,9 @@
1
  msgid ""
2
  msgstr ""
3
- "Project-Id-Version: XML Sitemap and Google News feeds/4.0\n"
4
  "Report-Msgid-Bugs-To: \n"
5
- "POT-Creation-Date: 2013-09-01 16:38+0100\n"
6
- "PO-Revision-Date: 2013-09-01 16:39+0100\n"
7
  "Last-Translator: RavanH <ravanhagen@gmail.com>\n"
8
  "Language-Team: \n"
9
  "MIME-Version: 1.0\n"
@@ -12,6 +12,34 @@ msgstr ""
12
  "X-Poedit-KeywordsList: __;_e;_n\n"
13
  "X-Poedit-SourceCharset: UTF-8\n"
14
  "X-Generator: Poedit 1.5.4\n"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
15
 
16
  #: ../includes/admin.php:19
17
  msgid "XML Sitemaps"
@@ -21,7 +49,7 @@ msgstr ""
21
  msgid "XML Sitemap Index"
22
  msgstr ""
23
 
24
- #: ../includes/admin.php:25 ../includes/admin.php:820
25
  msgid "Google News Sitemap"
26
  msgstr ""
27
 
@@ -45,117 +73,128 @@ msgstr ""
45
  msgid "Ping-O-Matic"
46
  msgstr ""
47
 
48
- #: ../includes/admin.php:89 ../includes/admin.php:778
49
- msgid "Ping on Publish"
 
50
  msgstr ""
51
 
52
- #: ../includes/admin.php:113
53
- #, php-format
54
- msgid "Successfully pinged for %1$s on %2$s GMT."
55
  msgstr ""
56
 
57
- #: ../includes/admin.php:123
58
  #, php-format
59
- msgid "Rules to append to the %s generated by WordPress."
60
  msgstr ""
61
 
62
- #: ../includes/admin.php:124
 
 
 
 
 
63
  msgid ""
64
  "Only add rules here when you know what you are doing, otherwise you might "
65
  "break search engine access to your site."
66
  msgstr ""
67
 
68
- #: ../includes/admin.php:124
69
- msgid ""
70
- "These rules will not have effect when you are using a static robots.txt file."
 
 
 
71
  msgstr ""
72
 
73
- #: ../includes/admin.php:131
74
  msgid ""
75
- "Clear all XML Sitemap Feed options from the database and start fresh with "
76
- "the default settings."
77
  msgstr ""
78
 
79
- #: ../includes/admin.php:133
 
80
  #, php-format
81
- msgid "Disabling and reenabling the %s plugin will have the same effect."
82
  msgstr ""
83
 
84
- #: ../includes/admin.php:133 ../includes/admin.php:141
85
- #: ../includes/admin.php:352
 
86
  msgid "XML Sitemap & Google News Feeds"
87
  msgstr ""
88
 
89
- #: ../includes/admin.php:141 ../includes/admin.php:352
90
  #, php-format
91
- msgid "Donate to keep the free %s plugin development & support going!"
92
  msgstr ""
93
 
94
- #: ../includes/admin.php:141
95
  #, php-format
96
- msgid "These settings control the XML Sitemaps generated by the %s plugin."
97
  msgstr ""
98
 
99
- #: ../includes/admin.php:150
100
  msgid "XML Sitemaps for post types"
101
  msgstr ""
102
 
103
- #: ../includes/admin.php:189
104
  msgid "Year"
105
  msgstr ""
106
 
107
- #: ../includes/admin.php:190
108
  msgid "Month"
109
  msgstr ""
110
 
111
- #: ../includes/admin.php:194
112
  msgid "Split by"
113
  msgstr ""
114
 
115
- #: ../includes/admin.php:204
116
  msgid ""
117
  "Split by year if you experience errors or slow sitemaps. In very rare cases, "
118
  "split by month is needed."
119
  msgstr ""
120
 
121
- #: ../includes/admin.php:209 ../includes/admin.php:725
122
  msgid "Priority"
123
  msgstr ""
124
 
125
- #: ../includes/admin.php:211
126
  msgid "Priority can be overridden on individual posts."
127
  msgstr ""
128
 
129
- #: ../includes/admin.php:216
130
  msgid ""
131
  "Automatically adjusts Priority according to relative age and comment count."
132
  msgstr ""
133
 
134
- #: ../includes/admin.php:216
135
  msgid ""
136
  "Sticky posts will not be subject to reduction by age. Individual posts with "
137
  "fixed Priority will always keep that value."
138
  msgstr ""
139
 
140
- #: ../includes/admin.php:221
141
  msgid "Update Lastmod and Changefreq on comments."
142
  msgstr ""
143
 
144
- #: ../includes/admin.php:221
145
  msgid ""
146
  "Set this if discussion on your site warrants reindexation upon each new "
147
  "comment."
148
  msgstr ""
149
 
150
- #: ../includes/admin.php:225 ../includes/admin.php:371
151
  msgid "Add image tags for"
152
  msgstr ""
153
 
154
- #: ../includes/admin.php:233 ../includes/admin.php:378
155
  msgid "Attached images"
156
  msgstr ""
157
 
158
- #: ../includes/admin.php:243
159
  msgid ""
160
  "Priority settings do not affect ranking in search results in any way. They "
161
  "are only meant to suggest search engines which URLs to index first. Once a "
@@ -163,29 +202,29 @@ msgid ""
163
  "updated."
164
  msgstr ""
165
 
166
- #: ../includes/admin.php:243
167
  msgid ""
168
  "Maximum Priority (1.0) is reserved for the front page, individual posts and, "
169
  "when allowed, posts with high comment count."
170
  msgstr ""
171
 
172
- #: ../includes/admin.php:243
173
  msgid ""
174
  "Priority values are taken as relative values. Setting all to the same (high) "
175
  "value is pointless."
176
  msgstr ""
177
 
178
- #: ../includes/admin.php:294
179
  msgid "XML Sitemaps for taxonomies"
180
  msgstr ""
181
 
182
- #: ../includes/admin.php:300
183
  msgid ""
184
  "It is generally not recommended to include taxonomy pages, unless their "
185
  "content brings added value."
186
  msgstr ""
187
 
188
- #: ../includes/admin.php:300
189
  msgid ""
190
  "For example, when you use category descriptions with information that is not "
191
  "present elsewhere on your site or if taxonomy pages list posts with an "
@@ -196,37 +235,62 @@ msgid ""
196
  "disallowing indexation of taxonomies."
197
  msgstr ""
198
 
199
- #: ../includes/admin.php:300
200
  #, php-format
201
  msgid ""
202
  "You can do this by adding specific robots.txt rules in the %s field above."
203
  msgstr ""
204
 
205
- #: ../includes/admin.php:300 ../includes/admin.php:789
206
- msgid "Additional robots.txt rules"
207
  msgstr ""
208
 
209
- #: ../includes/admin.php:315
210
- msgid "No taxonomies available for the currently included post types."
211
  msgstr ""
212
 
213
- #: ../includes/admin.php:331
214
- msgid "Additional URLs to append to the XML Sitemap."
215
  msgstr ""
216
 
217
- #: ../includes/admin.php:332
218
  msgid ""
219
- "Add the full URL, including protocol (http/https) and domain, of any static "
220
- "page or WordPress page that you want to append to the ones already included "
221
- "by the settings above. Optionally add a priority value between 0 and 1, "
222
- "separated with a space, after the URL. Start each URL on a new line."
223
  msgstr ""
224
 
225
- #: ../includes/admin.php:341
226
- msgid "Additional domains to allow in the XML Sitemap."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
227
  msgstr ""
228
 
229
- #: ../includes/admin.php:342
 
 
 
 
230
  #, php-format
231
  msgid ""
232
  "By default, only the domain %s as used in your WordPress site address is "
@@ -239,13 +303,13 @@ msgid ""
239
  "will be filtered."
240
  msgstr ""
241
 
242
- #: ../includes/admin.php:352
243
  #, php-format
244
  msgid ""
245
  "These settings control the Google News Sitemap generated by the %s plugin."
246
  msgstr ""
247
 
248
- #: ../includes/admin.php:352
249
  msgid ""
250
  "When you are done configuring and preparing your news content and you are "
251
  "convinced your site adheres to the <a href=\"https://support.google.com/news/"
@@ -255,16 +319,66 @@ msgid ""
255
  "site for inclusion</a>!"
256
  msgstr ""
257
 
258
- #: ../includes/admin.php:362
 
 
 
 
259
  #, php-format
260
  msgid "By default, the general %s setting will be used."
261
  msgstr ""
262
 
263
- #: ../includes/admin.php:392 ../includes/admin.php:826
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
264
  msgid "Access (&lt;access&gt; tag)"
265
  msgstr ""
266
 
267
- #: ../includes/admin.php:393
268
  #, php-format
269
  msgid ""
270
  "The &lt;access&gt; tag specifies whether an article is available to all "
@@ -272,175 +386,128 @@ msgid ""
272
  "(%3$s) to your site."
273
  msgstr ""
274
 
275
- #: ../includes/admin.php:393 ../includes/admin.php:400
276
- #: ../includes/admin.php:413
277
  msgid "Registration"
278
  msgstr ""
279
 
280
- #: ../includes/admin.php:393 ../includes/admin.php:401
281
- #: ../includes/admin.php:414
282
  msgid "Subscription"
283
  msgstr ""
284
 
285
- #: ../includes/admin.php:398
286
  msgid "Tag normal posts as"
287
  msgstr ""
288
 
289
- #: ../includes/admin.php:412
290
  #, php-format
291
  msgid "Tag %s posts as"
292
  msgstr ""
293
 
294
- #: ../includes/admin.php:419
295
  msgid ""
296
  "Note: The &lt;access&gt; tag is required when applicable. Do not leave it to "
297
  "Public when your content is not."
298
  msgstr ""
299
 
300
- #: ../includes/admin.php:439 ../includes/admin.php:827
301
  msgid "Genres (&lt;genres&gt; tag)"
302
  msgstr ""
303
 
304
- #: ../includes/admin.php:440
305
  msgid ""
306
  "The &lt;genres&gt; tag specifies one or more properties for an article, "
307
  "namely, whether it is a press release, a blog post, an opinion, an op-ed "
308
  "piece, user-generated content, or satire."
309
  msgstr ""
310
 
311
- #: ../includes/admin.php:440
312
  msgid "You can assign Google News genres when writing a new post."
313
  msgstr ""
314
 
315
- #: ../includes/admin.php:451
316
  msgid "Default genre:"
317
  msgstr ""
318
 
319
- #: ../includes/admin.php:460
320
  msgid ""
321
  "Note: The &lt;genres&gt; tag is required when applicable and restricted to "
322
  "the list provided above."
323
  msgstr ""
324
 
325
- #: ../includes/admin.php:472 ../includes/admin.php:828
326
  msgid "Topics (&lt;keywords&gt; tag)"
327
  msgstr ""
328
 
329
- #: ../includes/admin.php:473
330
  msgid ""
331
  "The &lt;keywords&gt; tag is used to help classify the articles you submit to "
332
  "Google News by <strong>topic</strong>."
333
  msgstr ""
334
 
335
- #: ../includes/admin.php:475
336
  #, php-format
337
  msgid "Use %s for topics."
338
  msgstr ""
339
 
340
- #: ../includes/admin.php:480
341
  msgid "Default topic(s):"
342
  msgstr ""
343
 
344
- #: ../includes/admin.php:482 ../includes/admin.php:503
345
  msgid "Separate with a comma."
346
  msgstr ""
347
 
348
- #: ../includes/admin.php:484
349
  msgid ""
350
  "Keywords may be drawn from, but are not limited to, the list of <a href="
351
  "\"http://www.google.com/support/news_pub/bin/answer.py?answer=116037\" "
352
  "target=\"_blank\">existing Google News keywords</a>."
353
  msgstr ""
354
 
355
- #: ../includes/admin.php:494 ../includes/admin.php:829
356
  msgid "Locations (&lt;geo_locations&gt; tag)"
357
  msgstr ""
358
 
359
- #: ../includes/admin.php:495
360
  msgid ""
361
  "The &lt;geo_locations&gt; tag is used identify the geographic location of "
362
  "your articles."
363
  msgstr ""
364
 
365
- #: ../includes/admin.php:495
366
  msgid "You can assign locations when writing a new post."
367
  msgstr ""
368
 
369
- #: ../includes/admin.php:501
370
  msgid "Default location:"
371
  msgstr ""
372
 
373
- #: ../includes/admin.php:505
374
  msgid ""
375
  "You should list location entities from smallest entity to largest. For "
376
  "example: <code>Detroit, Michigan, USA</code> or <code>Rhône-Alpes, France</"
377
  "code>."
378
  msgstr ""
379
 
380
- #: ../includes/admin.php:689 ../includes/admin.php:798
381
  msgid "XML Sitemap"
382
  msgstr ""
383
 
384
- #: ../includes/admin.php:721
385
  msgid "Exclude from XML Sitemap"
386
  msgstr ""
387
 
388
- #: ../includes/admin.php:727
389
  #, php-format
390
  msgid "Leave empty for automatic Priority as configured on %1$s > %2$s."
391
  msgstr ""
392
 
393
- #: ../includes/admin.php:773
394
  msgid "Enable XML sitemaps"
395
  msgstr ""
396
 
397
- #: ../includes/admin.php:794
398
- msgid "Reset XML sitemaps"
399
- msgstr ""
400
-
401
- #: ../includes/admin.php:801
402
- msgid "Include post types"
403
- msgstr ""
404
-
405
- #: ../includes/admin.php:804
406
  msgid "Include taxonomies"
407
  msgstr ""
408
-
409
- #: ../includes/admin.php:807
410
- msgid "Include custom URLs"
411
- msgstr ""
412
-
413
- #: ../includes/admin.php:811
414
- msgid "Additional allowed domains"
415
- msgstr ""
416
-
417
- #: ../includes/admin.php:824
418
- msgid "Publication name"
419
- msgstr ""
420
-
421
- #: ../includes/core.php:1059
422
- msgid "Google News Genres"
423
- msgstr ""
424
-
425
- #: ../includes/core.php:1060
426
- msgid "Google News Genre"
427
- msgstr ""
428
-
429
- #: ../includes/core.php:1078
430
- msgid "Google News Country"
431
- msgstr ""
432
-
433
- #: ../includes/core.php:1080 ../includes/core.php:1099
434
- #: ../includes/core.php:1118
435
- msgid ""
436
- "Only one allowed. Must be consistent with other Google News location "
437
- "entities (if set)."
438
- msgstr ""
439
-
440
- #: ../includes/core.php:1097
441
- msgid "Google News State/Province"
442
- msgstr ""
443
-
444
- #: ../includes/core.php:1116
445
- msgid "Google News City"
446
- msgstr ""
1
  msgid ""
2
  msgstr ""
3
+ "Project-Id-Version: XML Sitemap and Google News feeds/4.4\n"
4
  "Report-Msgid-Bugs-To: \n"
5
+ "POT-Creation-Date: 2015-01-05 04:05+0100\n"
6
+ "PO-Revision-Date: 2015-01-05 04:27+0100\n"
7
  "Last-Translator: RavanH <ravanhagen@gmail.com>\n"
8
  "Language-Team: \n"
9
  "MIME-Version: 1.0\n"
12
  "X-Poedit-KeywordsList: __;_e;_n\n"
13
  "X-Poedit-SourceCharset: UTF-8\n"
14
  "X-Generator: Poedit 1.5.4\n"
15
+ "Language: xx\n"
16
+
17
+ #: ../includes/core.php:1186
18
+ msgid "Google News Genres"
19
+ msgstr ""
20
+
21
+ #: ../includes/core.php:1187
22
+ msgid "Google News Genre"
23
+ msgstr ""
24
+
25
+ #: ../includes/core.php:1205
26
+ msgid "Google News Country"
27
+ msgstr ""
28
+
29
+ #: ../includes/core.php:1207 ../includes/core.php:1226
30
+ #: ../includes/core.php:1245
31
+ msgid ""
32
+ "Only one allowed. Must be consistent with other Google News location "
33
+ "entities (if set)."
34
+ msgstr ""
35
+
36
+ #: ../includes/core.php:1224
37
+ msgid "Google News State/Province"
38
+ msgstr ""
39
+
40
+ #: ../includes/core.php:1243
41
+ msgid "Google News City"
42
+ msgstr ""
43
 
44
  #: ../includes/admin.php:19
45
  msgid "XML Sitemaps"
49
  msgid "XML Sitemap Index"
50
  msgstr ""
51
 
52
+ #: ../includes/admin.php:25 ../includes/admin.php:988
53
  msgid "Google News Sitemap"
54
  msgstr ""
55
 
73
  msgid "Ping-O-Matic"
74
  msgstr ""
75
 
76
+ #: ../includes/admin.php:136
77
+ #, php-format
78
+ msgid "Successfully sent %1$s on %2$s."
79
  msgstr ""
80
 
81
+ #: ../includes/admin.php:197 ../includes/admin.php:387
82
+ #: ../includes/admin.php:955
83
+ msgid "Additional robots.txt rules"
84
  msgstr ""
85
 
86
+ #: ../includes/admin.php:198
87
  #, php-format
88
+ msgid "Rules that will be appended to the %s generated by WordPress:"
89
  msgstr ""
90
 
91
+ #: ../includes/admin.php:199
92
+ msgid ""
93
+ "These rules will not have effect when you are using a static robots.txt file."
94
+ msgstr ""
95
+
96
+ #: ../includes/admin.php:199
97
  msgid ""
98
  "Only add rules here when you know what you are doing, otherwise you might "
99
  "break search engine access to your site."
100
  msgstr ""
101
 
102
+ #: ../includes/admin.php:205 ../includes/admin.php:960
103
+ msgid "Reset XML sitemaps"
104
+ msgstr ""
105
+
106
+ #: ../includes/admin.php:207
107
+ msgid "Clear all XML Sitemap Feed settings from the database."
108
  msgstr ""
109
 
110
+ #: ../includes/admin.php:210
111
  msgid ""
112
+ "You can use this to start fresh with the default settings or to remove all "
113
+ "XML Sitemap and Google News settings and taxonomy terms before uninstalling."
114
  msgstr ""
115
 
116
+ #: ../includes/admin.php:219 ../includes/admin.php:220
117
+ #: ../includes/admin.php:457 ../includes/admin.php:458
118
  #, php-format
119
+ msgid "Donate to keep the free %s plugin development & support going!"
120
  msgstr ""
121
 
122
+ #: ../includes/admin.php:219 ../includes/admin.php:220
123
+ #: ../includes/admin.php:221 ../includes/admin.php:457
124
+ #: ../includes/admin.php:458 ../includes/admin.php:459
125
  msgid "XML Sitemap & Google News Feeds"
126
  msgstr ""
127
 
128
+ #: ../includes/admin.php:221
129
  #, php-format
130
+ msgid "These settings control the XML Sitemaps generated by the %s plugin."
131
  msgstr ""
132
 
133
+ #: ../includes/admin.php:222 ../includes/admin.php:460
134
  #, php-format
135
+ msgid "For ping options, go to %s."
136
  msgstr ""
137
 
138
+ #: ../includes/admin.php:235
139
  msgid "XML Sitemaps for post types"
140
  msgstr ""
141
 
142
+ #: ../includes/admin.php:274
143
  msgid "Year"
144
  msgstr ""
145
 
146
+ #: ../includes/admin.php:275
147
  msgid "Month"
148
  msgstr ""
149
 
150
+ #: ../includes/admin.php:279
151
  msgid "Split by"
152
  msgstr ""
153
 
154
+ #: ../includes/admin.php:289
155
  msgid ""
156
  "Split by year if you experience errors or slow sitemaps. In very rare cases, "
157
  "split by month is needed."
158
  msgstr ""
159
 
160
+ #: ../includes/admin.php:294 ../includes/admin.php:908
161
  msgid "Priority"
162
  msgstr ""
163
 
164
+ #: ../includes/admin.php:296
165
  msgid "Priority can be overridden on individual posts."
166
  msgstr ""
167
 
168
+ #: ../includes/admin.php:301
169
  msgid ""
170
  "Automatically adjusts Priority according to relative age and comment count."
171
  msgstr ""
172
 
173
+ #: ../includes/admin.php:301
174
  msgid ""
175
  "Sticky posts will not be subject to reduction by age. Individual posts with "
176
  "fixed Priority will always keep that value."
177
  msgstr ""
178
 
179
+ #: ../includes/admin.php:306
180
  msgid "Update Lastmod and Changefreq on comments."
181
  msgstr ""
182
 
183
+ #: ../includes/admin.php:306
184
  msgid ""
185
  "Set this if discussion on your site warrants reindexation upon each new "
186
  "comment."
187
  msgstr ""
188
 
189
+ #: ../includes/admin.php:310 ../includes/admin.php:568
190
  msgid "Add image tags for"
191
  msgstr ""
192
 
193
+ #: ../includes/admin.php:318 ../includes/admin.php:575
194
  msgid "Attached images"
195
  msgstr ""
196
 
197
+ #: ../includes/admin.php:328
198
  msgid ""
199
  "Priority settings do not affect ranking in search results in any way. They "
200
  "are only meant to suggest search engines which URLs to index first. Once a "
202
  "updated."
203
  msgstr ""
204
 
205
+ #: ../includes/admin.php:329
206
  msgid ""
207
  "Maximum Priority (1.0) is reserved for the front page, individual posts and, "
208
  "when allowed, posts with high comment count."
209
  msgstr ""
210
 
211
+ #: ../includes/admin.php:329
212
  msgid ""
213
  "Priority values are taken as relative values. Setting all to the same (high) "
214
  "value is pointless."
215
  msgstr ""
216
 
217
+ #: ../includes/admin.php:379
218
  msgid "XML Sitemaps for taxonomies"
219
  msgstr ""
220
 
221
+ #: ../includes/admin.php:385
222
  msgid ""
223
  "It is generally not recommended to include taxonomy pages, unless their "
224
  "content brings added value."
225
  msgstr ""
226
 
227
+ #: ../includes/admin.php:386
228
  msgid ""
229
  "For example, when you use category descriptions with information that is not "
230
  "present elsewhere on your site or if taxonomy pages list posts with an "
235
  "disallowing indexation of taxonomies."
236
  msgstr ""
237
 
238
+ #: ../includes/admin.php:387
239
  #, php-format
240
  msgid ""
241
  "You can do this by adding specific robots.txt rules in the %s field above."
242
  msgstr ""
243
 
244
+ #: ../includes/admin.php:402
245
+ msgid "No taxonomies available for the currently included post types."
246
  msgstr ""
247
 
248
+ #: ../includes/admin.php:410 ../includes/admin.php:979
249
+ msgid "Include custom XML Sitemaps"
250
  msgstr ""
251
 
252
+ #: ../includes/admin.php:411
253
+ msgid "Additional XML Sitemaps to append to the main XML Sitemap Index:"
254
  msgstr ""
255
 
256
+ #: ../includes/admin.php:413
257
  msgid ""
258
+ "Add the full URL, including protocol (http/https) and domain, of any XML "
259
+ "Sitemap that you want to append to the Sitemap Index. Start each URL on a "
260
+ "new line."
 
261
  msgstr ""
262
 
263
+ #: ../includes/admin.php:413
264
+ msgid ""
265
+ "Only valid sitemaps are allowed in the Sitemap Index. Use your Google/Bing "
266
+ "Webmaster Tools to verify!"
267
+ msgstr ""
268
+
269
+ #: ../includes/admin.php:430 ../includes/admin.php:976
270
+ msgid "Include custom URLs"
271
+ msgstr ""
272
+
273
+ #: ../includes/admin.php:431
274
+ msgid "Additional URLs to append in an extra XML Sitemap:"
275
+ msgstr ""
276
+
277
+ #: ../includes/admin.php:433
278
+ msgid ""
279
+ "Add the full URL, including protocol (http/https) and domain, of any "
280
+ "(static) page that you want to append to the ones already included by "
281
+ "WordPress. Optionally add a priority value between 0 and 1, separated with a "
282
+ "space after the URL. Start each URL on a new line."
283
+ msgstr ""
284
+
285
+ #: ../includes/admin.php:443 ../includes/admin.php:973
286
+ msgid "Allowed domains"
287
  msgstr ""
288
 
289
+ #: ../includes/admin.php:444
290
+ msgid "Additional domains to allow in the XML Sitemaps:"
291
+ msgstr ""
292
+
293
+ #: ../includes/admin.php:445
294
  #, php-format
295
  msgid ""
296
  "By default, only the domain %s as used in your WordPress site address is "
303
  "will be filtered."
304
  msgstr ""
305
 
306
+ #: ../includes/admin.php:459
307
  #, php-format
308
  msgid ""
309
  "These settings control the Google News Sitemap generated by the %s plugin."
310
  msgstr ""
311
 
312
+ #: ../includes/admin.php:459
313
  msgid ""
314
  "When you are done configuring and preparing your news content and you are "
315
  "convinced your site adheres to the <a href=\"https://support.google.com/news/"
319
  "site for inclusion</a>!"
320
  msgstr ""
321
 
322
+ #: ../includes/admin.php:470 ../includes/admin.php:992
323
+ msgid "Publication name"
324
+ msgstr ""
325
+
326
+ #: ../includes/admin.php:471
327
  #, php-format
328
  msgid "By default, the general %s setting will be used."
329
  msgstr ""
330
 
331
+ #: ../includes/admin.php:488
332
+ msgid ""
333
+ "Error: There where no valid post types found. Without at least one public "
334
+ "post type, a Google News Sitemap cannot be created by this plugin. Please "
335
+ "deselect the option Google News Sitemap at <a href=\"#xmlsf_sitemaps"
336
+ "\">Enable XML sitemaps</a> and choose another method."
337
+ msgstr ""
338
+
339
+ #: ../includes/admin.php:491 ../includes/admin.php:967
340
+ #: ../includes/admin.php:993
341
+ msgid "Include post types"
342
+ msgstr ""
343
+
344
+ #: ../includes/admin.php:517
345
+ #, php-format
346
+ msgid ""
347
+ "At least one post type must be selected. By default, the post type %s will "
348
+ "be used."
349
+ msgstr ""
350
+
351
+ #: ../includes/admin.php:540
352
+ msgid "Limit to posts in these post categories:"
353
+ msgstr ""
354
+
355
+ #: ../includes/admin.php:556
356
+ msgid ""
357
+ "If you wish to limit posts that will feature in your News Sitemap to certain "
358
+ "categories, select them here. Use the Ctrl/Cmd key plus click to select more "
359
+ "than one or to deselect. If no categories are selected, posts of all "
360
+ "categories will be included in your News Sitemap."
361
+ msgstr ""
362
+
363
+ #: ../includes/admin.php:556
364
+ msgid ""
365
+ "Please be aware that limiting by post category will rule out all custom post "
366
+ "types that do not use post categories, even if you selected them to be "
367
+ "included (above)."
368
+ msgstr ""
369
+
370
+ #: ../includes/admin.php:578
371
+ msgid ""
372
+ "Note: Google News prefers at most one image per article in the News Sitemap. "
373
+ "If multiple valid images are specified, the crawler will have to pick one "
374
+ "arbitrarily. Images in News Sitemaps should be in jpeg or png format."
375
+ msgstr ""
376
+
377
+ #: ../includes/admin.php:590 ../includes/admin.php:996
378
  msgid "Access (&lt;access&gt; tag)"
379
  msgstr ""
380
 
381
+ #: ../includes/admin.php:591
382
  #, php-format
383
  msgid ""
384
  "The &lt;access&gt; tag specifies whether an article is available to all "
386
  "(%3$s) to your site."
387
  msgstr ""
388
 
389
+ #: ../includes/admin.php:591 ../includes/admin.php:598
390
+ #: ../includes/admin.php:604
391
  msgid "Registration"
392
  msgstr ""
393
 
394
+ #: ../includes/admin.php:591 ../includes/admin.php:599
395
+ #: ../includes/admin.php:605
396
  msgid "Subscription"
397
  msgstr ""
398
 
399
+ #: ../includes/admin.php:596
400
  msgid "Tag normal posts as"
401
  msgstr ""
402
 
403
+ #: ../includes/admin.php:603
404
  #, php-format
405
  msgid "Tag %s posts as"
406
  msgstr ""
407
 
408
+ #: ../includes/admin.php:610
409
  msgid ""
410
  "Note: The &lt;access&gt; tag is required when applicable. Do not leave it to "
411
  "Public when your content is not."
412
  msgstr ""
413
 
414
+ #: ../includes/admin.php:630 ../includes/admin.php:997
415
  msgid "Genres (&lt;genres&gt; tag)"
416
  msgstr ""
417
 
418
+ #: ../includes/admin.php:631
419
  msgid ""
420
  "The &lt;genres&gt; tag specifies one or more properties for an article, "
421
  "namely, whether it is a press release, a blog post, an opinion, an op-ed "
422
  "piece, user-generated content, or satire."
423
  msgstr ""
424
 
425
+ #: ../includes/admin.php:631
426
  msgid "You can assign Google News genres when writing a new post."
427
  msgstr ""
428
 
429
+ #: ../includes/admin.php:642
430
  msgid "Default genre:"
431
  msgstr ""
432
 
433
+ #: ../includes/admin.php:651
434
  msgid ""
435
  "Note: The &lt;genres&gt; tag is required when applicable and restricted to "
436
  "the list provided above."
437
  msgstr ""
438
 
439
+ #: ../includes/admin.php:663 ../includes/admin.php:998
440
  msgid "Topics (&lt;keywords&gt; tag)"
441
  msgstr ""
442
 
443
+ #: ../includes/admin.php:664
444
  msgid ""
445
  "The &lt;keywords&gt; tag is used to help classify the articles you submit to "
446
  "Google News by <strong>topic</strong>."
447
  msgstr ""
448
 
449
+ #: ../includes/admin.php:666
450
  #, php-format
451
  msgid "Use %s for topics."
452
  msgstr ""
453
 
454
+ #: ../includes/admin.php:673
455
  msgid "Default topic(s):"
456
  msgstr ""
457
 
458
+ #: ../includes/admin.php:675 ../includes/admin.php:698
459
  msgid "Separate with a comma."
460
  msgstr ""
461
 
462
+ #: ../includes/admin.php:679
463
  msgid ""
464
  "Keywords may be drawn from, but are not limited to, the list of <a href="
465
  "\"http://www.google.com/support/news_pub/bin/answer.py?answer=116037\" "
466
  "target=\"_blank\">existing Google News keywords</a>."
467
  msgstr ""
468
 
469
+ #: ../includes/admin.php:689 ../includes/admin.php:999
470
  msgid "Locations (&lt;geo_locations&gt; tag)"
471
  msgstr ""
472
 
473
+ #: ../includes/admin.php:690
474
  msgid ""
475
  "The &lt;geo_locations&gt; tag is used identify the geographic location of "
476
  "your articles."
477
  msgstr ""
478
 
479
+ #: ../includes/admin.php:690
480
  msgid "You can assign locations when writing a new post."
481
  msgstr ""
482
 
483
+ #: ../includes/admin.php:696
484
  msgid "Default location:"
485
  msgstr ""
486
 
487
+ #: ../includes/admin.php:700
488
  msgid ""
489
  "You should list location entities from smallest entity to largest. For "
490
  "example: <code>Detroit, Michigan, USA</code> or <code>Rhône-Alpes, France</"
491
  "code>."
492
  msgstr ""
493
 
494
+ #: ../includes/admin.php:872 ../includes/admin.php:964
495
  msgid "XML Sitemap"
496
  msgstr ""
497
 
498
+ #: ../includes/admin.php:904
499
  msgid "Exclude from XML Sitemap"
500
  msgstr ""
501
 
502
+ #: ../includes/admin.php:910
503
  #, php-format
504
  msgid "Leave empty for automatic Priority as configured on %1$s > %2$s."
505
  msgstr ""
506
 
507
+ #: ../includes/admin.php:949
508
  msgid "Enable XML sitemaps"
509
  msgstr ""
510
 
511
+ #: ../includes/admin.php:970
 
 
 
 
 
 
 
 
512
  msgid "Include taxonomies"
513
  msgstr ""
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
languages/xml-sitemap-feed.pot CHANGED
@@ -1,23 +1,49 @@
1
  msgid ""
2
  msgstr ""
3
- "Project-Id-Version: XML Sitemap and Google News feeds/4.0\n"
4
  "Report-Msgid-Bugs-To: \n"
5
- "POT-Creation-Date: 2013-09-01 16:38+0100\n"
6
- "PO-Revision-Date: 2013-09-01 16:39+0100\n"
7
  "Last-Translator: RavanH <ravanhagen@gmail.com>\n"
8
  "Language-Team: <ravanhagen@gmail.com>\n"
 
9
  "MIME-Version: 1.0\n"
10
  "Content-Type: text/plain; charset=UTF-8\n"
11
  "Content-Transfer-Encoding: 8bit\n"
12
- "X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;"
13
- "_n_noop:1,2;_c;_nc:4c,1,2;_x:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2;_ex:1,2c;"
14
- "esc_attr__;esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_eesc_html_x:1,2c\n"
15
  "X-Poedit-Basepath: .\n"
16
  "X-Poedit-SourceCharset: UTF-8\n"
17
  "X-Generator: Poedit 1.5.4\n"
18
  "Plural-Forms: nplurals=2; plural=(n != 1);\n"
19
  "X-Poedit-SearchPath-0: ..\n"
20
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
21
  #: ../includes/admin.php:19
22
  msgid "XML Sitemaps"
23
  msgstr ""
@@ -26,7 +52,7 @@ msgstr ""
26
  msgid "XML Sitemap Index"
27
  msgstr ""
28
 
29
- #: ../includes/admin.php:25 ../includes/admin.php:820
30
  msgid "Google News Sitemap"
31
  msgstr ""
32
 
@@ -50,117 +76,128 @@ msgstr ""
50
  msgid "Ping-O-Matic"
51
  msgstr ""
52
 
53
- #: ../includes/admin.php:89 ../includes/admin.php:778
54
- msgid "Ping on Publish"
 
55
  msgstr ""
56
 
57
- #: ../includes/admin.php:113
58
- #, php-format
59
- msgid "Successfully pinged for %1$s on %2$s GMT."
60
  msgstr ""
61
 
62
- #: ../includes/admin.php:123
63
  #, php-format
64
- msgid "Rules to append to the %s generated by WordPress."
65
  msgstr ""
66
 
67
- #: ../includes/admin.php:124
 
 
 
 
 
68
  msgid ""
69
  "Only add rules here when you know what you are doing, otherwise you might "
70
  "break search engine access to your site."
71
  msgstr ""
72
 
73
- #: ../includes/admin.php:124
74
- msgid ""
75
- "These rules will not have effect when you are using a static robots.txt file."
 
 
 
76
  msgstr ""
77
 
78
- #: ../includes/admin.php:131
79
  msgid ""
80
- "Clear all XML Sitemap Feed options from the database and start fresh with "
81
- "the default settings."
82
  msgstr ""
83
 
84
- #: ../includes/admin.php:133
 
85
  #, php-format
86
- msgid "Disabling and reenabling the %s plugin will have the same effect."
87
  msgstr ""
88
 
89
- #: ../includes/admin.php:133 ../includes/admin.php:141
90
- #: ../includes/admin.php:352
 
91
  msgid "XML Sitemap & Google News Feeds"
92
  msgstr ""
93
 
94
- #: ../includes/admin.php:141 ../includes/admin.php:352
95
  #, php-format
96
- msgid "Donate to keep the free %s plugin development & support going!"
97
  msgstr ""
98
 
99
- #: ../includes/admin.php:141
100
  #, php-format
101
- msgid "These settings control the XML Sitemaps generated by the %s plugin."
102
  msgstr ""
103
 
104
- #: ../includes/admin.php:150
105
  msgid "XML Sitemaps for post types"
106
  msgstr ""
107
 
108
- #: ../includes/admin.php:189
109
  msgid "Year"
110
  msgstr ""
111
 
112
- #: ../includes/admin.php:190
113
  msgid "Month"
114
  msgstr ""
115
 
116
- #: ../includes/admin.php:194
117
  msgid "Split by"
118
  msgstr ""
119
 
120
- #: ../includes/admin.php:204
121
  msgid ""
122
  "Split by year if you experience errors or slow sitemaps. In very rare cases, "
123
  "split by month is needed."
124
  msgstr ""
125
 
126
- #: ../includes/admin.php:209 ../includes/admin.php:725
127
  msgid "Priority"
128
  msgstr ""
129
 
130
- #: ../includes/admin.php:211
131
  msgid "Priority can be overridden on individual posts."
132
  msgstr ""
133
 
134
- #: ../includes/admin.php:216
135
  msgid ""
136
  "Automatically adjusts Priority according to relative age and comment count."
137
  msgstr ""
138
 
139
- #: ../includes/admin.php:216
140
  msgid ""
141
  "Sticky posts will not be subject to reduction by age. Individual posts with "
142
  "fixed Priority will always keep that value."
143
  msgstr ""
144
 
145
- #: ../includes/admin.php:221
146
  msgid "Update Lastmod and Changefreq on comments."
147
  msgstr ""
148
 
149
- #: ../includes/admin.php:221
150
  msgid ""
151
  "Set this if discussion on your site warrants reindexation upon each new "
152
  "comment."
153
  msgstr ""
154
 
155
- #: ../includes/admin.php:225 ../includes/admin.php:371
156
  msgid "Add image tags for"
157
  msgstr ""
158
 
159
- #: ../includes/admin.php:233 ../includes/admin.php:378
160
  msgid "Attached images"
161
  msgstr ""
162
 
163
- #: ../includes/admin.php:243
164
  msgid ""
165
  "Priority settings do not affect ranking in search results in any way. They "
166
  "are only meant to suggest search engines which URLs to index first. Once a "
@@ -168,29 +205,29 @@ msgid ""
168
  "updated."
169
  msgstr ""
170
 
171
- #: ../includes/admin.php:243
172
  msgid ""
173
  "Maximum Priority (1.0) is reserved for the front page, individual posts and, "
174
  "when allowed, posts with high comment count."
175
  msgstr ""
176
 
177
- #: ../includes/admin.php:243
178
  msgid ""
179
  "Priority values are taken as relative values. Setting all to the same (high) "
180
  "value is pointless."
181
  msgstr ""
182
 
183
- #: ../includes/admin.php:294
184
  msgid "XML Sitemaps for taxonomies"
185
  msgstr ""
186
 
187
- #: ../includes/admin.php:300
188
  msgid ""
189
  "It is generally not recommended to include taxonomy pages, unless their "
190
  "content brings added value."
191
  msgstr ""
192
 
193
- #: ../includes/admin.php:300
194
  msgid ""
195
  "For example, when you use category descriptions with information that is not "
196
  "present elsewhere on your site or if taxonomy pages list posts with an "
@@ -201,37 +238,62 @@ msgid ""
201
  "disallowing indexation of taxonomies."
202
  msgstr ""
203
 
204
- #: ../includes/admin.php:300
205
  #, php-format
206
  msgid ""
207
  "You can do this by adding specific robots.txt rules in the %s field above."
208
  msgstr ""
209
 
210
- #: ../includes/admin.php:300 ../includes/admin.php:789
211
- msgid "Additional robots.txt rules"
212
  msgstr ""
213
 
214
- #: ../includes/admin.php:315
215
- msgid "No taxonomies available for the currently included post types."
216
  msgstr ""
217
 
218
- #: ../includes/admin.php:331
219
- msgid "Additional URLs to append to the XML Sitemap."
220
  msgstr ""
221
 
222
- #: ../includes/admin.php:332
223
  msgid ""
224
- "Add the full URL, including protocol (http/https) and domain, of any static "
225
- "page or WordPress page that you want to append to the ones already included "
226
- "by the settings above. Optionally add a priority value between 0 and 1, "
227
- "separated with a space, after the URL. Start each URL on a new line."
228
  msgstr ""
229
 
230
- #: ../includes/admin.php:341
231
- msgid "Additional domains to allow in the XML Sitemap."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
232
  msgstr ""
233
 
234
- #: ../includes/admin.php:342
 
 
 
 
235
  #, php-format
236
  msgid ""
237
  "By default, only the domain %s as used in your WordPress site address is "
@@ -244,13 +306,13 @@ msgid ""
244
  "will be filtered."
245
  msgstr ""
246
 
247
- #: ../includes/admin.php:352
248
  #, php-format
249
  msgid ""
250
  "These settings control the Google News Sitemap generated by the %s plugin."
251
  msgstr ""
252
 
253
- #: ../includes/admin.php:352
254
  msgid ""
255
  "When you are done configuring and preparing your news content and you are "
256
  "convinced your site adheres to the <a href=\"https://support.google.com/news/"
@@ -260,16 +322,66 @@ msgid ""
260
  "site for inclusion</a>!"
261
  msgstr ""
262
 
263
- #: ../includes/admin.php:362
 
 
 
 
264
  #, php-format
265
  msgid "By default, the general %s setting will be used."
266
  msgstr ""
267
 
268
- #: ../includes/admin.php:392 ../includes/admin.php:826
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
269
  msgid "Access (&lt;access&gt; tag)"
270
  msgstr ""
271
 
272
- #: ../includes/admin.php:393
273
  #, php-format
274
  msgid ""
275
  "The &lt;access&gt; tag specifies whether an article is available to all "
@@ -277,175 +389,128 @@ msgid ""
277
  "(%3$s) to your site."
278
  msgstr ""
279
 
280
- #: ../includes/admin.php:393 ../includes/admin.php:400
281
- #: ../includes/admin.php:413
282
  msgid "Registration"
283
  msgstr ""
284
 
285
- #: ../includes/admin.php:393 ../includes/admin.php:401
286
- #: ../includes/admin.php:414
287
  msgid "Subscription"
288
  msgstr ""
289
 
290
- #: ../includes/admin.php:398
291
  msgid "Tag normal posts as"
292
  msgstr ""
293
 
294
- #: ../includes/admin.php:412
295
  #, php-format
296
  msgid "Tag %s posts as"
297
  msgstr ""
298
 
299
- #: ../includes/admin.php:419
300
  msgid ""
301
  "Note: The &lt;access&gt; tag is required when applicable. Do not leave it to "
302
  "Public when your content is not."
303
  msgstr ""
304
 
305
- #: ../includes/admin.php:439 ../includes/admin.php:827
306
  msgid "Genres (&lt;genres&gt; tag)"
307
  msgstr ""
308
 
309
- #: ../includes/admin.php:440
310
  msgid ""
311
  "The &lt;genres&gt; tag specifies one or more properties for an article, "
312
  "namely, whether it is a press release, a blog post, an opinion, an op-ed "
313
  "piece, user-generated content, or satire."
314
  msgstr ""
315
 
316
- #: ../includes/admin.php:440
317
  msgid "You can assign Google News genres when writing a new post."
318
  msgstr ""
319
 
320
- #: ../includes/admin.php:451
321
  msgid "Default genre:"
322
  msgstr ""
323
 
324
- #: ../includes/admin.php:460
325
  msgid ""
326
  "Note: The &lt;genres&gt; tag is required when applicable and restricted to "
327
  "the list provided above."
328
  msgstr ""
329
 
330
- #: ../includes/admin.php:472 ../includes/admin.php:828
331
  msgid "Topics (&lt;keywords&gt; tag)"
332
  msgstr ""
333
 
334
- #: ../includes/admin.php:473
335
  msgid ""
336
  "The &lt;keywords&gt; tag is used to help classify the articles you submit to "
337
  "Google News by <strong>topic</strong>."
338
  msgstr ""
339
 
340
- #: ../includes/admin.php:475
341
  #, php-format
342
  msgid "Use %s for topics."
343
  msgstr ""
344
 
345
- #: ../includes/admin.php:480
346
  msgid "Default topic(s):"
347
  msgstr ""
348
 
349
- #: ../includes/admin.php:482 ../includes/admin.php:503
350
  msgid "Separate with a comma."
351
  msgstr ""
352
 
353
- #: ../includes/admin.php:484
354
  msgid ""
355
  "Keywords may be drawn from, but are not limited to, the list of <a href="
356
  "\"http://www.google.com/support/news_pub/bin/answer.py?answer=116037\" "
357
  "target=\"_blank\">existing Google News keywords</a>."
358
  msgstr ""
359
 
360
- #: ../includes/admin.php:494 ../includes/admin.php:829
361
  msgid "Locations (&lt;geo_locations&gt; tag)"
362
  msgstr ""
363
 
364
- #: ../includes/admin.php:495
365
  msgid ""
366
  "The &lt;geo_locations&gt; tag is used identify the geographic location of "
367
  "your articles."
368
  msgstr ""
369
 
370
- #: ../includes/admin.php:495
371
  msgid "You can assign locations when writing a new post."
372
  msgstr ""
373
 
374
- #: ../includes/admin.php:501
375
  msgid "Default location:"
376
  msgstr ""
377
 
378
- #: ../includes/admin.php:505
379
  msgid ""
380
  "You should list location entities from smallest entity to largest. For "
381
  "example: <code>Detroit, Michigan, USA</code> or <code>Rhône-Alpes, France</"
382
  "code>."
383
  msgstr ""
384
 
385
- #: ../includes/admin.php:689 ../includes/admin.php:798
386
  msgid "XML Sitemap"
387
  msgstr ""
388
 
389
- #: ../includes/admin.php:721
390
  msgid "Exclude from XML Sitemap"
391
  msgstr ""
392
 
393
- #: ../includes/admin.php:727
394
  #, php-format
395
  msgid "Leave empty for automatic Priority as configured on %1$s > %2$s."
396
  msgstr ""
397
 
398
- #: ../includes/admin.php:773
399
  msgid "Enable XML sitemaps"
400
  msgstr ""
401
 
402
- #: ../includes/admin.php:794
403
- msgid "Reset XML sitemaps"
404
- msgstr ""
405
-
406
- #: ../includes/admin.php:801
407
- msgid "Include post types"
408
- msgstr ""
409
-
410
- #: ../includes/admin.php:804
411
  msgid "Include taxonomies"
412
  msgstr ""
413
-
414
- #: ../includes/admin.php:807
415
- msgid "Include custom URLs"
416
- msgstr ""
417
-
418
- #: ../includes/admin.php:811
419
- msgid "Additional allowed domains"
420
- msgstr ""
421
-
422
- #: ../includes/admin.php:824
423
- msgid "Publication name"
424
- msgstr ""
425
-
426
- #: ../includes/core.php:1059
427
- msgid "Google News Genres"
428
- msgstr ""
429
-
430
- #: ../includes/core.php:1060
431
- msgid "Google News Genre"
432
- msgstr ""
433
-
434
- #: ../includes/core.php:1078
435
- msgid "Google News Country"
436
- msgstr ""
437
-
438
- #: ../includes/core.php:1080 ../includes/core.php:1099
439
- #: ../includes/core.php:1118
440
- msgid ""
441
- "Only one allowed. Must be consistent with other Google News location "
442
- "entities (if set)."
443
- msgstr ""
444
-
445
- #: ../includes/core.php:1097
446
- msgid "Google News State/Province"
447
- msgstr ""
448
-
449
- #: ../includes/core.php:1116
450
- msgid "Google News City"
451
- msgstr ""
1
  msgid ""
2
  msgstr ""
3
+ "Project-Id-Version: XML Sitemap and Google News feeds/4.4\n"
4
  "Report-Msgid-Bugs-To: \n"
5
+ "POT-Creation-Date: 2015-01-05 04:05+0100\n"
6
+ "PO-Revision-Date: 2015-01-05 04:05+0100\n"
7
  "Last-Translator: RavanH <ravanhagen@gmail.com>\n"
8
  "Language-Team: <ravanhagen@gmail.com>\n"
9
+ "Language: en\n"
10
  "MIME-Version: 1.0\n"
11
  "Content-Type: text/plain; charset=UTF-8\n"
12
  "Content-Transfer-Encoding: 8bit\n"
13
+ "X-Poedit-KeywordsList: __;_e\n"
 
 
14
  "X-Poedit-Basepath: .\n"
15
  "X-Poedit-SourceCharset: UTF-8\n"
16
  "X-Generator: Poedit 1.5.4\n"
17
  "Plural-Forms: nplurals=2; plural=(n != 1);\n"
18
  "X-Poedit-SearchPath-0: ..\n"
19
 
20
+ #: ../includes/core.php:1186
21
+ msgid "Google News Genres"
22
+ msgstr ""
23
+
24
+ #: ../includes/core.php:1187
25
+ msgid "Google News Genre"
26
+ msgstr ""
27
+
28
+ #: ../includes/core.php:1205
29
+ msgid "Google News Country"
30
+ msgstr ""
31
+
32
+ #: ../includes/core.php:1207 ../includes/core.php:1226
33
+ #: ../includes/core.php:1245
34
+ msgid ""
35
+ "Only one allowed. Must be consistent with other Google News location "
36
+ "entities (if set)."
37
+ msgstr ""
38
+
39
+ #: ../includes/core.php:1224
40
+ msgid "Google News State/Province"
41
+ msgstr ""
42
+
43
+ #: ../includes/core.php:1243
44
+ msgid "Google News City"
45
+ msgstr ""
46
+
47
  #: ../includes/admin.php:19
48
  msgid "XML Sitemaps"
49
  msgstr ""
52
  msgid "XML Sitemap Index"
53
  msgstr ""
54
 
55
+ #: ../includes/admin.php:25 ../includes/admin.php:988
56
  msgid "Google News Sitemap"
57
  msgstr ""
58
 
76
  msgid "Ping-O-Matic"
77
  msgstr ""
78
 
79
+ #: ../includes/admin.php:136
80
+ #, php-format
81
+ msgid "Successfully sent %1$s on %2$s."
82
  msgstr ""
83
 
84
+ #: ../includes/admin.php:197 ../includes/admin.php:387
85
+ #: ../includes/admin.php:955
86
+ msgid "Additional robots.txt rules"
87
  msgstr ""
88
 
89
+ #: ../includes/admin.php:198
90
  #, php-format
91
+ msgid "Rules that will be appended to the %s generated by WordPress:"
92
  msgstr ""
93
 
94
+ #: ../includes/admin.php:199
95
+ msgid ""
96
+ "These rules will not have effect when you are using a static robots.txt file."
97
+ msgstr ""
98
+
99
+ #: ../includes/admin.php:199
100
  msgid ""
101
  "Only add rules here when you know what you are doing, otherwise you might "
102
  "break search engine access to your site."
103
  msgstr ""
104
 
105
+ #: ../includes/admin.php:205 ../includes/admin.php:960
106
+ msgid "Reset XML sitemaps"
107
+ msgstr ""
108
+
109
+ #: ../includes/admin.php:207
110
+ msgid "Clear all XML Sitemap Feed settings from the database."
111
  msgstr ""
112
 
113
+ #: ../includes/admin.php:210
114
  msgid ""
115
+ "You can use this to start fresh with the default settings or to remove all "
116
+ "XML Sitemap and Google News settings and taxonomy terms before uninstalling."
117
  msgstr ""
118
 
119
+ #: ../includes/admin.php:219 ../includes/admin.php:220
120
+ #: ../includes/admin.php:457 ../includes/admin.php:458
121
  #, php-format
122
+ msgid "Donate to keep the free %s plugin development & support going!"
123
  msgstr ""
124
 
125
+ #: ../includes/admin.php:219 ../includes/admin.php:220
126
+ #: ../includes/admin.php:221 ../includes/admin.php:457
127
+ #: ../includes/admin.php:458 ../includes/admin.php:459
128
  msgid "XML Sitemap & Google News Feeds"
129
  msgstr ""
130
 
131
+ #: ../includes/admin.php:221
132
  #, php-format
133
+ msgid "These settings control the XML Sitemaps generated by the %s plugin."
134
  msgstr ""
135
 
136
+ #: ../includes/admin.php:222 ../includes/admin.php:460
137
  #, php-format
138
+ msgid "For ping options, go to %s."
139
  msgstr ""
140
 
141
+ #: ../includes/admin.php:235
142
  msgid "XML Sitemaps for post types"
143
  msgstr ""
144
 
145
+ #: ../includes/admin.php:274
146
  msgid "Year"
147
  msgstr ""
148
 
149
+ #: ../includes/admin.php:275
150
  msgid "Month"
151
  msgstr ""
152
 
153
+ #: ../includes/admin.php:279
154
  msgid "Split by"
155
  msgstr ""
156
 
157
+ #: ../includes/admin.php:289
158
  msgid ""
159
  "Split by year if you experience errors or slow sitemaps. In very rare cases, "
160
  "split by month is needed."
161
  msgstr ""
162
 
163
+ #: ../includes/admin.php:294 ../includes/admin.php:908
164
  msgid "Priority"
165
  msgstr ""
166
 
167
+ #: ../includes/admin.php:296
168
  msgid "Priority can be overridden on individual posts."
169
  msgstr ""
170
 
171
+ #: ../includes/admin.php:301
172
  msgid ""
173
  "Automatically adjusts Priority according to relative age and comment count."
174
  msgstr ""
175
 
176
+ #: ../includes/admin.php:301
177
  msgid ""
178
  "Sticky posts will not be subject to reduction by age. Individual posts with "
179
  "fixed Priority will always keep that value."
180
  msgstr ""
181
 
182
+ #: ../includes/admin.php:306
183
  msgid "Update Lastmod and Changefreq on comments."
184
  msgstr ""
185
 
186
+ #: ../includes/admin.php:306
187
  msgid ""
188
  "Set this if discussion on your site warrants reindexation upon each new "
189
  "comment."
190
  msgstr ""
191
 
192
+ #: ../includes/admin.php:310 ../includes/admin.php:568
193
  msgid "Add image tags for"
194
  msgstr ""
195
 
196
+ #: ../includes/admin.php:318 ../includes/admin.php:575
197
  msgid "Attached images"
198
  msgstr ""
199
 
200
+ #: ../includes/admin.php:328
201
  msgid ""
202
  "Priority settings do not affect ranking in search results in any way. They "
203
  "are only meant to suggest search engines which URLs to index first. Once a "
205
  "updated."
206
  msgstr ""
207
 
208
+ #: ../includes/admin.php:329
209
  msgid ""
210
  "Maximum Priority (1.0) is reserved for the front page, individual posts and, "
211
  "when allowed, posts with high comment count."
212
  msgstr ""
213
 
214
+ #: ../includes/admin.php:329
215
  msgid ""
216
  "Priority values are taken as relative values. Setting all to the same (high) "
217
  "value is pointless."
218
  msgstr ""
219
 
220
+ #: ../includes/admin.php:379
221
  msgid "XML Sitemaps for taxonomies"
222
  msgstr ""
223
 
224
+ #: ../includes/admin.php:385
225
  msgid ""
226
  "It is generally not recommended to include taxonomy pages, unless their "
227
  "content brings added value."
228
  msgstr ""
229
 
230
+ #: ../includes/admin.php:386
231
  msgid ""
232
  "For example, when you use category descriptions with information that is not "
233
  "present elsewhere on your site or if taxonomy pages list posts with an "
238
  "disallowing indexation of taxonomies."
239
  msgstr ""
240
 
241
+ #: ../includes/admin.php:387
242
  #, php-format
243
  msgid ""
244
  "You can do this by adding specific robots.txt rules in the %s field above."
245
  msgstr ""
246
 
247
+ #: ../includes/admin.php:402
248
+ msgid "No taxonomies available for the currently included post types."
249
  msgstr ""
250
 
251
+ #: ../includes/admin.php:410 ../includes/admin.php:979
252
+ msgid "Include custom XML Sitemaps"
253
  msgstr ""
254
 
255
+ #: ../includes/admin.php:411
256
+ msgid "Additional XML Sitemaps to append to the main XML Sitemap Index:"
257
  msgstr ""
258
 
259
+ #: ../includes/admin.php:413
260
  msgid ""
261
+ "Add the full URL, including protocol (http/https) and domain, of any XML "
262
+ "Sitemap that you want to append to the Sitemap Index. Start each URL on a "
263
+ "new line."
 
264
  msgstr ""
265
 
266
+ #: ../includes/admin.php:413
267
+ msgid ""
268
+ "Only valid sitemaps are allowed in the Sitemap Index. Use your Google/Bing "
269
+ "Webmaster Tools to verify!"
270
+ msgstr ""
271
+
272
+ #: ../includes/admin.php:430 ../includes/admin.php:976
273
+ msgid "Include custom URLs"
274
+ msgstr ""
275
+
276
+ #: ../includes/admin.php:431
277
+ msgid "Additional URLs to append in an extra XML Sitemap:"
278
+ msgstr ""
279
+
280
+ #: ../includes/admin.php:433
281
+ msgid ""
282
+ "Add the full URL, including protocol (http/https) and domain, of any "
283
+ "(static) page that you want to append to the ones already included by "
284
+ "WordPress. Optionally add a priority value between 0 and 1, separated with a "
285
+ "space after the URL. Start each URL on a new line."
286
+ msgstr ""
287
+
288
+ #: ../includes/admin.php:443 ../includes/admin.php:973
289
+ msgid "Allowed domains"
290
  msgstr ""
291
 
292
+ #: ../includes/admin.php:444
293
+ msgid "Additional domains to allow in the XML Sitemaps:"
294
+ msgstr ""
295
+
296
+ #: ../includes/admin.php:445
297
  #, php-format
298
  msgid ""
299
  "By default, only the domain %s as used in your WordPress site address is "
306
  "will be filtered."
307
  msgstr ""
308
 
309
+ #: ../includes/admin.php:459
310
  #, php-format
311
  msgid ""
312
  "These settings control the Google News Sitemap generated by the %s plugin."
313
  msgstr ""
314
 
315
+ #: ../includes/admin.php:459
316
  msgid ""
317
  "When you are done configuring and preparing your news content and you are "
318
  "convinced your site adheres to the <a href=\"https://support.google.com/news/"
322
  "site for inclusion</a>!"
323
  msgstr ""
324
 
325
+ #: ../includes/admin.php:470 ../includes/admin.php:992
326
+ msgid "Publication name"
327
+ msgstr ""
328
+
329
+ #: ../includes/admin.php:471
330
  #, php-format
331
  msgid "By default, the general %s setting will be used."
332
  msgstr ""
333
 
334
+ #: ../includes/admin.php:488
335
+ msgid ""
336
+ "Error: There where no valid post types found. Without at least one public "
337
+ "post type, a Google News Sitemap cannot be created by this plugin. Please "
338
+ "deselect the option Google News Sitemap at <a href=\"#xmlsf_sitemaps"
339
+ "\">Enable XML sitemaps</a> and choose another method."
340
+ msgstr ""
341
+
342
+ #: ../includes/admin.php:491 ../includes/admin.php:967
343
+ #: ../includes/admin.php:993
344
+ msgid "Include post types"
345
+ msgstr ""
346
+
347
+ #: ../includes/admin.php:517
348
+ #, php-format
349
+ msgid ""
350
+ "At least one post type must be selected. By default, the post type %s will "
351
+ "be used."
352
+ msgstr ""
353
+
354
+ #: ../includes/admin.php:540
355
+ msgid "Limit to posts in these post categories:"
356
+ msgstr ""
357
+
358
+ #: ../includes/admin.php:556
359
+ msgid ""
360
+ "If you wish to limit posts that will feature in your News Sitemap to certain "
361
+ "categories, select them here. Use the Ctrl/Cmd key plus click to select more "
362
+ "than one or to deselect. If no categories are selected, posts of all "
363
+ "categories will be included in your News Sitemap."
364
+ msgstr ""
365
+
366
+ #: ../includes/admin.php:556
367
+ msgid ""
368
+ "Please be aware that limiting by post category will rule out all custom post "
369
+ "types that do not use post categories, even if you selected them to be "
370
+ "included (above)."
371
+ msgstr ""
372
+
373
+ #: ../includes/admin.php:578
374
+ msgid ""
375
+ "Note: Google News prefers at most one image per article in the News Sitemap. "
376
+ "If multiple valid images are specified, the crawler will have to pick one "
377
+ "arbitrarily. Images in News Sitemaps should be in jpeg or png format."
378
+ msgstr ""
379
+
380
+ #: ../includes/admin.php:590 ../includes/admin.php:996
381
  msgid "Access (&lt;access&gt; tag)"
382
  msgstr ""
383
 
384
+ #: ../includes/admin.php:591
385
  #, php-format
386
  msgid ""
387
  "The &lt;access&gt; tag specifies whether an article is available to all "
389
  "(%3$s) to your site."
390
  msgstr ""
391
 
392
+ #: ../includes/admin.php:591 ../includes/admin.php:598
393
+ #: ../includes/admin.php:604
394
  msgid "Registration"
395
  msgstr ""
396
 
397
+ #: ../includes/admin.php:591 ../includes/admin.php:599
398
+ #: ../includes/admin.php:605
399
  msgid "Subscription"
400
  msgstr ""
401
 
402
+ #: ../includes/admin.php:596
403
  msgid "Tag normal posts as"
404
  msgstr ""
405
 
406
+ #: ../includes/admin.php:603
407
  #, php-format
408
  msgid "Tag %s posts as"
409
  msgstr ""
410
 
411
+ #: ../includes/admin.php:610
412
  msgid ""
413
  "Note: The &lt;access&gt; tag is required when applicable. Do not leave it to "
414
  "Public when your content is not."
415
  msgstr ""
416
 
417
+ #: ../includes/admin.php:630 ../includes/admin.php:997
418
  msgid "Genres (&lt;genres&gt; tag)"
419
  msgstr ""
420
 
421
+ #: ../includes/admin.php:631
422
  msgid ""
423
  "The &lt;genres&gt; tag specifies one or more properties for an article, "
424
  "namely, whether it is a press release, a blog post, an opinion, an op-ed "
425
  "piece, user-generated content, or satire."
426
  msgstr ""
427
 
428
+ #: ../includes/admin.php:631
429
  msgid "You can assign Google News genres when writing a new post."
430
  msgstr ""
431
 
432
+ #: ../includes/admin.php:642
433
  msgid "Default genre:"
434
  msgstr ""
435
 
436
+ #: ../includes/admin.php:651
437
  msgid ""
438
  "Note: The &lt;genres&gt; tag is required when applicable and restricted to "
439
  "the list provided above."
440
  msgstr ""
441
 
442
+ #: ../includes/admin.php:663 ../includes/admin.php:998
443
  msgid "Topics (&lt;keywords&gt; tag)"
444
  msgstr ""
445
 
446
+ #: ../includes/admin.php:664
447
  msgid ""
448
  "The &lt;keywords&gt; tag is used to help classify the articles you submit to "
449
  "Google News by <strong>topic</strong>."
450
  msgstr ""
451
 
452
+ #: ../includes/admin.php:666
453
  #, php-format
454
  msgid "Use %s for topics."
455
  msgstr ""
456
 
457
+ #: ../includes/admin.php:673
458
  msgid "Default topic(s):"
459
  msgstr ""
460
 
461
+ #: ../includes/admin.php:675 ../includes/admin.php:698
462
  msgid "Separate with a comma."
463
  msgstr ""
464
 
465
+ #: ../includes/admin.php:679
466
  msgid ""
467
  "Keywords may be drawn from, but are not limited to, the list of <a href="
468
  "\"http://www.google.com/support/news_pub/bin/answer.py?answer=116037\" "
469
  "target=\"_blank\">existing Google News keywords</a>."
470
  msgstr ""
471
 
472
+ #: ../includes/admin.php:689 ../includes/admin.php:999
473
  msgid "Locations (&lt;geo_locations&gt; tag)"
474
  msgstr ""
475
 
476
+ #: ../includes/admin.php:690
477
  msgid ""
478
  "The &lt;geo_locations&gt; tag is used identify the geographic location of "
479
  "your articles."
480
  msgstr ""
481
 
482
+ #: ../includes/admin.php:690
483
  msgid "You can assign locations when writing a new post."
484
  msgstr ""
485
 
486
+ #: ../includes/admin.php:696
487
  msgid "Default location:"
488
  msgstr ""
489
 
490
+ #: ../includes/admin.php:700
491
  msgid ""
492
  "You should list location entities from smallest entity to largest. For "
493
  "example: <code>Detroit, Michigan, USA</code> or <code>Rhône-Alpes, France</"
494
  "code>."
495
  msgstr ""
496
 
497
+ #: ../includes/admin.php:872 ../includes/admin.php:964
498
  msgid "XML Sitemap"
499
  msgstr ""
500
 
501
+ #: ../includes/admin.php:904
502
  msgid "Exclude from XML Sitemap"
503
  msgstr ""
504
 
505
+ #: ../includes/admin.php:910
506
  #, php-format
507
  msgid "Leave empty for automatic Priority as configured on %1$s > %2$s."
508
  msgstr ""
509
 
510
+ #: ../includes/admin.php:949
511
  msgid "Enable XML sitemaps"
512
  msgstr ""
513
 
514
+ #: ../includes/admin.php:970
 
 
 
 
 
 
 
 
515
  msgid "Include taxonomies"
516
  msgstr ""
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
readme.txt CHANGED
@@ -4,9 +4,9 @@ Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=ravan
4
  Tags: sitemap, xml sitemap, news sitemap, sitemap.xml, robots.txt, Google, Google News, Yahoo, Bing, , Yandex, Baidu, seo, feed, polylang, image sitemap
5
  Requires at least: 3.2
6
  Tested up to: 4.2
7
- Stable tag: 4.3.2
8
 
9
- Feeds from the XML Sitemap and Google News menu for the hungry spiders. Multisite compatible.
10
 
11
  == Description ==
12
 
@@ -14,9 +14,9 @@ This plugin dynamically creates feeds that comply with the **XML Sitemap** and t
14
 
15
  The main advantage of this plugin over other XML Sitemap plugins is **simplicity**. No need to change file or folder permissions, move files or spend time tweaking difficult plugin options.
16
 
17
- You, or site owners on your Multisite network, will not be bothered with complicated settings like most other XML Sitemap plugins. The default settings will suffice in most cases and XML sitemap values like ChangeFreq and URL Priority are auto-calculated based on post age and comment activity.
18
 
19
- The XML Sitemap Index becomes instantly available on yourblog.url/sitemap.xml (or yourblog.url/?feed=sitemap) containing references to posts and pages by default, ready for indexing by search engines like Google, Bing, Yahoo, AOL and Ask. When the Google News Sitemap is activated, it will become available on yourblog.url/sitemap-news.xml (or yourblog.url/?feed=sitemap-news), ready for indexing by Google News. Both are automatically referenced in the dynamically created **robots.txt** on yourblog.url/robots.txt to tell search engines where to find your XML Sitemaps. Google and Bing can be pinged on each new publication.
20
 
21
  Please read the FAQ's for info on how to get your articles listed on Google News.
22
 
@@ -30,24 +30,36 @@ Please read the FAQ's for info on how to get your articles listed on Google News
30
 
31
  = Features =
32
 
 
 
33
  * Sitemap Index with optional inclusion of sitemaps for post types, categories and tags.
34
- * Optional Google News sitemap.
 
35
  * Completely **automatic** post URL _priority_ and _change frequency_ calculation based on post age and comment and trackback activity.
36
- * Works out-of-the-box, even on **multi-site / shared codebase / multi-blog setups** like WordPress MU, WP 3.0 in MultiSite mode and others.
37
- * Optionally include Image tags with caption and title for featured images or attached images in both regular and Google News sitemaps.
38
- * Pings Google, Bing & Yahoo and optionally Yandex and Baidu on new post publication.
39
- * Compatible with multi-lingual sites using **Polylang** to allow all languages to be indexed equally.
40
  * Options to define which post types and taxonomies get included in the sitemap and automatic priority calculation rules.
41
  * Set priority per post.
42
  * Exclude individual posts or pages.
 
 
 
 
 
 
 
 
 
 
 
43
  * Option to add new robots.txt rules. These can be used to further control (read: limit) the indexation of various parts of your site and subsequent spread of pagerank accross your sites pages.
44
  * Includes XLS stylesheets for human readable sitemaps.
45
 
46
-
47
  = Translations =
48
 
49
- - **Dutch** * R.A. van Hagen http://status301.net (version 4.3)
50
- - **French** * R.A. van Hagen http://status301.net (version 4.2) (improved translation or suggestions welcome)
51
  - **Indonesian** * Nasrulhaq Muiz http://al-badar.net/ (version 4.2)
52
  - **Italian** * Raffaello Tesi http://www.raffaellotesi.com (version 4.3.2)
53
  - **Serbian** * WPdiscounts http://wpdiscounts.com/ (version 4.1)
@@ -65,11 +77,15 @@ XML Sitemap Feed was originally based on the discontinued plugin Standard XML Si
65
 
66
  = Wordpress =
67
 
68
- Quick installation: [Install now](http://coveredwebservices.com/wp-plugin-install/?plugin=xml-sitemap-feed) !
 
 
 
 
69
 
70
  &hellip; OR &hellip;
71
 
72
- Search for "xml sitemap feed" and install with that slick **Plugins > Add New** back-end page.
73
 
74
  &hellip; OR &hellip;
75
 
@@ -79,11 +95,9 @@ Follow these steps:
79
 
80
  2. Upload the zip file via the Plugins > Add New > Upload page &hellip; OR &hellip; unpack and upload with your favourite FTP client to the /plugins/ folder.
81
 
82
- 3. Activate the plugin on the Plugins page.
83
-
84
- 4. If you have been using another XML Sitemap plugin before, check your site root and remove any created sitemap.xml file that remained there.
85
 
86
- Done! Check your sparkling new XML Sitemap by visiting yourblogurl.tld/sitemap.xml (adapted to your domain name ofcourse) with a browser or any online XML Sitemap validator. You might also want to check if the sitemap is listed in your yourblogurl.tld/robots.txt file.
87
 
88
  = WordPress 3+ in Multi Site mode =
89
 
@@ -91,6 +105,11 @@ Same as above but do a **Network Activate** to make a XML sitemap available for
91
 
92
  Installed alongside [WordPress MU Sitewide Tags Pages](http://wordpress.org/plugins/wordpress-mu-sitewide-tags/), XML Sitemap Feed will **not** create a sitemap.xml nor change robots.txt for any **tag blogs**. This is done deliberately because they would be full of links outside the tags blogs own domain and subsequently ignored (or worse: penalised) by Google.
93
 
 
 
 
 
 
94
 
95
  == Frequently Asked Questions ==
96
 
@@ -168,7 +187,7 @@ Note: your modifications will be overwritten upon the next plugin upgrade!
168
 
169
  = I see no sitemap.xml file in my site root! =
170
 
171
- The sitemap is dynamically generated just like a feed. There is no actual file created.
172
 
173
  = I see a sitemap.xml file in site root but it does not seem to get updated! =
174
 
@@ -188,6 +207,12 @@ The Google News sitemap is designed to NOT be cached.
188
 
189
  The absolute first thing you need to check is your blogs privacy settings. Go to **Settings > Privacy** and make sure you are **allowing search engines to index your site**. If they are blocked, your sitemap will _not_ be available.
190
 
 
 
 
 
 
 
191
  If that did not solve the issue, check the following errors that might be encountered along with their respective solutions:
192
 
193
  **404 page instead of my sitemap.xml**
@@ -268,13 +293,28 @@ Thanks for sharing your translation :)
268
 
269
  == Upgrade Notice ==
270
 
271
- = 4.3.2 =
272
- Custom domains and URLs. Major Google News sitemap settings changes. Plus bugfixes.
273
 
274
 
275
  == Changelog ==
276
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
277
  = 4.3.2 =
 
278
  * BUGFIX: html esc / filter image title and caption tags
279
  * BUGFIX: empty terms counted causing empty taxonomy sitemap appearing in index
280
  * BUGFIX: custom taxonomies where lastmod cannot be determined show empty lastmod tag
4
  Tags: sitemap, xml sitemap, news sitemap, sitemap.xml, robots.txt, Google, Google News, Yahoo, Bing, , Yandex, Baidu, seo, feed, polylang, image sitemap
5
  Requires at least: 3.2
6
  Tested up to: 4.2
7
+ Stable tag: 4.4
8
 
9
+ XML and Google News Sitemaps to feed the hungry spiders. Multisite, WP Super Cache and Polylang compatible.
10
 
11
  == Description ==
12
 
14
 
15
  The main advantage of this plugin over other XML Sitemap plugins is **simplicity**. No need to change file or folder permissions, move files or spend time tweaking difficult plugin options.
16
 
17
+ You, or site owners on your Multisite network, will not be bothered with overly complicated settings like most other XML Sitemap plugins. The default settings will suffice in most cases and XML sitemap values like ChangeFreq and URL Priority are auto-calculated based on post age and comment activity.
18
 
19
+ an XML Sitemap Index becomes instantly available on yourblog.url/sitemap.xml (or yourblog.url/?feed=sitemap) containing references to posts and pages by default, ready for indexing by search engines like Google, Bing, Yahoo, AOL and Ask. When the Google News Sitemap is activated, it will become available on yourblog.url/sitemap-news.xml (or yourblog.url/?feed=sitemap-news), ready for indexing by Google News. Both are automatically referenced in the dynamically created **robots.txt** on yourblog.url/robots.txt to tell search engines where to find your XML Sitemaps. Google and Bing can be pinged on each new publication.
20
 
21
  Please read the FAQ's for info on how to get your articles listed on Google News.
22
 
30
 
31
  = Features =
32
 
33
+ **XML Sitemap**
34
+
35
  * Sitemap Index with optional inclusion of sitemaps for post types, categories and tags.
36
+ * Sitemap with custom URLs optional.
37
+ * Custom/static sitemaps can be added to the index.
38
  * Completely **automatic** post URL _priority_ and _change frequency_ calculation based on post age and comment and trackback activity.
39
+ * Works out-of-the-box, even on **Multisite** installations.
40
+ * Optionally include Image tags with caption and title for featured images or attached images.
41
+ * Pings Google, Bing & Yahoo, Yandex and Baidu on new post publication.
 
42
  * Options to define which post types and taxonomies get included in the sitemap and automatic priority calculation rules.
43
  * Set priority per post.
44
  * Exclude individual posts or pages.
45
+
46
+ **Google News Sitemap**
47
+
48
+ * Optionally include Image tags with caption and title for featured images or attached images.
49
+ * Options to: set a different News Publication Name, include custom post types or limit inclusion to certain post categories.
50
+ * Configure <access>, <genres>, <keywords> and <geo_locations> both globally and post by post
51
+ * Pings Google on new publications.
52
+
53
+ ** More **
54
+
55
+ * Compatible with multi-lingual sites using **Polylang** to allow all languages to be indexed equally.
56
  * Option to add new robots.txt rules. These can be used to further control (read: limit) the indexation of various parts of your site and subsequent spread of pagerank accross your sites pages.
57
  * Includes XLS stylesheets for human readable sitemaps.
58
 
 
59
  = Translations =
60
 
61
+ - **Dutch** * R.A. van Hagen http://status301.net (version 4.4)
62
+ - **French** * R.A. van Hagen http://status301.net (version 4.2) (improved translation or suggestions needed!)
63
  - **Indonesian** * Nasrulhaq Muiz http://al-badar.net/ (version 4.2)
64
  - **Italian** * Raffaello Tesi http://www.raffaellotesi.com (version 4.3.2)
65
  - **Serbian** * WPdiscounts http://wpdiscounts.com/ (version 4.1)
77
 
78
  = Wordpress =
79
 
80
+ **I.** If you have been using another XML Sitemap plugin before, check your site root and remove any created sitemap.xml, sitemap-news.xml and (if you're not managing this one manually) robots.txt files that remained there.
81
+
82
+ **II.** Install plugin by:
83
+
84
+ Quick installation via **[Covered Web Services](http://coveredwebservices.com/wp-plugin-install/?plugin=xml-sitemap-feed)** !
85
 
86
  &hellip; OR &hellip;
87
 
88
+ Search for "xml sitemap feed" and install with that slick **Plugins > Add New** admin page.
89
 
90
  &hellip; OR &hellip;
91
 
95
 
96
  2. Upload the zip file via the Plugins > Add New > Upload page &hellip; OR &hellip; unpack and upload with your favourite FTP client to the /plugins/ folder.
97
 
98
+ **III.** Activate the plugin on the Plugins page.
 
 
99
 
100
+ Done! Check your sparkling new XML Sitemap by visiting yourblogurl.tld/sitemap.xml (adapted to your domain name of course) with a browser or any online XML Sitemap validator. You might also want to check if the sitemap is listed in your yourblogurl.tld/robots.txt file.
101
 
102
  = WordPress 3+ in Multi Site mode =
103
 
105
 
106
  Installed alongside [WordPress MU Sitewide Tags Pages](http://wordpress.org/plugins/wordpress-mu-sitewide-tags/), XML Sitemap Feed will **not** create a sitemap.xml nor change robots.txt for any **tag blogs**. This is done deliberately because they would be full of links outside the tags blogs own domain and subsequently ignored (or worse: penalised) by Google.
107
 
108
+ = Uninstallation =
109
+
110
+ Upon uninstalling the plugin from the Admin > Plugins page, most plugins optiosn will be cleared from the database. However, since by that time the plugin itself is already deactivated, some taxonomies cannot be removed and will remain dormant in the database. See notes in the uninstall.php file.
111
+
112
+ On multisite, the uninstall.php *can* loop through all sites in the network to perform the uninstalltion process for each site. However, this does not scale for large networks so it *only* does a per-site uninstallation when `define('XMLSF_MULTISITE_UNINSTALL', true);` is explicitly set in wp-config.php.
113
 
114
  == Frequently Asked Questions ==
115
 
187
 
188
  = I see no sitemap.xml file in my site root! =
189
 
190
+ There is no actual file created. The sitemap is dynamically generated just like a feed.
191
 
192
  = I see a sitemap.xml file in site root but it does not seem to get updated! =
193
 
207
 
208
  The absolute first thing you need to check is your blogs privacy settings. Go to **Settings > Privacy** and make sure you are **allowing search engines to index your site**. If they are blocked, your sitemap will _not_ be available.
209
 
210
+ Then, you might want to make sure that there is at least ONE post published. WordPress is known to send 404 status headers with feed requests when there are NO posts. Even though the plugin tries to prevent that, in some cases the wrong status header will get sent anyway and Google Webmaster Tools will report a vague message like:
211
+
212
+ We encountered an error while trying to access your Sitemap.
213
+ Please ensure your Sitemap follows our guidelines and can be
214
+ accessed at the location you provided and then resubmit.
215
+
216
  If that did not solve the issue, check the following errors that might be encountered along with their respective solutions:
217
 
218
  **404 page instead of my sitemap.xml**
293
 
294
  == Upgrade Notice ==
295
 
296
+ = 4.4 =
297
+ Google News Sitemap: limit posts to certain categories. Some (query) optimizations and bugfixes.
298
 
299
 
300
  == Changelog ==
301
 
302
+ = 4.4 =
303
+ * Pings max once per hour (5 minutes for news sitemap)
304
+ * Seperate ping for Google News Sitemap
305
+ * Append custom/static sitemaps to the index
306
+ * Include other post types in News Sitemap
307
+ * Optionally limit posts to certain categories in News Sitemap
308
+ * Noindex response header for sitemaps to keep them out of search results
309
+ * Static sitemap stylesheets
310
+ * Controversial default robots.txt rules removed
311
+ * DB query streamlining
312
+ * BUGFIX: fatal error on . (dot) as category base in permalinks
313
+ * BIGFIX: PHP Strict notices
314
+ * Force object cache flush on post publication
315
+
316
  = 4.3.2 =
317
+ * Italian translation
318
  * BUGFIX: html esc / filter image title and caption tags
319
  * BUGFIX: empty terms counted causing empty taxonomy sitemap appearing in index
320
  * BUGFIX: custom taxonomies where lastmod cannot be determined show empty lastmod tag
screenshot-1.png DELETED
Binary file
screenshot-2.png DELETED
Binary file
uninstall.php ADDED
@@ -0,0 +1,77 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ // if uninstall not called from WordPress exit
3
+ if (!defined('WP_UNINSTALL_PLUGIN'))
4
+ exit();
5
+
6
+ /*
7
+ * XML Sitemap Feed uninstallation
8
+ *
9
+ * @since 4.4
10
+ */
11
+ class XMLSitemapFeed_Uninstall {
12
+
13
+ /*
14
+ * constructor: manages uninstall for multisite
15
+ *
16
+ * @since 4.4
17
+ */
18
+ function __construct()
19
+ {
20
+ global $wpdb;
21
+
22
+ // check if it is a multisite uninstall - if so, run the uninstall function for each blog id
23
+ if ( is_multisite() && defined('XMLSF_MULTISITE_UNINSTALL') && XMLSF_MULTISITE_UNINSTALL ) {
24
+ error_log('Clearing XML Sitemap Feeds settings from each site brefore uninstall:');
25
+ foreach ($wpdb->get_col("SELECT blog_id FROM $wpdb->blogs") as $blog_id) {
26
+ switch_to_blog($blog_id);
27
+ $this->uninstall($blog_id);
28
+ }
29
+ restore_current_blog();
30
+ error_log('Done.');
31
+ }
32
+ else
33
+ $this->uninstall();
34
+ }
35
+
36
+ /*
37
+ * remove plugin data
38
+ *
39
+ * @since 4.4
40
+ */
41
+ function uninstall($blog_id = false)
42
+ {
43
+ /* TODO: find a way to delete tax terms without the plugin active and the tax being registered.
44
+ *
45
+ * Either replicate register_gn_taxonomies and clear_settings here...
46
+ * Or do something like (would this work at all? and on multisite with switch_to_blog?):
47
+ if ( class_exists('XMLSitemapFeed') || include_once( dirname(__FILE__) . '/includes/core.php' ) )
48
+ $xmlsf = new XMLSitemapFeed();
49
+ $xmlsf->clear_settings();
50
+ * But for now, stick to siple options removal:
51
+ */
52
+
53
+ // remove plugin settings
54
+ delete_option('xmlsf_version');
55
+ delete_option('xmlsf_sitemaps');
56
+ delete_option('xmlsf_post_types');
57
+ delete_option('xmlsf_taxonomies');
58
+ delete_option('xmlsf_news_sitemap');
59
+ delete_option('xmlsf_ping');
60
+ delete_option('xmlsf_robots');
61
+ delete_option('xmlsf_urls');
62
+ delete_option('xmlsf_custom_sitemaps');
63
+ delete_option('xmlsf_domains');
64
+ delete_option('xmlsf_news_tags');
65
+
66
+ // make rewrite rules update at the appropriate time
67
+ delete_option('rewrite_rules');
68
+
69
+ // one last 'Kilroy was here'
70
+ if ($blog_id)
71
+ error_log('XML Sitemap Feeds settings cleared from site '.$blog_id.'.');
72
+ else
73
+ error_log('XML Sitemap Feeds settings cleared before uninstall.');
74
+ }
75
+ }
76
+
77
+ new XMLSitemapFeed_Uninstall();
xml-sitemap.php CHANGED
@@ -4,17 +4,18 @@ Plugin Name: XML Sitemap & Google News feeds
4
  Plugin URI: http://status301.net/wordpress-plugins/xml-sitemap-feed/
5
  Description: Feed the hungry spiders in compliance with the XML Sitemap and Google News protocols. Happy with the results? Please leave me a <strong><a href="https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=ravanhagen%40gmail%2ecom&item_name=XML%20Sitemap%20Feed&item_number=4%2e0&no_shipping=0&tax=0&bn=PP%2dDonationsBF&charset=UTF%2d8&lc=us">tip</a></strong> for continued development and support. Thanks :)
6
  Text Domain: xml-sitemap-feed
7
- Version: 4.3.2
8
  Author: RavanH
9
  Author URI: http://status301.net/
10
  */
11
 
12
- /* Copyright 2013 RavanH http://status301.net/ email: ravanhagen@gmail.com
 
 
13
 
14
  This program is free software; you can redistribute it and/or modify
15
- it under the terms of the GNU General Public License as published by
16
- the Free Software Foundation; either version 2 of the License, or
17
- (at your option) any later version.
18
 
19
  This program is distributed in the hope that it will be useful,
20
  but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -27,21 +28,14 @@ Author URI: http://status301.net/
27
  * --------------------
28
  *
29
  * FILTERS
30
- * xml_sitemap_url -> Filters the URL used in the sitemap reference in robots.txt
31
- * (deprecated) (receives an ARRAY and MUST return one; can be multiple urls)
32
- * and for the home URL in the sitemap (receives a STRING and MUST
33
- * return one) itself. Useful for multi language plugins or other
34
- * plugins that affect the blogs main URL... See pre-defined filter
35
- * XMLSitemapFeed::qtranslate() in XMLSitemapFeed.class.php as an
36
- * example.
37
- * xmlsf_defaults -> Filters the default array values for different option groups.
38
  * xmlsf_allowed_domain -> Filters the response when checking the url against allowed domains.
39
  * Can be true or false.
40
- * the_title_xmlsitemap -> Filters the Google News publication name, title and keywords
41
  and Image title and caption tags
42
 
43
  * ACTIONS
44
- * [ none at this point, but feel free to request, suggest or submit one :) ]
45
  *
46
  */
47
 
@@ -52,16 +46,49 @@ if(!empty($_SERVER['SCRIPT_FILENAME']) && 'xml-sitemap.php' == basename($_SERVER
52
  * CONSTANTS
53
  * -------------------- */
54
 
55
- define('XMLSF_VERSION', '4.3.2');
 
 
 
 
 
 
 
 
 
 
56
 
57
- if ( file_exists ( dirname(__FILE__).'/xml-sitemap-feed' ) )
58
- define('XMLSF_PLUGIN_DIR', dirname(__FILE__) . '/xml-sitemap-feed');
59
- else
60
  define('XMLSF_PLUGIN_DIR', dirname(__FILE__));
61
 
62
- define('XMLSF_PLUGIN_BASENAME', plugin_basename(__FILE__));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
63
 
64
- /* The following constants can be used to change plugin defaults by defining them in wp-config.php */
65
 
66
  /*
67
  * XMLSF_POST_TYPE
@@ -73,13 +100,6 @@ define('XMLSF_PLUGIN_BASENAME', plugin_basename(__FILE__));
73
  * define('XMLSF_POST_TYPE', 'post,page');
74
  */
75
 
76
- /*
77
- * XMLSF_NAME
78
- *
79
- * Pretty permalink name for the main sitemap (index)
80
- */
81
- if ( !defined('XMLSF_NAME') )
82
- define('XMLSF_NAME', 'sitemap.xml');
83
 
84
  /*
85
  * XMLSF_POST_TYPE_NEWS_TAGS
@@ -92,32 +112,30 @@ if ( !defined('XMLSF_NAME') )
92
  * define('XMLSF_POST_TYPE_NEWS_TAGS', 'post,mycustomtype');
93
  */
94
 
95
-
96
- /*
97
- * XMLSF_NEWS_NAME
98
- *
99
- * Pretty permalink name for the news sitemap
100
- */
101
- if ( !defined('XMLSF_NEWS_NAME') )
102
- define('XMLSF_NEWS_NAME', 'sitemap-news.xml');
103
 
104
  /*
105
  * XMLSF_NEWS_POST_TYPE
106
  *
107
  * Post types to include in dedicated news sitemap
 
 
 
 
108
  */
109
- if ( !defined('XMLSF_NEWS_POST_TYPE') )
110
- define('XMLSF_NEWS_POST_TYPE', 'post');
111
 
112
- /*
113
- * XMLSF_GOOGLE_NEWS_TITLE
 
 
 
 
 
114
  *
115
- * Google News name, if different than site name
116
- * TODO
117
  */
118
 
119
 
120
-
121
  /* -------------------------------------
122
  * MISSING WORDPRESS FUNCTIONS
123
  * ------------------------------------- */
@@ -130,4 +148,3 @@ include_once(XMLSF_PLUGIN_DIR . '/hacks.php');
130
 
131
  if ( class_exists('XMLSitemapFeed') || include_once( XMLSF_PLUGIN_DIR . '/includes/core.php' ) )
132
  $xmlsf = new XMLSitemapFeed();
133
-
4
  Plugin URI: http://status301.net/wordpress-plugins/xml-sitemap-feed/
5
  Description: Feed the hungry spiders in compliance with the XML Sitemap and Google News protocols. Happy with the results? Please leave me a <strong><a href="https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=ravanhagen%40gmail%2ecom&item_name=XML%20Sitemap%20Feed&item_number=4%2e0&no_shipping=0&tax=0&bn=PP%2dDonationsBF&charset=UTF%2d8&lc=us">tip</a></strong> for continued development and support. Thanks :)
6
  Text Domain: xml-sitemap-feed
7
+ Version: 4.4
8
  Author: RavanH
9
  Author URI: http://status301.net/
10
  */
11
 
12
+ /* Copyright 2015 RavanH
13
+ http://status301.net/
14
+ mailto: ravanhagen@gmail.com
15
 
16
  This program is free software; you can redistribute it and/or modify
17
+ it under the terms of the GNU General Public License version 3 as
18
+ published by the Free Software Foundation.
 
19
 
20
  This program is distributed in the hope that it will be useful,
21
  but WITHOUT ANY WARRANTY; without even the implied warranty of
28
  * --------------------
29
  *
30
  * FILTERS
31
+ * xmlsf_defaults -> Filters the default array values for different option groups.
 
 
 
 
 
 
 
32
  * xmlsf_allowed_domain -> Filters the response when checking the url against allowed domains.
33
  * Can be true or false.
34
+ * the_title_xmlsitemap -> Filters the Google News publication name, title and keywords
35
  and Image title and caption tags
36
 
37
  * ACTIONS
38
+ * none at this point, but feel free to request, suggest or submit one :)
39
  *
40
  */
41
 
46
  * CONSTANTS
47
  * -------------------- */
48
 
49
+ define('XMLSF_VERSION', '4.4');
50
+
51
+ define('XMLSF_PLUGIN_BASENAME', plugin_basename(__FILE__));
52
+
53
+ if ( file_exists ( dirname(__FILE__).'/xml-sitemap-feed' ) ) :
54
+
55
+ define('XMLSF_PLUGIN_DIR', dirname(__FILE__).'/xml-sitemap-feed');
56
+
57
+ define('XMLSF_PLUGIN_URL', plugins_url('/xml-sitemap-feed',__FILE__) );
58
+
59
+ else :
60
 
 
 
 
61
  define('XMLSF_PLUGIN_DIR', dirname(__FILE__));
62
 
63
+ define('XMLSF_PLUGIN_URL', plugins_url('',__FILE__));
64
+
65
+ endif;
66
+
67
+
68
+ /*
69
+ * The following constants can be used to change plugin defaults
70
+ * by defining them in wp-config.php
71
+ */
72
+
73
+ /*
74
+ * XMLSF_NAME
75
+ *
76
+ * Pretty permalink name for the main sitemap (index)
77
+ */
78
+
79
+ if ( !defined('XMLSF_NAME') )
80
+
81
+ define('XMLSF_NAME', 'sitemap.xml');
82
+
83
+ /*
84
+ * XMLSF_NEWS_NAME
85
+ *
86
+ * Pretty permalink name for the news sitemap
87
+ */
88
+
89
+ if ( !defined('XMLSF_NEWS_NAME') )
90
 
91
+ define('XMLSF_NEWS_NAME', 'sitemap-news.xml');
92
 
93
  /*
94
  * XMLSF_POST_TYPE
100
  * define('XMLSF_POST_TYPE', 'post,page');
101
  */
102
 
 
 
 
 
 
 
 
103
 
104
  /*
105
  * XMLSF_POST_TYPE_NEWS_TAGS
112
  * define('XMLSF_POST_TYPE_NEWS_TAGS', 'post,mycustomtype');
113
  */
114
 
 
 
 
 
 
 
 
 
115
 
116
  /*
117
  * XMLSF_NEWS_POST_TYPE
118
  *
119
  * Post types to include in dedicated news sitemap
120
+ * default: 'post'
121
+ *
122
+ * example:
123
+ * define('XMLSF_NEWS_POST_TYPE', 'post,news');
124
  */
 
 
125
 
126
+ /*
127
+ * XMLSF_MULTISITE_UNINSTALL
128
+ *
129
+ * Set this constant in wp-config.php if you want to allow looping over each site
130
+ * in the network to run XMLSitemapFeed_Uninstall->uninstall() defined in uninstall.php
131
+ *
132
+ * Be careful: There is NO batch-processing so it does not scale on large networks!
133
  *
134
+ * example:
135
+ * define('XMLSF_MULTISITE_UNINSTALL', true);
136
  */
137
 
138
 
 
139
  /* -------------------------------------
140
  * MISSING WORDPRESS FUNCTIONS
141
  * ------------------------------------- */
148
 
149
  if ( class_exists('XMLSitemapFeed') || include_once( XMLSF_PLUGIN_DIR . '/includes/core.php' ) )
150
  $xmlsf = new XMLSitemapFeed();