XML Sitemap & Google News feeds - Version 4.3.2

Version Description

Custom domains and URLs. Major Google News sitemap settings changes. Plus bugfixes.

=

Download this release

Release Info

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

Code changes from version 4.0.1 to 4.3.2

hacks.php CHANGED
@@ -194,11 +194,22 @@ if( !function_exists('get_firstmodified') ) {
194
  * @uses apply_filters() Calls 'get_lastdate' filter
195
  *
196
  * @param string $timezone The location to get the time. Can be 'gmt', 'blog', or 'server'.
 
197
  * @return string The date of the last post.
198
  */
199
  if( !function_exists('get_lastdate') ) {
200
- function get_lastdate($timezone = 'server', $post_type = 'any') {
201
- return apply_filters( 'get_lastdate', _get_time( $timezone, 'date', $post_type ), $timezone );
 
 
 
 
 
 
 
 
 
 
202
  }
203
  }
204
 
@@ -215,14 +226,14 @@ if( !function_exists('get_lastdate') ) {
215
  * @return string The date of the oldest modified post.
216
  */
217
  if( !function_exists('get_lastmodified') ) {
218
- function get_lastmodified($timezone = 'server', $post_type = 'any') {
219
- $lastmodified = _get_time( $timezone, 'modified', $post_type );
220
 
221
- $lastdate = get_lastdate($timezone, $post_type);
222
- if ( $lastdate > $lastmodified )
223
- $lastmodified = $lastdate;
224
 
225
- return apply_filters( 'get_lastmodified', $lastmodified, $timezone );
226
  }
227
  }
228
 
@@ -239,7 +250,7 @@ if( !function_exists('get_lastmodified') ) {
239
  * @return string The date.
240
  */
241
  if( !function_exists('_get_time') ) {
242
- function _get_time( $timezone, $field, $post_type = 'any', $which = 'last' ) {
243
  global $wpdb;
244
 
245
  if ( !in_array( $field, array( 'date', 'modified' ) ) )
@@ -249,7 +260,7 @@ if( !function_exists('_get_time') ) {
249
 
250
  $order = ( $which == 'last' ) ? 'DESC' : 'ASC';
251
 
252
- $key = ( $post_type == 'any' ) ? "{$which}post{$field}:$timezone" : "{$which}posttype{$post_type}{$field}:$timezone";
253
 
254
  $date = wp_cache_get( $key, 'timeinfo' );
255
 
@@ -273,18 +284,28 @@ if( !function_exists('_get_time') ) {
273
  $post_types = "'" . addslashes($post_type) . "'";
274
  }
275
 
 
 
 
 
 
 
 
 
 
276
  switch ( $timezone ) {
277
  case 'gmt':
278
- $date = $wpdb->get_var("SELECT post_{$field}_gmt FROM $wpdb->posts WHERE post_status = 'publish' AND post_type IN ({$post_types}) ORDER BY post_{$field}_gmt {$order} LIMIT 1");
279
  break;
280
  case 'blog':
281
- $date = $wpdb->get_var("SELECT post_{$field} FROM $wpdb->posts WHERE post_status = 'publish' AND post_type IN ({$post_types}) ORDER BY post_{$field}_gmt {$order} LIMIT 1");
282
  break;
283
  case 'server':
284
- $date = $wpdb->get_var("SELECT DATE_ADD(post_{$field}_gmt, INTERVAL '$add_seconds_server' SECOND) FROM $wpdb->posts WHERE post_status = 'publish' AND post_type IN ({$post_types}) ORDER BY post_{$field}_gmt {$order} LIMIT 1");
285
  break;
286
  }
287
 
 
288
  if ( $date )
289
  wp_cache_set( $key, $date, 'timeinfo' );
290
  }
194
  * @uses apply_filters() Calls 'get_lastdate' filter
195
  *
196
  * @param string $timezone The location to get the time. Can be 'gmt', 'blog', or 'server'.
197
+ * @param $post_types The post type(s). Can be string or array.
198
  * @return string The date of the last post.
199
  */
200
  if( !function_exists('get_lastdate') ) {
201
+ function get_lastdate($timezone = 'server', $post_types = 'any', $m = false) {
202
+
203
+ if (!is_array($post_types))
204
+ $post_types = array($post_types);
205
+
206
+ $lastmodified = array();
207
+ foreach ($post_types as $post_type)
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
 
226
  * @return string The date of the oldest modified post.
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
  }
239
 
250
  * @return string The date.
251
  */
252
  if( !function_exists('_get_time') ) {
253
+ function _get_time( $timezone, $field, $post_type = 'any', $which = 'last', $m = 0 ) {
254
  global $wpdb;
255
 
256
  if ( !in_array( $field, array( 'date', 'modified' ) ) )
260
 
261
  $order = ( $which == 'last' ) ? 'DESC' : 'ASC';
262
 
263
+ $key = ( $post_type == 'any' ) ? "{$which}post{$field}{$m}:$timezone" : "{$which}posttype{$post_type}{$field}{$m}:$timezone";
264
 
265
  $date = wp_cache_get( $key, 'timeinfo' );
266
 
284
  $post_types = "'" . addslashes($post_type) . "'";
285
  }
286
 
287
+ $where = "$wpdb->posts.post_status='publish' AND $wpdb->posts.post_type IN ({$post_types}) AND $wpdb->posts.post_date_gmt ";
288
+ // If a month is specified in the querystring, load that month
289
+ $m = preg_replace('|[^0-9]|', '', $m);
290
+ if ( !empty($m) ) {
291
+ $where .= " AND YEAR($wpdb->posts.post_date)=" . substr($m, 0, 4);
292
+ if ( strlen($m) > 5 )
293
+ $where .= " AND MONTH($wpdb->posts.post_date)=" . substr($m, 4, 2);
294
+ }
295
+
296
  switch ( $timezone ) {
297
  case 'gmt':
298
+ $date = $wpdb->get_var("SELECT post_{$field}_gmt FROM $wpdb->posts WHERE $where ORDER BY $wpdb->posts.post_{$field}_gmt {$order} LIMIT 1");
299
  break;
300
  case 'blog':
301
+ $date = $wpdb->get_var("SELECT post_{$field} FROM $wpdb->posts WHERE $where ORDER BY $wpdb->posts.post_{$field}_gmt {$order} LIMIT 1");
302
  break;
303
  case 'server':
304
+ $date = $wpdb->get_var("SELECT DATE_ADD(post_{$field}_gmt, INTERVAL '$add_seconds_server' SECOND) FROM $wpdb->posts WHERE $where ORDER BY $wpdb->posts.post_{$field}_gmt {$order} LIMIT 1");
305
  break;
306
  }
307
 
308
+
309
  if ( $date )
310
  wp_cache_set( $key, $date, 'timeinfo' );
311
  }
includes/admin.php CHANGED
@@ -9,10 +9,27 @@
9
  * SETTINGS
10
  */
11
 
12
- // add our FancyBox Media Settings Section on Settings > Media admin page
13
- // TODO get a donation button in there and refer to support forum !
14
- public function privacy_settings_section() {
15
- 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&currency_code=EUR" title="'.__('Donate to keep the free XML Sitemap Feeds plugin development & support going!','easy-fancybox').'"><img src="https://www.paypalobjects.com/en_US/i/btn/btn_donate_LG.gif" style="border:none;float:right;margin:5px 0 0 10px" alt="'.__('Donate to keep the free XML Sitemap Feeds plugin development & support going!','easy-fancybox').'" width="92" height="26" /></a>'.__('These settings control the XML Sitemap generation.','xml-sitemap-feed').' '.sprintf(__('XML Sitemaps are disabled if you have set the option %s (above) to %s.','xml-sitemap-feed'),'<strong>'.__('Site Visibility').'</strong>','<strong>'.__('Discourage search engines from indexing this site').'</strong>').'</p>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
16
  <script type="text/javascript">
17
  jQuery( document ).ready( function() {
18
  jQuery( "input[name=\'blog_public\']" ).on( \'change\', function() {
@@ -20,109 +37,480 @@
20
  var $this = jQuery(this);
21
  $this.attr("disabled") ? $this.removeAttr("disabled") : $this.attr("disabled", "disabled");
22
  });
23
- });
24
- jQuery( "#xmlsf_sitemaps_index" ).on( \'change\', function() {
25
- jQuery("#xmlsf_post_types input,#xmlsf_taxonomies input").each(function() {
26
  var $this = jQuery(this);
27
  $this.attr("disabled") ? $this.removeAttr("disabled") : $this.attr("disabled", "disabled");
28
  });
29
  });
 
 
 
 
 
 
 
 
 
 
 
 
30
  });
31
  </script>';
32
  }
33
-
34
- public function sitemaps_settings_field() {
35
- $options = parent::get_sitemaps();
36
- $disabled = ('1' == get_option('blog_public')) ? false : true;
37
 
38
- echo '<div id="xmlsf_sitemaps">
39
- <label><input type="checkbox" name="xmlsf_sitemaps[sitemap]" id="xmlsf_sitemaps_index" value="'.XMLSF_NAME.'" '.checked(XMLSF_NAME, $options['sitemap'], false).' '.disabled($disabled, true, false).' /> '.__('Regular XML Sitemaps','xml-sitemap-feed').'</label>';
40
- if (isset($options['sitemap']))
41
- echo '<span class="description"> - <a href="'.trailingslashit(get_bloginfo('url')). ( ('' == get_option('permalink_structure')) ? '?feed=sitemap' : $options['sitemap'] ) .'" target="_blank">'.__('View').'</a></span>';
42
- //<a href="#">'.__('Settings').'</a> | <a href="#">'.__('Advanced').'</a> | <a href="#">'.__('Advanced Settings').'</a> | ...
43
- //__('Note: if you do not include any post or taxonomy types below, the sitemap will only contain your sites root url.','xml-sitemap-feed')
44
- echo '<br />
45
- <label><input type="checkbox" name="xmlsf_sitemaps[sitemap-news]" id="xmlsf_sitemaps_news" value="'.XMLSF_NEWS_NAME.'" '.checked(XMLSF_NEWS_NAME, $options['sitemap-news'], false).' '.disabled($disabled, true, false).' /> '.__('Google News Sitemap','xml-sitemap-feed').'</label>';
46
- if (isset($options['sitemap-news']))
47
- echo '<span class="description"> - <a href="'.trailingslashit(get_bloginfo('url')). ( ('' == get_option('permalink_structure')) ? '?feed=sitemap-news' : $options['sitemap-news'] ) .'" target="_blank">'.__('View').'</a></span>';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
48
  echo '
49
- </div>';
50
  }
51
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
52
  public function post_types_settings_field() {
53
  $options = parent::get_post_types();
54
- $sitemaps = parent::get_sitemaps();
55
- $disabled = (isset($sitemaps['sitemap'])) ? false : true;
 
56
 
57
- echo '<div id="xmlsf_post_types">
58
  ';
59
  foreach ( get_post_types(array('public'=>true),'objects') as $post_type ) {
60
- $count = wp_count_posts( $post_type->name );
 
 
61
 
 
 
62
  echo '
63
- <label><input type="checkbox" name="xmlsf_post_types['.
 
 
 
 
 
64
  $post_type->name.'][active]" id="xmlsf_post_types_'.
65
- $post_type->name.'" value="1"'.
66
- checked( !empty($options[$post_type->name]["active"]), true, false).
67
- disabled($disabled, true, false).' /> '.
68
  $post_type->label.'</label> ('.
69
  $count->publish.')';
70
 
71
- echo '
72
- <input type="hidden" name="xmlsf_post_types['.
73
- $post_type->name.'][name]" value="'.
74
- $post_type->name.'" />';
75
- /* Find a better way...
76
- if ( !empty($options[$post_type->name]["tags"]) )
77
- foreach ( (array)$options[$post_type->name]["tags"] as $tag )
78
- echo '
79
- <input type="hidden" name="xmlsf_post_types['.
80
- $post_type->name.'][tags][]" value="'.$tag.'" />';
81
- else
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
82
  echo '
83
- <input type="hidden" name="xmlsf_post_types['.
84
- $post_type->name.'][tags][]" value="image" />
85
- <input type="hidden" name="xmlsf_post_types['.
86
- $post_type->name.'][tags][]" value="video" />';
 
 
 
 
 
 
 
 
 
 
 
 
87
 
88
- echo ( !empty( $options[$post_type->name]["split_by"] ) ) ? '
89
- <input type="hidden" name="xmlsf_post_types['.
90
- $post_type->name.'][split_by]" value="'.
91
- $options[$post_type->name]["split_by"].'" />' : '';*/
92
- echo '
93
- <br />';
94
  }
 
95
  echo '
96
- </div>';
 
 
 
 
 
 
 
 
 
 
 
 
97
  }
98
 
99
  public function taxonomies_settings_field() {
100
  $options = parent::get_taxonomies();
101
- $sitemaps = parent::get_sitemaps();
102
- $disabled = (isset($sitemaps['sitemap'])) ? false : true;
 
103
 
104
- echo '<div id="xmlsf_taxonomies">
105
- ';
106
  foreach ( get_taxonomies(array('public'=>true),'objects') as $taxonomy ) {
 
 
 
 
 
 
 
 
 
 
107
  $count = wp_count_terms( $taxonomy->name );
108
- echo '
109
- <label><input type="checkbox" name="xmlsf_taxonomies['.
110
  $taxonomy->name.']" id="xmlsf_taxonomies_'.
111
  $taxonomy->name.'" value="'.
112
  $taxonomy->name.'"'.
113
- checked(in_array($taxonomy->name,$options), true, false).
114
- disabled($disabled, true, false).' /> '.
115
  $taxonomy->label.'</label> ('.
116
- $count.')<br />';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
117
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
118
  echo '
119
- </div>';
120
  }
121
 
122
- public function robots_settings_field() {
123
- echo '<label for="xmlsf_robots">'.sprintf(__('Rules to append to %s generated by WordPress.','xml-sitemap-feed'),'<a href="'.trailingslashit(get_bloginfo('url')).'robots.txt" target="_blank">robots.txt</a>').'</label><br /><textarea name="xmlsf_robots" id="xmlsf_robots" class="large-text"'.disabled($disabled, true, false).' cols="50" rows="5" />'.esc_attr( parent::get_robots() ).'</textarea><p class="description"'.__('Warning: Only set rules here when you know what you are doing, otherwise you might break access to your site.<br />Note: These rules will not have effect when you are using a static robots.txt file.','xml-sitemap-feed').'</p>';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
124
  }
125
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
126
  //sanitize callback functions
127
 
128
  public function sanitize_robots_settings($new) {
@@ -131,77 +519,322 @@
131
 
132
  public function sanitize_sitemaps_settings($new) {
133
  $old = parent::get_sitemaps();
134
- if ($old != $new) // when sitemaps are added or removed, set transient to flush rewrite rules after updating
135
- set_transient('xmlsf_flush_rewrite_rules','');
136
- return $new;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
137
  }
138
 
139
- public function sanitize_post_types_settings($new) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
140
  $old = parent::get_post_types();
141
- if ($old != $new) // when post types are added or removed, set transient to flush rewrite rules after updating
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
142
  set_transient('xmlsf_flush_rewrite_rules','');
143
- return $new;
 
 
 
 
 
 
 
 
 
 
 
144
  }
145
 
146
  public function sanitize_taxonomies_settings($new) {
147
  $old = parent::get_taxonomies();
148
- if ($old != $new) // when taxonomy types are added or removed, set transient to flush rewrite rules after updating
 
149
  set_transient('xmlsf_flush_rewrite_rules','');
 
150
  return $new;
151
  }
152
 
153
- public function sanitize_pings_settings($new) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
154
  return $new;
155
  }
 
156
 
157
- // do we need intval some day soon ? maybe for priority calc settings ? or remove ...
158
- public function intval($setting = '') {
159
- if ($setting == '')
160
- return '';
161
 
162
- if (substr($setting, -1) == '%') {
163
- $val = intval(substr($setting, 0, -1));
164
- $prc = '%';
165
- } else {
166
- $val = intval($setting);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
167
  }
168
-
169
- return ( $val != 0 ) ? $val.$prc : 0;
170
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
171
 
 
172
 
173
  /**
174
  * CONSTRUCTOR
175
  */
176
 
177
- function XMLSitemapFeed() {
178
- //constructor in php4
179
- $this->__construct(); // just call the php5 one.
180
- }
181
-
182
  function __construct() {
 
 
 
183
 
184
- // SETTINGS
185
- add_settings_section('xmlsf_main_section', __('XML Sitemaps','xml-sitemap-feed'), array($this,'privacy_settings_section'), 'reading');
186
  // sitemaps
187
- register_setting('reading', 'xmlsf_sitemaps', array($this,'sanitize_sitemaps_settings') );
188
- add_settings_field('xmlsf_sitemaps', __('Enable XML sitemaps','xml-sitemap-feed'), array($this,'sitemaps_settings_field'), 'reading', 'xmlsf_main_section');
189
- // post_types
190
- register_setting('reading', 'xmlsf_post_types', array($this,'sanitize_post_types_settings') );
191
- add_settings_field('xmlsf_post_types', __('Include post types','xml-sitemap-feed'), array($this,'post_types_settings_field'), 'reading', 'xmlsf_main_section');
192
- // taxonomies
193
- register_setting('reading', 'xmlsf_taxonomies', array($this,'sanitize_taxonomies_settings') );
194
- add_settings_field('xmlsf_taxonomies', __('Include taxonomies','xml-sitemap-feed'), array($this,'taxonomies_settings_field'), 'reading', 'xmlsf_main_section');
195
- // pings
196
- //register_setting('privacy', 'xmlsf_pings', array($this,'sanitize_pings_settings') );
197
-
 
 
 
198
  //robots only when permalinks are set
199
  if(''!=get_option('permalink_structure')) {
200
- register_setting('reading', 'xmlsf_robots', array($this,'sanitize_robots_settings') );
201
- add_settings_field('xmlsf_robots', __('Additional robots.txt rules','xml-sitemap-feed'), array($this,'robots_settings_field'), 'reading', 'xmlsf_main_section');
202
  }
203
-
204
- //add_filter('plugin_action_links_' . plugin_basename(__FILE__), 'easy_fancybox_add_action_link');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
205
  }
206
 
207
  }
9
  * SETTINGS
10
  */
11
 
12
+ // TODO refer to support forum !
13
+
14
+ public function sitemaps_settings_field() {
15
+ $options = parent::get_sitemaps();
16
+ $disabled = ('1' == get_option('blog_public')) ? false : true;
17
+ $prefix = parent::prefix();
18
+
19
+ echo '<fieldset id="xmlsf_sitemaps"><legend class="screen-reader-text">'.__('XML Sitemaps','xml-sitemap-feed').'</legend>
20
+ <label><input type="checkbox" name="'.$prefix.'sitemaps[sitemap]" id="xmlsf_sitemaps_index" value="'.XMLSF_NAME.'" '.checked(isset($options['sitemap']), true, false).' '.disabled($disabled, true, false).' /> '.__('XML Sitemap Index','xml-sitemap-feed').'</label>';//xmlsf
21
+ if (isset($options['sitemap']))
22
+ echo '<span class="description"> &nbsp;&ndash;&nbsp; <a href="#xmlsf" id="xmlsf_link">'.translate('Settings').'</a> &nbsp;&ndash;&nbsp; <a href="'.trailingslashit(get_bloginfo('url')). ( ('' == get_option('permalink_structure')) ? '?feed=sitemap' : $options['sitemap'] ) .'" target="_blank">'.translate('View').'</a></span>';
23
+
24
+ echo '<br />
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 '
33
  <script type="text/javascript">
34
  jQuery( document ).ready( function() {
35
  jQuery( "input[name=\'blog_public\']" ).on( \'change\', function() {
37
  var $this = jQuery(this);
38
  $this.attr("disabled") ? $this.removeAttr("disabled") : $this.attr("disabled", "disabled");
39
  });
40
+ jQuery("#xmlsf_ping input").each(function() {
 
 
41
  var $this = jQuery(this);
42
  $this.attr("disabled") ? $this.removeAttr("disabled") : $this.attr("disabled", "disabled");
43
  });
44
  });
45
+ jQuery( "#xmlsf_link" ).click( function(event) {
46
+ event.preventDefault();
47
+ jQuery("html, body").animate({
48
+ scrollTop: jQuery("a[name=\'xmlsf\']").offset().top - 30
49
+ }, 1000);
50
+ });
51
+ jQuery( "#xmlnf_link" ).click( function(event) {
52
+ event.preventDefault();
53
+ jQuery("html, body").animate({
54
+ scrollTop: jQuery("a[name=\'xmlnf\']").offset().top - 30
55
+ }, 1000);
56
+ });
57
  });
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 (
69
+ 'name' => __('Google','xml-sitemap-feed'),
70
+ ),
71
+ 'bing' => array (
72
+ 'name' => __('Bing & Yahoo','xml-sitemap-feed'),
73
+ ),
74
+ 'yandex' => array (
75
+ 'name' => __('Yandex','xml-sitemap-feed'),
76
+ ),
77
+ 'baidu' => array (
78
+ 'name' => __('Baidu','xml-sitemap-feed'),
79
+ ),
80
+ 'others' => array (
81
+ 'name' => __('Ping-O-Matic','xml-sitemap-feed'),
82
+ )
83
+ );
84
+ foreach ( $names as $key => $values ) {
85
+ if (array_key_exists($key,$defaults) && is_array($values))
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['.
104
+ $key.'][active]" id="xmlsf_ping_'.
105
+ $key.'" value="1"'.
106
+ checked( $active, true, false).' /> ';
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
+
117
  echo '
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
+ /**
137
+ * XML SITEMAP SECTION
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() {
145
  $options = parent::get_post_types();
146
+ $defaults = parent::defaults('post_types');
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;
156
 
157
+ $count = wp_count_posts( $post_type->name );
158
+
159
  echo '
160
+ <input type="hidden" name="'.$prefix.'post_types['.
161
+ $post_type->name.'][name]" value="'.
162
+ $post_type->name.'" />';
163
+
164
+ echo '
165
+ <label><input type="checkbox" name="'.$prefix.'post_types['.
166
  $post_type->name.'][active]" id="xmlsf_post_types_'.
167
+ $post_type->name.'" value="1" '.
168
+ checked( !empty($options[$post_type->name]["active"]), true, false).' /> '.
 
169
  $post_type->label.'</label> ('.
170
  $count->publish.')';
171
 
172
+ if (!empty($options[$post_type->name]['active'])) {
173
+
174
+ echo ' &nbsp;&ndash;&nbsp; <span class="description"><a id="xmlsf_post_types_'.$post_type->name.'_link" href="#xmlsf_post_types_'.$post_type->name.'_settings">'.translate('Settings').'</a></span><br />
175
+ <script type="text/javascript">
176
+ jQuery( document ).ready( function() {
177
+ jQuery("#xmlsf_post_types_'.$post_type->name.'_settings").hide();
178
+ jQuery("#xmlsf_post_types_'.$post_type->name.'_link").click( function(event) {
179
+ event.preventDefault();
180
+ jQuery("#xmlsf_post_types_'.$post_type->name.'_settings").toggle("slow");
181
+ });
182
+ });
183
+ </script>
184
+ <ul style="margin-left:18px" id="xmlsf_post_types_'.$post_type->name.'_settings">';
185
+
186
+
187
+ if ( isset($defaults[$post_type->name]['archive']) ) {
188
+ $archives = array (
189
+ 'yearly' => __('Year','xml-sitemap-feed'),
190
+ 'monthly' => __('Month','xml-sitemap-feed')
191
+ );
192
+ $archive = !empty($options[$post_type->name]['archive']) ? $options[$post_type->name]['archive'] : $defaults[$post_type->name]['archive'];
193
+ echo '
194
+ <li><label>'.__('Split by','xml-sitemap-feed').' <select name="'.$prefix.'post_types['.
195
+ $post_type->name.'][archive]" id="xmlsf_post_types_'.
196
+ $post_type->name.'_archive">
197
+ <option value="">'.translate('None').'</option>';
198
+ foreach ($archives as $value => $translation)
199
+ echo '
200
+ <option value="'.$value.'" '.
201
+ selected( $archive == $value, true, false).
202
+ '>'.$translation.'</option>';
203
+ echo '</select>
204
+ </label> <span class="description"> '.__('Split by year if you experience errors or slow sitemaps. In very rare cases, split by month is needed.','xml-sitemap-feed').'</span></li>';
205
+ }
206
+
207
+ $priority_val = !empty($options[$post_type->name]['priority']) ? $options[$post_type->name]['priority'] : $defaults[$post_type->name]['priority'];
208
+ echo '
209
+ <li><label>'.__('Priority','xml-sitemap-feed').' <input type="number" step="0.1" min="0.1" max="0.9" name="'.$prefix.'post_types['.
210
+ $post_type->name.'][priority]" id="xmlsf_post_types_'.
211
+ $post_type->name.'_priority" value="'.$priority_val.'" class="small-text"></label> <span class="description">'.__('Priority can be overridden on individual posts.','xml-sitemap-feed').' *</span></li>';
212
+
213
+ echo '
214
+ <li><label><input type="checkbox" name="'.$prefix.'post_types['.
215
+ $post_type->name.'][dynamic_priority]" value="1" '.
216
+ checked( !empty($options[$post_type->name]['dynamic_priority']), true, false).' /> '.__('Automatically adjusts Priority according to relative age and comment count.','xml-sitemap-feed').'</label> <span class="description">'.__('Sticky posts will not be subject to reduction by age. Individual posts with fixed Priority will always keep that value.','xml-sitemap-feed').'</span></li>';
217
+
218
  echo '
219
+ <li><label><input type="checkbox" name="'.$prefix.'post_types['.
220
+ $post_type->name.'][update_lastmod_on_comments]" value="1" '.
221
+ checked( !empty($options[$post_type->name]["update_lastmod_on_comments"]), true, false).' /> '.__('Update Lastmod and Changefreq on comments.','xml-sitemap-feed').'</label> <span class="description">'.__('Set this if discussion on your site warrants reindexation upon each new comment.','xml-sitemap-feed').'</li>';
222
+
223
+ $image = isset($options[$post_type->name]['tags']['image']) ? $options[$post_type->name]['tags']['image'] : $defaults[$post_type->name]['tags']['image'];
224
+ echo '
225
+ <li><label>'.__('Add image tags for','xml-sitemap-feed').' <select name="'.$prefix.'post_types['.
226
+ $post_type->name.'][tags][image]">
227
+ <option value="">'.translate('None').'</option>
228
+ <option value="featured" '.
229
+ selected( $image == "featured", true, false).
230
+ '>'.translate('Featured Image').'</option>
231
+ <option value="attached" '.
232
+ selected( $image == "attached", true, false).
233
+ '>'.__('Attached images','xml-sitemap-feed').'</option>
234
+ </select></label></li>
235
 
236
+ </ul>';
237
+ } else {
238
+ echo '<br />';
239
+ }
 
 
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();
247
+ jQuery("#xmlsf_post_types_note_1_link").click( function(event) {
248
+ event.preventDefault();
249
+ jQuery("#xmlsf_post_types_note_1_link").hide();
250
+ jQuery("#xmlsf_post_types_note_1_more").show("slow");
251
+ });
252
+ });
253
+ </script>';
254
+ echo '
255
+ </fieldset>';
256
  }
257
 
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 ) {
265
+ // skip unallowed post types
266
+ if (in_array($taxonomy->name,parent::disabled_taxonomies()))
267
+ continue;
268
+
269
+ $skip = true;
270
+ foreach ( $taxonomy->object_type as $post_type)
271
+ if (!empty($active[$post_type]['active']) && $active[$post_type]['active'] == '1')
272
+ $skip = false;
273
+ if ($skip) continue; // skip if none of the associated post types are active
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.'"'.
281
+ checked(in_array($taxonomy->name,$options), true, false).' /> '.
 
282
  $taxonomy->label.'</label> ('.
283
+ $count.') ';
284
+
285
+ // if ( in_array($taxonomy->name,$options) && empty($taxonomy->show_tagcloud) )
286
+ // echo '<span class="description error" style="color: red">'.__('This taxonomy type might not be suitable for public use. Please check the urls in the taxonomy sitemap.','xml-sitemap-feed').'</span>';
287
+
288
+ $output .= '
289
+ <br />';
290
+ }
291
+
292
+ if ($output) {
293
+ echo '
294
+ <fieldset id="xmlsf_taxonomies"><legend class="screen-reader-text">'.__('XML Sitemaps for taxonomies','xml-sitemap-feed').'</legend>
295
+ ';
296
+
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() {
304
+ jQuery("#xmlsf_taxonomies_note_1_more").hide();
305
+ jQuery("#xmlsf_taxonomies_note_1_link").click( function(event) {
306
+ event.preventDefault();
307
+ jQuery("#xmlsf_taxonomies_note_1_link").hide();
308
+ jQuery("#xmlsf_taxonomies_note_1_more").show("slow");
309
+ });
310
+ });
311
+ </script>
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)) {
325
+ foreach($urls as $arr) {
326
+ if(is_array($arr))
327
+ $lines[] = implode(" ",$arr);
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
+
346
+
347
+ /**
348
+ * GOOGLE NEWS SITEMAP SECTION
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() {
384
+ $options = parent::get_option('news_tags');
385
+ $prefix = parent::prefix();
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>
393
+ '.sprintf(__('The &lt;access&gt; tag specifies whether an article is available to all readers (%1$s), or only to those with a free (%2$s) or paid membership (%3$s) to your site.','xml-sitemap-feed'),translate('Public'),__('Registration','xml-sitemap-feed'),__('Subscription','xml-sitemap-feed')).'
394
+
395
+ <ul>';
396
+
397
+ echo '
398
+ <li><label>'.__('Tag normal posts as','xml-sitemap-feed').' <select name="'.$prefix.'news_tags[access][default]" id="xmlsf_news_tags_access_default">
399
+ <option value="">'.translate('Public').'</option>
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">
413
+ <option value="Registration" '.selected( "Registration" == $access_password, true, false).'>'.__('Registration','xml-sitemap-feed').'</option>
414
+ <option value="Subscription" '.selected( "Subscription" == $access_password, true, false).'>'.__('Subscription','xml-sitemap-feed').'</option>
415
+ </select></label></li>';
416
+ echo '
417
+ </ul>
418
+
419
+ <p class="description">'.__('Note: The &lt;access&gt; tag is required when applicable. Do not leave it to Public when your content is not.','xml-sitemap-feed').' <a href="https://support.google.com/news/publisher/answer/93992" target="_blank">'.translate('More information...').'</a></p>
420
+ </fieldset>';
421
+ }
422
+
423
+ public function news_genres_field() {
424
+ $options = parent::get_option('news_tags');
425
+ $prefix = parent::prefix();
426
+ $gn_genres = parent::gn_genres();
427
+ /* $gn_genres_tr = array(
428
+ 'gn-pressrelease' => __('Press Release','xml-sitemap-feed'),
429
+ 'gn-satire' => __('Satire','xml-sitemap-feed'),
430
+ 'gn-blog' => __('Blog','xml-sitemap-feed'),
431
+ 'gn-oped' => __('Op-Ed','xml-sitemap-feed'),
432
+ 'gn-opinion' => __('Opinion','xml-sitemap-feed'),
433
+ 'gn-usergenerated' => __('User-Generated','xml-sitemap-feed')
434
+ );
435
+ */
436
+ $genres = !empty($options['genres']) ? $options['genres'] : array();
437
+ $genres_default = !empty($genres['default']) ? $genres['default'] : '';
438
+ echo '
439
+ <fieldset id="xmlsf_news_genres"><legend class="screen-reader-text">'.__('Genres (&lt;genres&gt; tag)','xml-sitemap-feed').'</legend>
440
+ '.__('The &lt;genres&gt; tag specifies one or more properties for an article, namely, whether it is a press release, a blog post, an opinion, an op-ed piece, user-generated content, or satire.','xml-sitemap-feed').' '.__('You can assign Google News genres when writing a new post.','xml-sitemap-feed');
441
+ echo '<input type="hidden" name="'.$prefix.'news_tags[genres][active]" value="';
442
+ echo !empty($genres['active']) ? $genres['active'] : '';
443
+ echo '" />';
444
+ /* echo '
445
+ <p><label><input type="checkbox" name="'.$prefix.'news_tags[genres][active]" id="xmlsf_news_tags_genres" value="1"'.
446
+ checked( !empty($genres['active']), true, false).' /> '
447
+ .__('Use Google News genres','xml-sitemap-feed').'</label> </p>';
448
+ */
449
+ echo '
450
+ <ul>
451
+ <li><label>'.__('Default genre:','xml-sitemap-feed').' <select name="'.$prefix.'news_tags[genres][default]" id="xmlsf_news_tags_genres_default">
452
+ <option value="">'.translate('None').'</option>';
453
+ foreach ( $gn_genres as $slug => $name) {
454
+ echo '
455
+ <option value="'.$name.'" '.selected( $name == $genres_default, true, false ).'>'.$name.'</option>';
456
+ }
457
+ echo '
458
+ </select></label></li>
459
+ </ul>
460
+ <p class="description">'.__('Note: The &lt;genres&gt; tag is required when applicable and restricted to the list provided above.','xml-sitemap-feed').' <a href="https://support.google.com/news/publisher/answer/93992" target="_blank">'.translate('More information...').'</a></p>
461
+ </fieldset>';
462
+
463
+ }
464
+
465
+ public function news_keywords_field() {
466
+ $options = parent::get_option('news_tags');
467
+ $prefix = parent::prefix();
468
+
469
+ $keywords = !empty($options['keywords']) ? $options['keywords'] : array();
470
+ $keywords_from = !empty($keywords['from']) ? $keywords['from'] : '';
471
+ echo '
472
+ <fieldset id="xmlsf_news_keywords"><legend class="screen-reader-text">'.__('Topics (&lt;keywords&gt; tag)','xml-sitemap-feed').'</legend>
473
+ '.__('The &lt;keywords&gt; tag is used to help classify the articles you submit to Google News by <strong>topic</strong>.','xml-sitemap-feed').'
474
+ <ul>
475
+ <li><label>'.sprintf(__('Use %s for topics.','xml-sitemap-feed'),' <select name="'.$prefix.'news_tags[keywords][from]" id="xmlsf_news_tags_keywords_from">
476
+ <option value="">'.translate('None').'</option>
477
+ <option value="category" '.selected( "category" == $keywords_from, true, false).'>'.translate('Categories').'</option>
478
+ <option value="post_tag" '.selected( "post_tag" == $keywords_from, true, false).'>'.translate('Tags').'</option>
479
+ </select>').'</label></li>';
480
+ if ("category" != $keywords_from) {
481
+ echo '
482
+ <li><label>'.__('Default topic(s):','xml-sitemap-feed').' <input type="text" name="'.$prefix.'news_tags[keywords][default]" id="xmlsf_news_tags_keywords_default" value="';
483
+ echo !empty($keywords['default']) ? $keywords['default'] : '';
484
+ echo '" class="regular-text"></label> <span class="description">'.__('Separate with a comma.','xml-sitemap-feed').'</span></li>';
485
+ }
486
+ echo '
487
+ </ul>
488
+ <p class="description">'.__('Keywords may be drawn from, but are not limited to, the list of <a href="http://www.google.com/support/news_pub/bin/answer.py?answer=116037" target="_blank">existing Google News keywords</a>.','xml-sitemap-feed').'</p>
489
+ </fieldset>';
490
+ }
491
+
492
+ public function news_locations_field() {
493
+ $options = parent::get_option('news_tags');
494
+ $prefix = parent::prefix();
495
+
496
+ $locations = !empty($options['locations']) ? $options['locations'] : array();
497
+ echo '
498
+ <fieldset id="xmlsf_news_locations"><legend class="screen-reader-text">'.__('Locations (&lt;geo_locations&gt; tag)','xml-sitemap-feed').'</legend>
499
+ '.__('The &lt;geo_locations&gt; tag is used identify the geographic location of your articles.','xml-sitemap-feed').' '.__('You can assign locations when writing a new post.','xml-sitemap-feed');
500
+ echo '<input type="hidden" name="'.$prefix.'news_tags[locations][active]" value="';
501
+ echo !empty($locations['active']) ? $locations['active'] : '';
502
+ echo '" />';
503
+ echo '
504
+ <ul>
505
+ <li><label>'.__('Default location:','xml-sitemap-feed').' <input type="text" name="'.$prefix.'news_tags[locations][default]" id="xmlsf_news_tags_locations_default" value="';
506
+ echo !empty($locations['default']) ? $locations['default'] : '';
507
+ echo '" class="regular-text"></label> <span class="description">'.__('Separate with a comma.','xml-sitemap-feed').'</span></li>
508
+ </ul>
509
+ <p class="description">'.__('You should list location entities from smallest entity to largest. For example: <code>Detroit, Michigan, USA</code> or <code>Rhône-Alpes, France</code>.','xml-sitemap-feed').' <a href="https://support.google.com/news/publisher/answer/1662970" target="_blank">'.translate('More information...').'</a></p>
510
+ </fieldset>';
511
+ }
512
+
513
+
514
  //sanitize callback functions
515
 
516
  public function sanitize_robots_settings($new) {
519
 
520
  public function sanitize_sitemaps_settings($new) {
521
  $old = parent::get_sitemaps();
522
+
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
+
530
+ if (empty($old['sitemap-news']) && !empty($new['sitemap-news']))
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');
577
+ $sanitized = $new;
578
+ $flush = false;
579
+
580
+ foreach ($new as $post_type => $settings) {
581
+
582
+ // when post types are (de)activated, set transient to flush rewrite rules
583
+ if ( ( !empty($old[$post_type]['active']) && empty($settings['active']) ) || ( empty($old[$post_type]['active']) && !empty($settings['active']) ) )
584
+ $flush = true;
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
+ }
595
+ }
596
+
597
+ if ($flush)
598
  set_transient('xmlsf_flush_rewrite_rules','');
599
+
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) {
614
  $old = parent::get_taxonomies();
615
+
616
+ if ($old != $new) // when taxonomy types are added or removed, set transient to flush rewrite rules
617
  set_transient('xmlsf_flush_rewrite_rules','');
618
+
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
+
632
+ $arr = array_values(array_filter(explode(" ",trim($line)),$callback));
633
+
634
+ if(isset($arr[0])) {
635
+ if(isset($arr[1]))
636
+ $arr[1] = $this->sanitize_priority($arr[1]);
637
+ else
638
+ $arr[1] = '0.5';
639
+
640
+ $sanitized[] = array( esc_url($arr[0]) , $arr[1] );
641
+ }
642
+ }
643
+
644
+ if (empty($old)) {
645
+ if (!empty($sanitized))
646
+ set_transient('xmlsf_flush_rewrite_rules','');
647
+ } else if (empty($sanitized)) {
648
+ set_transient('xmlsf_flush_rewrite_rules','');
649
+ }
650
+
651
+ return (!empty($sanitized)) ? $sanitized : '';
652
+ }
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 : '';
666
+ }
667
+
668
+ public function sanitize_news_tags_settings($new) {
669
  return $new;
670
  }
671
+
672
 
673
+ // action links
 
 
 
674
 
675
+ public function add_action_link( $links ) {
676
+ $settings_link = '<a href="' . admin_url('options-reading.php') . '#blog_public">' . translate('Settings') . '</a>';
677
+ array_unshift( $links, $settings_link );
678
+ return $links;
679
+ }
680
+
681
+ /**
682
+ * META BOX
683
+ */
684
+
685
+ /* Adds a box to the side column */
686
+ public function add_meta_box()
687
+ {
688
+ // Only include metaboxes on post types that are included
689
+ foreach (parent::get_post_types() as $post_type) {
690
+ if (isset($post_type["active"]))
691
+ add_meta_box(
692
+ 'xmlsf_section',
693
+ __( 'XML Sitemap', 'xml-sitemap-feed' ),
694
+ array($this,'meta_box'),
695
+ $post_type['name'],
696
+ 'side'
697
+ );
698
  }
 
 
699
  }
700
+
701
+ public function meta_box($post)
702
+ {
703
+ // Use nonce for verification
704
+ wp_nonce_field( plugin_basename( __FILE__ ), 'xmlsf_sitemap_nonce' );
705
+
706
+ // The actual fields for data entry
707
+ // Use get_post_meta to retrieve an existing value from the database and use the value for the form
708
+ $value = get_post_meta( $post->ID, '_xmlsf_exclude', true );
709
+ $priority = get_post_meta( $post->ID, '_xmlsf_priority', true );
710
+ $disabled = '';
711
+
712
+ // disable options and (visibly) set excluded to true for private posts
713
+ if ( 'private' == $post->post_status ) {
714
+ $disabled = ' disabled="disabled"';
715
+ $value = true;
716
+ }
717
+
718
+ // disable options and (visibly) set priority to 1 for front page
719
+ if ( $post->ID == get_option('page_on_front') ) {
720
+ $disabled = ' disabled="disabled"';
721
+ $priority = '1'; // force excluded to true for private posts
722
+ }
723
+
724
+ echo '<p><label><input type="checkbox" name="xmlsf_exclude" id="xmlsf_exclude" value="1"'.checked(!empty($value), true, false).$disabled.' > ';
725
+ _e('Exclude from XML Sitemap','xml-sitemap-feed');
726
+ echo '</label></p>';
727
+
728
+ echo '<p><label>';
729
+ _e('Priority','xml-sitemap-feed');
730
+ echo ' <input type="number" step="0.1" min="0" max="1" name="xmlsf_priority" id="xmlsf_priority" value="'.$priority.'" class="small-text"'.$disabled.'></label> <span class="description">';
731
+ printf(__('Leave empty for automatic Priority as configured on %1$s > %2$s.','xml-sitemap-feed'),translate('Settings'),translate('Reading'));
732
+ echo '</span></p>';
733
+ }
734
+
735
+ /* When the post is saved, save our meta data */
736
+ function save_metadata( $post_id )
737
+ {
738
+ if ( !isset($post_id) )
739
+ $post_id = (int)$_REQUEST['post_ID'];
740
+
741
+ if ( !current_user_can( 'edit_post', $post_id ) || !isset($_POST['xmlsf_sitemap_nonce']) || !wp_verify_nonce($_POST['xmlsf_sitemap_nonce'], plugin_basename( __FILE__ )) )
742
+ return;
743
+
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
+ }
756
+
757
+ // _xmlsf_exclude
758
+ if ( isset($_POST['xmlsf_exclude']) && $_POST['xmlsf_exclude'] != '' ) {
759
+ update_post_meta($post_id, '_xmlsf_exclude', $_POST['xmlsf_exclude']);
760
+ } else {
761
+ delete_post_meta($post_id, '_xmlsf_exclude');
762
+ }
763
 
764
+ }
765
 
766
  /**
767
  * CONSTRUCTOR
768
  */
769
 
 
 
 
 
 
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
837
+ add_filter('plugin_action_links_' . XMLSF_PLUGIN_BASENAME, array($this, 'add_action_link') );
838
  }
839
 
840
  }
includes/core.php CHANGED
@@ -9,148 +9,594 @@ class XMLSitemapFeed {
9
  * Plugin variables
10
  */
11
 
 
12
  public $base_name = 'sitemap';
13
 
 
14
  public $extension = 'xml';
15
 
 
 
 
 
16
  private $yes_mother = false;
17
 
18
  private $defaults = array();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
19
 
20
- private function build_defaults() {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
21
 
 
 
 
22
  // sitemaps
23
- if ( '1' == get_option('blog_public') )
24
  $this->defaults['sitemaps'] = array(
25
- 'sitemap' => XMLSF_NAME,
26
  );
27
  else
28
  $this->defaults['sitemaps'] = array();
29
 
30
  // post_types
31
- if ( defined('XMLSF_POST_TYPE') && XMLSF_POST_TYPE != 'any' ) {
32
- $this->defaults['post_types'] = array_map('trim',explode(',',XMLSF_POST_TYPE));
33
- } else {
34
- $this->defaults['post_types'] = array(
35
- 'post' => array(
36
- 'active' => '1',
37
- 'name' => 'post',
38
- //'tags' => array('news','image','video'),
39
- //'split_by' => 'year'
40
- ),
41
- 'page' => array(
42
- 'active' => '1',
43
- 'name' => 'page',
44
- //'tags' => array('image','video')
45
- )
46
- );
47
- foreach ( get_post_types(array('public'=>true,'_builtin'=>false),'names') as $custom )
48
- $this->defaults['post_types'][$custom] = array(
49
- 'active' => '1',
50
- 'name' => $custom,
51
- //'tags' => array('image','video')
52
- );
53
-
 
 
 
 
 
 
 
 
 
 
 
 
54
  }
55
 
56
  // taxonomies
57
- $this->defaults['taxonomies'] = array();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
58
 
59
- // robots
60
- $this->defaults['robots'] = '';
61
- }
62
 
 
 
 
 
 
63
 
64
- public function defaults($key = false) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
65
 
 
 
 
 
 
 
66
  if (empty($this->defaults))
67
  $this->build_defaults();
68
 
69
- if (!$key)
70
- return apply_filters( 'xmlsf_defaults', $this->defaults, false );
71
- else
72
- return apply_filters( 'xmlsf_defaults', $this->defaults[$key], $key );
 
73
 
 
74
  }
75
 
76
- public function get_sitemaps() {
77
-
78
- if (empty($this->defaults))
79
- $this->build_defaults();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
80
 
81
- $return = get_option('xmlsf_sitemaps', $this->defaults['sitemaps']);
 
 
 
 
82
 
83
- return (empty($return)) ? array() : $return;
84
  }
85
-
86
- public function get_post_types() {
 
 
87
 
88
- if (empty($this->defaults))
89
- $this->build_defaults();
 
90
 
91
- $return = get_option('xmlsf_post_types', $this->defaults['post_types']);
 
 
 
 
 
 
 
 
 
 
 
 
 
92
 
93
- return (empty($return)) ? array() : $return;
 
94
  }
95
 
96
- public function get_taxonomies() {
 
 
97
 
98
- if (empty($this->defaults))
99
- $this->build_defaults();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
100
 
101
- $return = get_option('xmlsf_taxonomies', $this->defaults['taxonomies']);
 
 
 
 
 
 
102
 
103
- return (empty($return)) ? array() : $return;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
104
  }
105
 
106
- public function get_robots() {
 
 
 
107
 
108
- if (empty($this->defaults))
109
- $this->build_defaults();
 
110
 
111
- return get_option('xmlsf_robots', $this->defaults['robots']);
 
112
  }
113
-
114
- public function get_do_tags( $type = 'post' ) {
115
 
116
- // just return empty array for now...
117
- return array();
118
 
119
- $sitemaps = get_option('xmlsf_sitemaps', $this->defaults('sitemaps'));
120
- $return = get_option('xmlsf_post_types', $this->defaults('post_types'));
121
-
122
- // unset news tags if news sitemap is switched off
123
- if ( isset($return[$type]['tags']['news']) && !isset($sitemaps['sitemap-news']) )
124
- unset($return[$type]['tags']['news']);
 
 
 
 
 
 
 
125
 
126
- return $return[$type]['tags'];
 
127
  }
128
-
129
 
130
  /**
131
- * MULTI-LANGUAGE PLUGIN FUNCTIONS
132
  */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
133
 
134
- public function get_languages() {
135
- /* Only Polylang compatibility for now, rest is rudimentary */
136
- global $polylang;
137
- if ( isset($polylang) ) {
138
- $langs = array();
139
- foreach ($polylang->get_languages_list() as $term)
140
- $langs[] = $term->slug;
141
-
142
- return $langs;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
143
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
144
 
145
- global $q_config;
146
- if (isset($q_config))
147
- return $q_config['enabled_languages'];
148
- // or return only current language in the array??
 
 
 
 
 
 
 
 
 
 
 
 
149
 
150
- return array();
 
 
 
 
 
 
151
  }
152
 
153
- public function get_home_urls() {
 
154
  $urls = array();
155
 
156
  global $polylang,$q_config;
@@ -158,93 +604,92 @@ class XMLSitemapFeed {
158
  if ( isset($polylang) )
159
  foreach ($polylang->get_languages_list() as $term)
160
  $urls[] = $polylang->get_home_url($term);
161
- elseif ( isset($q_config) )
162
- foreach($q_config['enabled_languages'] as $language)
163
- $urls[] = qtrans_convertURL($url,$language);
164
  else
165
- $urls[] = esc_url( trailingslashit( home_url()) );
166
 
167
  return $urls;
168
  }
169
 
170
- /**
171
- * MULTI-LANGUAGE PLUGIN FILTERS
172
- */
173
-
174
- // Polylang
175
- public function polylang($input) {
176
- global $polylang;
177
- $options = get_option('polylang');
178
-
179
- if (is_array($input)) { // got an array? return one!
180
- if ('1' == $options['force_lang'] )
181
- foreach ( $input as $url )
182
- foreach($polylang->get_languages_list() as $language)
183
- $return[] = $polylang->add_language_to_link($url,$language);
184
- else
185
- foreach ( $input as $url )
186
- foreach($polylang->get_languages_list() as $language)
187
- $return[] = add_query_arg('lang', $language->slug, $url);
188
- } else { // not an array? do nothing, Polylang does all the work :)
189
- $return = $input;
190
  }
191
-
192
- return $return;
193
  }
194
 
195
- // qTranslate
196
- public function qtranslate($input) {
197
- global $q_config;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
198
 
199
- if (is_array($input)) // got an array? return one!
200
- foreach ( $input as $url )
201
- foreach($q_config['enabled_languages'] as $language)
202
- $return[] = qtrans_convertURL($url,$language);
203
- else // not an array? just convert the string.
204
- $return = qtrans_convertURL($input);
 
205
 
206
- return $return;
 
 
 
 
 
 
 
 
207
  }
208
-
209
 
210
  /**
211
  * ROBOTSTXT
212
  */
213
 
214
  // add sitemap location in robots.txt generated by WP
215
- public function robots($output) {
216
-
217
- $sitemaps = get_option('xmlsf_sitemaps', $this->defaults('sitemaps'));
218
-
219
- echo "\n# XML & Google News Sitemap Feeds - version ".XMLSF_VERSION." (http://status301.net/wordpress-plugins/xml-sitemap-feed/)";
220
 
221
- if (!empty($sitemaps))
222
- foreach ( $sitemaps as $pretty )
 
 
223
  echo "\nSitemap: " . trailingslashit(get_bloginfo('url')) . $pretty;
224
- else
225
- echo "\n# Warning: XML Sitemaps are disabled. Please see your sites XML Sitemap and Privacy settings.";
226
-
 
227
  echo "\n\n";
228
  }
229
 
230
  // add robots.txt rules
231
- public function robots_txt($output) {
232
- return $output . get_option('xmlsf_robots') ;
 
233
  }
234
 
235
- /**
236
- * DE-ACTIVATION
237
- */
238
-
239
- public function deactivate() {
240
- global $wp_rewrite;
241
- remove_action('generate_rewrite_rules', array($this, 'rewrite_rules') );
242
- $wp_rewrite->flush_rules();
243
- delete_option('xmlsf_version');
244
- foreach ( $this->defaults() as $option => $settings )
245
- delete_option('xmlsf_'.$option);
246
- }
247
-
248
  /**
249
  * REWRITES
250
  */
@@ -256,7 +701,8 @@ class XMLSitemapFeed {
256
  * @param string $request
257
  */
258
 
259
- public function trailingslash($request) {
 
260
  if (pathinfo($request, PATHINFO_EXTENSION)) {
261
  return untrailingslashit($request);
262
  }
@@ -269,8 +715,8 @@ class XMLSitemapFeed {
269
  * @param string $wp_rewrite
270
  */
271
 
272
- public function rewrite_rules($wp_rewrite) {
273
-
274
  $xmlsf_rules = array();
275
  $sitemaps = $this->get_sitemaps();
276
 
@@ -280,20 +726,22 @@ class XMLSitemapFeed {
280
  if (!empty($sitemaps['sitemap'])) {
281
  // home urls
282
  $xmlsf_rules[ $this->base_name . '-home\.' . $this->extension . '$' ] = $wp_rewrite->index . '?feed=sitemap-home';
283
- // all urls (still works but redundant)
284
- //$xmlsf_rules[ $this->base_name . '-posttype-any\.' . $this->extension . '$' ] = $wp_rewrite->index . '?feed=sitemap-any';
285
- // rule catch posts split by category (unsupported)
286
- //$xmlsf_rules[ $this->base_name . '\.([a-z0-9_-]+)?\.' . $this->extension . '$' ] = $wp_rewrite->index . '?feed=sitemap_post&category_name=$matches[1]';
287
 
288
  // add rules for post types (can be split by month or year)
289
  foreach ( $this->get_post_types() as $post_type ) {
290
- $xmlsf_rules[ $this->base_name . '-posttype-' . $post_type['name'] . '\.([0-9]+)?\.?' . $this->extension . '$' ] = $wp_rewrite->index . '?feed=sitemap-posttype_' . $post_type['name'] . '&m=$matches[1]';
 
291
  }
292
-
293
  // add rules for taxonomies
294
  foreach ( $this->get_taxonomies() as $taxonomy ) {
295
- $xmlsf_rules[ $this->base_name . '-taxonomy-' . $taxonomy . '\.' . $this->extension . '$' ] = $wp_rewrite->index . '?feed=sitemap-taxonomy&taxonomy=' . $taxonomy;
296
  }
 
 
 
 
 
297
  }
298
 
299
  $wp_rewrite->rules = $xmlsf_rules + $wp_rewrite->rules;
@@ -302,11 +750,21 @@ class XMLSitemapFeed {
302
  /**
303
  * REQUEST FILTER
304
  */
 
305
 
306
- public function filter_request( $request ) {
 
 
 
 
 
 
 
 
307
  if ( isset($request['feed']) && strpos($request['feed'],'sitemap') == 0 ) {
308
 
309
  if ( $request['feed'] == 'sitemap' ) {
 
310
  // setup actions and filters
311
  add_action('do_feed_sitemap', array($this, 'load_template_index'), 10, 1);
312
 
@@ -326,7 +784,12 @@ class XMLSitemapFeed {
326
  // modify request parameters
327
  $types_arr = explode(',',XMLSF_NEWS_POST_TYPE);
328
  $request['post_type'] = (in_array('any',$types_arr)) ? 'any' : $types_arr;
329
-
 
 
 
 
 
330
  $request['no_found_rows'] = true;
331
  $request['update_post_meta_cache'] = false;
332
  //$request['update_post_term_cache'] = false; // << TODO test: can we disable or do we need this for terms?
@@ -343,58 +806,54 @@ class XMLSitemapFeed {
343
 
344
  if ( strpos($request['feed'],'sitemap-posttype') == 0 ) {
345
  foreach ( $this->get_post_types() as $post_type ) {
346
- if ( $request['feed'] == 'sitemap-posttype_'.$post_type['name'] ) {
347
  // setup actions and filters
348
- add_action('do_feed_sitemap-posttype_'.$post_type['name'], array($this, 'load_template'), 10, 1);
349
  add_filter( 'post_limits', array($this, 'filter_limits') );
350
 
351
  // modify request parameters
352
  $request['post_type'] = $post_type['name'];
 
353
  $request['orderby'] = 'modified';
354
- //$request['lang'] = implode( ',', $this->get_languages() );
355
- // TODO test this with qTranslate !!
356
  $request['no_found_rows'] = true;
357
  $request['update_post_meta_cache'] = false;
358
  $request['update_post_term_cache'] = false;
 
 
 
 
359
 
360
  return $request;
361
  }
362
  }
363
  }
364
 
365
- if ( $request['feed'] == 'sitemap-taxonomy' ) {
366
- // setup actions and filters
367
- add_action('do_feed_sitemap-taxonomy', array($this, 'load_template_taxonomy'), 10, 1);
368
- // add_filter( 'post_limits', array( $this, 'filter_limits_taxonomy' ) );
369
-
370
- // modify request parameters
371
- $request['lang'] = implode( ',', $this->get_languages() );
372
- // TODO test this with qTranslate !!
373
 
374
- $request['no_found_rows'] = true;
375
- $request['update_post_meta_cache'] = false;
376
- $request['update_post_term_cache'] = false;
377
- $request['post_status'] = 'publish';
 
 
 
378
 
379
- return $request;
 
 
380
  }
381
 
382
- /* Still works, but redundant
383
- if ( $request['feed'] == 'sitemap-any' ) {
384
  // setup actions and filters
385
- add_action('do_feed_sitemap-any', array($this, 'load_template'), 10, 1);
386
- add_filter('post_limits', array($this, 'filter_limits'));
387
-
388
- // modify request parameters
389
- $request['post_type'] = 'any';
390
- $request['orderby'] = 'modified';
391
-
392
- $request['no_found_rows'] = true;
393
- $request['update_post_meta_cache'] = false;
394
- $request['update_post_term_cache'] = false;
395
 
396
  return $request;
397
- }*/
398
 
399
  }
400
 
@@ -406,142 +865,340 @@ class XMLSitemapFeed {
406
  */
407
 
408
  // set up the sitemap index template
409
- public function load_template_index() {
 
410
  load_template( XMLSF_PLUGIN_DIR . '/includes/feed-sitemap.php' );
411
  }
412
 
413
  // set up the sitemap home page(s) template
414
- public function load_template_base() {
 
415
  load_template( XMLSF_PLUGIN_DIR . '/includes/feed-sitemap-home.php' );
416
  }
417
 
418
  // set up the post types sitemap template
419
- public function load_template() {
 
420
  load_template( XMLSF_PLUGIN_DIR . '/includes/feed-sitemap-post_type.php' );
421
  }
422
 
423
  // set up the taxonomy sitemap template
424
- public function load_template_taxonomy() {
 
425
  load_template( XMLSF_PLUGIN_DIR . '/includes/feed-sitemap-taxonomy.php' );
426
  }
427
 
428
  // set up the news sitemap template
429
- public function load_template_news() {
 
430
  load_template( XMLSF_PLUGIN_DIR . '/includes/feed-sitemap-news.php' );
431
  }
432
 
 
 
 
 
 
 
433
  /**
434
- * LIMITES
435
  */
436
 
437
  // override default feed limit
438
- public function filter_limits( $limits ) {
 
439
  return 'LIMIT 0, 50000';
440
  }
441
 
442
  // override default feed limit for taxonomy sitemaps
443
- public function filter_limits_taxonomy( $limits ) {
 
444
  return 'LIMIT 0, 1';
445
  }
446
 
447
  // override default feed limit for GN
448
- public function filter_news_limits( $limits ) {
 
449
  return 'LIMIT 0, 1000';
450
  }
451
 
452
  // Create a new filtering function that will add a where clause to the query,
453
  // used for the Google News Sitemap
454
- public function filter_news_where( $where = '' ) {
 
455
  // only posts from the last 2 days
456
  return $where . " AND post_date > '" . date('Y-m-d H:i:s', strtotime('-49 hours')) . "'";
457
  }
458
 
 
459
  /**
460
- * INITIALISATION
461
  */
462
 
463
- public function plugins_loaded() {
 
 
 
464
 
465
- // TEXT DOMAIN
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
466
 
467
- if ( is_admin() ) // text domain on plugins_loaded even if it is for admin only
468
- load_plugin_textdomain('xml-sitemap-feed', false, dirname(dirname(plugin_basename( __FILE__ ))) . '/languages' );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
469
 
470
- // LANGUAGE PLUGINS
 
471
 
472
- // check for Polylang and add filter
473
- global $polylang;
474
- if (isset($polylang))
475
- add_filter('xml_sitemap_url', array($this, 'polylang'), 99);
 
 
 
 
 
 
 
 
 
 
 
 
476
 
477
- // check for qTranslate and add filter
478
- elseif (defined('QT_LANGUAGE'))
479
- add_filter('xml_sitemap_url', array($this, 'qtranslate'), 99);
 
480
 
481
- // some upgrade stuffs, to be removed next version
482
- if (delete_option('xml-sitemap-feed-version')) {
483
- delete_option('XMLSitemapFeed_option1');
484
- delete_option('XMLSitemapFeed_option2');
485
 
486
- }
487
- if (get_option('XMLSitemapFeed_robots')) {
488
- update_option('xmlsf_robots', get_option('XMLSitemapFeed_robots'));
489
- delete_option('XMLSitemapFeed_robots');
490
- }
491
 
 
492
  if (get_option('xmlsf_version') != XMLSF_VERSION) {
493
  // rewrite rules not available on plugins_loaded
494
- // don't flush rules from init as Polylang chokes on that
495
  // just remove the rules and let WP renew them when ready...
496
  delete_option('rewrite_rules');
497
 
498
- $this->yes_mother = true;
 
 
 
 
 
499
 
500
  update_option('xmlsf_version', XMLSF_VERSION);
501
  }
502
 
503
  }
504
 
505
- private function flush_rules($hard = false) {
506
- // don't need hard flush by default
507
-
508
- if ($this->yes_mother)
509
- return;
510
 
511
  global $wp_rewrite;
 
512
  $wp_rewrite->flush_rules($hard);
513
 
514
  $this->yes_mother = true;
515
  }
516
 
517
- public function admin_init() {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
518
 
519
- // UPGRADE RULES after plugin upgrade
520
- // CATCH TRANSIENT for flushing rewrite rules after the sitemaps setting has changed
521
- if (get_option('xmlsf_version') != XMLSF_VERSION) {
522
- $this->flush_rules();
523
- update_option('xmlsf_version', XMLSF_VERSION);
524
- } else
525
 
526
- if (delete_transient('xmlsf_flush_rewrite_rules')) {
527
- $this->flush_rules();
 
 
 
 
 
 
 
 
 
 
 
528
  }
 
 
 
 
 
 
 
 
 
 
 
529
 
530
  // Include the admin class file
531
  include_once( XMLSF_PLUGIN_DIR . '/includes/admin.php' );
532
 
533
  }
534
 
 
 
 
 
 
 
 
 
 
 
 
535
  /**
536
  * CONSTRUCTOR
537
  */
538
 
539
- function XMLSitemapFeed() {
540
- //constructor in php4
541
- $this->__construct(); // just call the php5 one.
542
- }
543
-
544
- function __construct() {
 
 
 
 
545
 
546
  // REQUEST main filtering function
547
  add_filter('request', array($this, 'filter_request'), 1 );
@@ -553,15 +1210,21 @@ class XMLSitemapFeed {
553
  add_action('generate_rewrite_rules', array($this, 'rewrite_rules') );
554
  add_filter('user_trailingslashit', array($this, 'trailingslash') );
555
 
 
 
 
556
  // REGISTER SETTINGS, SETTINGS FIELDS, UPGRADE checks...
557
  add_action('admin_init', array($this,'admin_init'));
558
 
559
  // ROBOTSTXT
560
  add_action('do_robotstxt', array($this, 'robots'), 0 );
561
  add_filter('robots_txt', array($this, 'robots_txt'), 0 );
 
 
 
562
 
563
  // DE-ACTIVATION
564
- register_deactivation_hook( XMLSF_PLUGIN_DIR . '/xml-sitemap.php', array($this, 'deactivate') );
565
  }
566
 
567
  }
9
  * Plugin variables
10
  */
11
 
12
+ // Pretty permalinks base name
13
  public $base_name = 'sitemap';
14
 
15
+ // Pretty permalinks extension
16
  public $extension = 'xml';
17
 
18
+ // Database options prefix
19
+ private $prefix = 'xmlsf_';
20
+
21
+ // Flushed flag
22
  private $yes_mother = false;
23
 
24
  private $defaults = array();
25
+ private $disabled_post_types = array('attachment'); /* attachment post type is disabled... images are included via tags in the post and page sitemaps */
26
+ private $disabled_taxonomies = array('post_format'); /* post format taxonomy is brute force disabled for now; might come back... */
27
+ private $gn_genres = array(
28
+ 'gn-pressrelease' => 'PressRelease',
29
+ 'gn-satire' => 'Satire',
30
+ 'gn-blog' => 'Blog',
31
+ 'gn-oped' => 'OpEd',
32
+ 'gn-opinion' => 'Opinion',
33
+ 'gn-usergenerated' => 'UserGenerated'
34
+ );
35
+
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;
43
+ private $images = array();
44
 
45
+ // make some private parts public ;)
46
+
47
+ public function prefix()
48
+ {
49
+ return $this->prefix;
50
+ }
51
+
52
+ public function gn_genres()
53
+ {
54
+ return $this->gn_genres;
55
+ }
56
+
57
+ public function domain()
58
+ {
59
+ // allowed domain
60
+ if (empty($this->domain)) {
61
+ $url_parsed = parse_url(home_url()); // second parameter PHP_URL_HOST for only PHP5 + ...
62
+ $this->domain = str_replace("www.","",$url_parsed['host']);
63
+ }
64
+
65
+ return $this->domain;
66
+ }
67
 
68
+ // default options
69
+ private function build_defaults()
70
+ {
71
  // sitemaps
72
+ if ( '1' == get_option('blog_public') )
73
  $this->defaults['sitemaps'] = array(
74
+ 'sitemap' => XMLSF_NAME
75
  );
76
  else
77
  $this->defaults['sitemaps'] = array();
78
 
79
  // post_types
80
+ $this->defaults['post_types'] = array();
81
+ foreach ( get_post_types(array('public'=>true),'names') as $name ) { // want 'publicly_queryable' but that excludes pages for some weird reason
82
+ // skip unallowed post types
83
+ if (in_array($name,$this->disabled_post_types))
84
+ continue;
85
+
86
+ $this->defaults['post_types'][$name] = array(
87
+ 'name' => $name,
88
+ 'active' => '',
89
+ 'archive' => '',
90
+ 'priority' => '0.5',
91
+ 'dynamic_priority' => '',
92
+ 'tags' => array('image' => 'attached'/*,'video' => ''*/)
93
+ );
94
+ }
95
+
96
+ if ( defined('XMLSF_POST_TYPE') && XMLSF_POST_TYPE != 'any' )
97
+ $active_arr = array_map('trim',explode(',',XMLSF_POST_TYPE));
98
+ else
99
+ $active_arr = array('post','page');
100
+
101
+ foreach ( $active_arr as $name )
102
+ if ( isset($this->defaults['post_types'][$name]) )
103
+ $this->defaults['post_types'][$name]['active'] = '1';
104
+
105
+ if ( isset($this->defaults['post_types']['post']) ) {
106
+ if (wp_count_posts('post')->publish > 500)
107
+ $this->defaults['post_types']['post']['archive'] = 'yearly';
108
+ $this->defaults['post_types']['post']['priority'] = '0.7';
109
+ $this->defaults['post_types']['post']['dynamic_priority'] = '1';
110
+ }
111
+
112
+ if ( isset($this->defaults['post_types']['page']) ) {
113
+ unset($this->defaults['post_types']['page']['archive']);
114
+ $this->defaults['post_types']['page']['priority'] = '0.3';
115
  }
116
 
117
  // taxonomies
118
+ $this->defaults['taxonomies'] = array(); // by default do not include any taxonomies
119
+
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' => '',
169
+ 'private' => 'Registration',
170
+ 'password' => 'Subscription'
171
+ ),
172
+ 'genres' => array(
173
+ 'active' => '1',
174
+ 'default' => ''
175
+ ),
176
+ 'keywords' => array(
177
+ 'from' => 'category',
178
+ 'default' => ''
179
+ ),
180
+ 'locations' => array(
181
+ 'active' => '1',
182
+ 'default' => ''
183
+ )
184
+ );
185
+
186
+
187
+ }
188
 
189
+ /**
190
+ * QUERY FUNCTIONS
191
+ */
192
+
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] : '';
200
+ } else {
201
+ $return = $this->defaults;
202
+ }
203
 
204
+ return apply_filters( 'xmlsf_defaults', $return, $key );
205
  }
206
 
207
+ public function get_option($option)
208
+ {
209
+ return get_option($this->prefix.$option, $this->defaults($option));
210
+ }
211
+
212
+ public function get_sitemaps()
213
+ {
214
+ $return = $this->get_option('sitemaps');
215
+
216
+ // make sure it's an array we are returning
217
+ return (!empty($return)) ? (array)$return : array();
218
+ }
219
+
220
+ public function get_ping()
221
+ {
222
+ $return = $this->get_option('ping');
223
+
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;
239
 
240
+ }
241
+
242
+ public function disabled_taxonomies()
243
+ {
244
+ return $this->disabled_taxonomies;
245
 
 
246
  }
247
+
248
+ public function get_post_types()
249
+ {
250
+ $return = $this->get_option('post_types');
251
 
252
+ // make sure it's an array we are returning
253
+ return (!empty($return)) ? (array)$return : array();
254
+ }
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) {
265
+ $values['count'] = $count->publish;
266
+ $return[$type] = $values;
267
+ }
268
+ }
269
+ }
270
 
271
+ // make sure it's an array we are returning
272
+ return (!empty($return)) ? (array)$return : array();
273
  }
274
 
275
+ public function get_taxonomies()
276
+ {
277
+ $return = $this->get_option('taxonomies');
278
 
279
+ // make sure it's an array we are returning
280
+ return (!empty($return)) ? (array)$return : array();
281
+ }
282
+
283
+ public function get_urls()
284
+ {
285
+ $return = $this->get_option('urls');
286
+
287
+ // make sure it's an array we are returning
288
+ if(!empty($return)) {
289
+ if(is_array($return))
290
+ return $return;
291
+ else
292
+ return explode("\n",$return);
293
+ } else {
294
+ return array();
295
+ }
296
+ }
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 = '')
307
+ {
308
+ global $wpdb;
309
+ $return = array();
310
+ if ( 'monthly' == $type ) {
311
+ $query = "SELECT YEAR(post_date) AS `year`, LPAD(MONTH(post_date),2,'0') AS `month`, count(ID) as posts FROM $wpdb->posts WHERE post_type = '$post_type' AND post_status = 'publish' GROUP BY YEAR(post_date), MONTH(post_date) ORDER BY post_date DESC";
312
+ $key = md5($query);
313
+ $cache = wp_cache_get( 'xmlsf_get_archives' , 'general');
314
+ if ( !isset( $cache[ $key ] ) ) {
315
+ $arcresults = $wpdb->get_results($query);
316
+ $cache[ $key ] = $arcresults;
317
+ wp_cache_set( 'xmlsf_get_archives', $cache, 'general' );
318
+ } else {
319
+ $arcresults = $cache[ $key ];
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) {
327
+ $query = "SELECT YEAR(post_date) AS `year`, count(ID) as posts FROM $wpdb->posts WHERE post_type = '$post_type' AND post_status = 'publish' GROUP BY YEAR(post_date) ORDER BY post_date DESC";
328
+ $key = md5($query);
329
+ $cache = wp_cache_get( 'xmlsf_get_archives' , 'general');
330
+ if ( !isset( $cache[ $key ] ) ) {
331
+ $arcresults = $wpdb->get_results($query);
332
+ $cache[ $key ] = $arcresults;
333
+ wp_cache_set( 'xmlsf_get_archives', $cache, 'general' );
334
+ } else {
335
+ $arcresults = $cache[ $key ];
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
  }
347
 
348
+ public function get_robots()
349
+ {
350
+ return ( $robots = $this->get_option('robots') ) ? $robots : '';
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
+
366
+ if ( !empty($blogpage) ) {
367
+ global $polylang;
368
+ if ( isset($polylang) )
369
+ $this->blogpage = $polylang->get_translations('post', $blogpage);
370
+ else
371
+ $this->blogpage = array($blogpage);
372
+ } else {
373
+ $this->blogpage = array('-1');
374
+ }
375
+ }
376
 
377
+ return in_array($id,$this->blogpage);
378
+
379
  }
 
380
 
381
  /**
382
+ * TEMPLATE FUNCTIONS
383
  */
384
+
385
+ public function modified($sitemap = 'post_type', $term = '')
386
+ {
387
+ if ('post_type' == $sitemap) :
388
+
389
+ global $post;
390
+
391
+ // if blog page look for last post date
392
+ if ( $post->post_type == 'page' && $this->is_home($post->ID) )
393
+ return get_lastmodified('GMT','post');
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(
401
+ 'status' => 'approve',
402
+ 'number' => 1,
403
+ 'post_id' => $post->ID,
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
+
413
+ return $this->postmodified[$post->ID];
414
+
415
+ elseif ( !empty($term) ) :
416
+
417
+ if ( is_object($term) ) {
418
+ if ( !isset($this->termmodified[$term->term_id]) ) {
419
+ // get the latest post in this taxonomy item, to use its post_date as lastmod
420
+ $posts = get_posts ( array(
421
+ 'post_type' => 'any',
422
+ 'numberposts' => 1,
423
+ 'no_found_rows' => true,
424
+ 'update_post_meta_cache' => false,
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];
439
+ } else {
440
+ $obj = get_taxonomy($term);
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
+ }
454
+
455
+ public function get_images($sitemap = '')
456
+ {
457
+ global $post;
458
+ if ( empty($this->images[$post->ID]) ) {
459
+ if ('news' == $sitemap) {
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) {
467
+ $args = array( 'post_type' => 'attachment', 'post_mime_type' => 'image', 'numberposts' => -1, 'post_status' =>'inherit', 'post_parent' => $post->ID );
468
+ $attachments = get_posts($args);
469
+ if ($attachments) {
470
+ foreach ( $attachments as $attachment ) {
471
+ $url = wp_get_attachment_image_src( $attachment->ID, 'full' );
472
+ $this->images[$post->ID][] = array(
473
+ 'loc' => esc_url( $url[0] ),
474
+ 'title' => apply_filters( 'the_title_xmlsitemap', $attachment->post_title ),
475
+ 'caption' => apply_filters( 'the_title_xmlsitemap', $attachment->post_excerpt )
476
+ );
477
+ }
478
+ }
479
+ } elseif ('featured' == $which) {
480
+ if (has_post_thumbnail( $post->ID ) ) {
481
+ $attachment = get_post(get_post_thumbnail_id( $post->ID ));
482
+ $url = wp_get_attachment_image_src( $attachment->ID, 'full' );
483
+ $this->images[$post->ID][] = array(
484
+ 'loc' => esc_url( $url[0] ),
485
+ 'title' => apply_filters( 'the_title_xmlsitemap', $attachment->post_title ),
486
+ 'caption' => apply_filters( 'the_title_xmlsitemap', $attachment->post_excerpt )
487
+ );
488
+ }
489
+ }
490
  }
491
+ return ( isset($this->images[$post->ID]) ) ? $this->images[$post->ID] : false;
492
+ }
493
+
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 = '')
501
+ {
502
+ $modified = trim($this->modified($sitemap,$term));
503
+
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';
511
+ } else if ( ($lastactivityage/86400) < 7 ) { // last activity less than 1 week old
512
+ $changefreq = 'daily';
513
+ } else if ( ($lastactivityage/86400) < 30 ) { // last activity less than one month old
514
+ $changefreq = 'weekly';
515
+ } else if ( ($lastactivityage/86400) < 365 ) { // last activity less than 1 year old
516
+ $changefreq = 'monthly';
517
+ } else {
518
+ $changefreq = 'yearly'; // over a year old...
519
+ }
520
+
521
+ return $changefreq;
522
+ }
523
+
524
+ public function get_priority($sitemap = 'post_type', $term = '')
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
556
+ if ( is_sticky($post->ID) || $this->is_home($post->ID) )
557
+ $priority = $priority_value;
558
+ else
559
+ $priority = ( $this->lastmodified > $this->firstdate ) ? $priority_value - $priority_value * ( $this->lastmodified - $post_modified ) / ( $this->lastmodified - $this->firstdate ) : $priority_value;
560
+
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'];
571
 
572
+ }
573
+
574
+ elseif ( ! empty($term) ) :
575
+
576
+ $max_priority = 0.4;
577
+ $min_priority = 0.0;
578
+ // TODO make these values optional
579
+
580
+ $tax_obj = get_taxonomy($term->taxonomy);
581
+ $postcount = 0;
582
+ foreach ($tax_obj->object_type as $post_type) {
583
+ $_post_count = wp_count_posts($post_type);
584
+ $postcount += $_post_count->publish;
585
+ }
586
+
587
+ $priority = ( $postcount > 0 ) ? $min_priority + ( $max_priority * $term->count / $postcount ) : $min_priority;
588
 
589
+ else :
590
+
591
+ $priority = 0.5;
592
+
593
+ endif;
594
+
595
+ return number_format($priority,1);
596
  }
597
 
598
+ public function get_home_urls()
599
+ {
600
  $urls = array();
601
 
602
  global $polylang,$q_config;
604
  if ( isset($polylang) )
605
  foreach ($polylang->get_languages_list() as $term)
606
  $urls[] = $polylang->get_home_url($term);
 
 
 
607
  else
608
+ $urls[] = home_url();
609
 
610
  return $urls;
611
  }
612
 
613
+ public function get_excluded($post_type)
614
+ {
615
+ $exclude = array();
616
+
617
+ if ( $post_type == 'page' && $id = get_option('page_on_front') ) {
618
+ global $polylang;
619
+ if ( isset($polylang) )
620
+ $exclude += $polylang->get_translations('post', $id);
621
+ else
622
+ $exclude[] = $id;
 
 
 
 
 
 
 
 
 
 
623
  }
624
+
625
+ return $exclude;
626
  }
627
 
628
+ public function is_allowed_domain($url)
629
+ {
630
+ $domains = $this->get_domains();
631
+ $return = false;
632
+ $parsed_url = parse_url($url);
633
+
634
+ if (isset($parsed_url['host'])) {
635
+ foreach( $domains as $domain ) {
636
+ if( $parsed_url['host'] == $domain || strpos($parsed_url['host'],".".$domain) !== false ) {
637
+ $return = true;
638
+ break;
639
+ }
640
+ }
641
+ }
642
+
643
+ return apply_filters( 'xmlsf_allowed_domain', $return );
644
+ }
645
 
646
+ public function get_index_url( $sitemap = 'home', $type = false, $param = false )
647
+ {
648
+ $root = esc_url( trailingslashit(home_url()) );
649
+ $name = $this->base_name.'-'.$sitemap;
650
+
651
+ if ( $type )
652
+ $name .= '-'.$type;
653
 
654
+ if ( '' == get_option('permalink_structure') || '1' != get_option('blog_public')) {
655
+ $name = '?feed='.$name;
656
+ $name .= $param ? '&m='.$param : '';
657
+ } else {
658
+ $name .= $param ? '.'.$param : '';
659
+ $name .= '.'.$this->extension;
660
+ }
661
+
662
+ return $root . $name;
663
  }
664
+
665
 
666
  /**
667
  * ROBOTSTXT
668
  */
669
 
670
  // add sitemap location in robots.txt generated by WP
671
+ public function robots($output)
672
+ {
673
+ echo "\n# XML Sitemap & Google News Feeds version ".XMLSF_VERSION." - http://status301.net/wordpress-plugins/xml-sitemap-feed/";
 
 
674
 
675
+ if ( '1' != get_option('blog_public') ) {
676
+ echo "\n# XML Sitemaps are disabled. Please see Site Visibility on Settings > Reading.";
677
+ } else {
678
+ foreach ( $this->get_sitemaps() as $pretty )
679
  echo "\nSitemap: " . trailingslashit(get_bloginfo('url')) . $pretty;
680
+
681
+ if ( empty($pretty) )
682
+ echo "\n# No XML Sitemaps are enabled. Please see XML Sitemaps on Settings > Reading.";
683
+ }
684
  echo "\n\n";
685
  }
686
 
687
  // add robots.txt rules
688
+ public function robots_txt($output)
689
+ {
690
+ return $output . $this->get_option('robots') ;
691
  }
692
 
 
 
 
 
 
 
 
 
 
 
 
 
 
693
  /**
694
  * REWRITES
695
  */
701
  * @param string $request
702
  */
703
 
704
+ public function trailingslash($request)
705
+ {
706
  if (pathinfo($request, PATHINFO_EXTENSION)) {
707
  return untrailingslashit($request);
708
  }
715
  * @param string $wp_rewrite
716
  */
717
 
718
+ public function rewrite_rules($wp_rewrite)
719
+ {
720
  $xmlsf_rules = array();
721
  $sitemaps = $this->get_sitemaps();
722
 
726
  if (!empty($sitemaps['sitemap'])) {
727
  // home urls
728
  $xmlsf_rules[ $this->base_name . '-home\.' . $this->extension . '$' ] = $wp_rewrite->index . '?feed=sitemap-home';
 
 
 
 
729
 
730
  // add rules for post types (can be split by month or year)
731
  foreach ( $this->get_post_types() as $post_type ) {
732
+ if ( isset($post_type['active']) && '1' == $post_type['active'] )
733
+ $xmlsf_rules[ $this->base_name . '-posttype-' . $post_type['name'] . '\.([0-9]+)?\.?' . $this->extension . '$' ] = $wp_rewrite->index . '?feed=sitemap-posttype-' . $post_type['name'] . '&m=$matches[1]';
734
  }
735
+
736
  // add rules for taxonomies
737
  foreach ( $this->get_taxonomies() as $taxonomy ) {
738
+ $xmlsf_rules[ $this->base_name . '-taxonomy-' . $taxonomy . '\.' . $this->extension . '$' ] = $wp_rewrite->index . '?feed=sitemap-taxonomy-' . $taxonomy;
739
  }
740
+
741
+ $urls = $this->get_urls();
742
+ if(!empty($urls))
743
+ $xmlsf_rules[ $this->base_name . '-custom\.' . $this->extension . '$' ] = $wp_rewrite->index . '?feed=sitemap-custom';
744
+
745
  }
746
 
747
  $wp_rewrite->rules = $xmlsf_rules + $wp_rewrite->rules;
750
  /**
751
  * REQUEST FILTER
752
  */
753
+ public function template( $theme ) {
754
 
755
+ if ( isset($request['feed']) && strpos($request['feed'],'sitemap') == 0 )
756
+ // clear get_template response to prevent themes functions.php (another source of blank line problems) from loading
757
+ return '';
758
+ else
759
+ return $theme;
760
+ }
761
+
762
+ public function filter_request( $request )
763
+ {
764
  if ( isset($request['feed']) && strpos($request['feed'],'sitemap') == 0 ) {
765
 
766
  if ( $request['feed'] == 'sitemap' ) {
767
+
768
  // setup actions and filters
769
  add_action('do_feed_sitemap', array($this, 'load_template_index'), 10, 1);
770
 
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?
806
 
807
  if ( strpos($request['feed'],'sitemap-posttype') == 0 ) {
808
  foreach ( $this->get_post_types() as $post_type ) {
809
+ if ( $request['feed'] == 'sitemap-posttype-'.$post_type['name'] ) {
810
  // setup actions and filters
811
+ add_action('do_feed_sitemap-posttype-'.$post_type['name'], array($this, 'load_template'), 10, 1);
812
  add_filter( 'post_limits', array($this, 'filter_limits') );
813
 
814
  // modify request parameters
815
  $request['post_type'] = $post_type['name'];
816
+ $request['post_status'] = 'publish';
817
  $request['orderby'] = 'modified';
818
+ $request['lang'] = '';
 
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
  }
829
  }
830
  }
831
 
832
+ if ( strpos($request['feed'],'sitemap-taxonomy') == 0 ) {
833
+ foreach ( $this->get_taxonomies() as $taxonomy ) {
834
+ if ( $request['feed'] == 'sitemap-taxonomy-'.$taxonomy ) {
835
+ // setup actions and filters
836
+ add_action('do_feed_sitemap-taxonomy-'.$taxonomy, array($this, 'load_template_taxonomy'), 10, 1);
 
 
 
837
 
838
+ // modify request parameters
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;
847
+ }
848
+ }
849
  }
850
 
851
+ if ( strpos($request['feed'],'sitemap-custom') == 0 ) {
 
852
  // setup actions and filters
853
+ add_action('do_feed_sitemap-custom', array($this, 'load_template_custom'), 10, 1);
 
 
 
 
 
 
 
 
 
854
 
855
  return $request;
856
+ }
857
 
858
  }
859
 
865
  */
866
 
867
  // set up the sitemap index template
868
+ public function load_template_index()
869
+ {
870
  load_template( XMLSF_PLUGIN_DIR . '/includes/feed-sitemap.php' );
871
  }
872
 
873
  // set up the sitemap home page(s) template
874
+ public function load_template_base()
875
+ {
876
  load_template( XMLSF_PLUGIN_DIR . '/includes/feed-sitemap-home.php' );
877
  }
878
 
879
  // set up the post types sitemap template
880
+ public function load_template()
881
+ {
882
  load_template( XMLSF_PLUGIN_DIR . '/includes/feed-sitemap-post_type.php' );
883
  }
884
 
885
  // set up the taxonomy sitemap template
886
+ public function load_template_taxonomy()
887
+ {
888
  load_template( XMLSF_PLUGIN_DIR . '/includes/feed-sitemap-taxonomy.php' );
889
  }
890
 
891
  // set up the news sitemap template
892
+ public function load_template_news()
893
+ {
894
  load_template( XMLSF_PLUGIN_DIR . '/includes/feed-sitemap-news.php' );
895
  }
896
 
897
+ // set up the news sitemap template
898
+ public function load_template_custom()
899
+ {
900
+ load_template( XMLSF_PLUGIN_DIR . '/includes/feed-sitemap-custom.php' );
901
+ }
902
+
903
  /**
904
+ * LIMITS
905
  */
906
 
907
  // override default feed limit
908
+ public function filter_limits( $limits )
909
+ {
910
  return 'LIMIT 0, 50000';
911
  }
912
 
913
  // override default feed limit for taxonomy sitemaps
914
+ public function filter_limits_taxonomy( $limits )
915
+ {
916
  return 'LIMIT 0, 1';
917
  }
918
 
919
  // override default feed limit for GN
920
+ public function filter_news_limits( $limits )
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
+
934
  /**
935
+ * PINGING
936
  */
937
 
938
+ public function ping($uri, $timeout = 3)
939
+ {
940
+ $options = array();
941
+ $options['timeout'] = $timeout;
942
 
943
+ $response = wp_remote_request( $uri, $options );
944
+
945
+ if ( '200' == wp_remote_retrieve_response_code($response) )
946
+ $succes = true;
947
+ else
948
+ $succes = false;
949
+
950
+ return $succes;
951
+ }
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()
990
+ {
991
+ delete_option('xmlsf_version');
992
+ foreach ( $this->defaults() as $option => $settings ) {
993
+ delete_option('xmlsf_'.$option);
994
+ }
995
 
996
+ if(!term_exists('gn-genre') || !term_exists('gn-location-1') || !term_exists('gn-location-2') || !term_exists('gn-location-3'))
997
+ $this->register_gn_taxonomies();
998
 
999
+ $terms = get_terms('gn-genre',array('hide_empty' => false));
1000
+ foreach ( $terms as $term ) {
1001
+ wp_delete_term( $term->term_id, 'gn-genre' );
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;
1056
+ // don't need hard flush by default
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
+
1142
+ public function register_news_taxonomy()
1143
+ {
1144
+ $sitemaps = $this->get_sitemaps();
 
1145
 
1146
+ if (isset($sitemaps['sitemap-news'])) {
1147
+
1148
+ // register the taxonomies
1149
+ $this->register_gn_taxonomies();
1150
+
1151
+ // create terms
1152
+ if (delete_transient('xmlsf_create_genres')) {
1153
+ foreach ($this->gn_genres as $slug => $name) {
1154
+ wp_insert_term( $name, 'gn-genre', array(
1155
+ 'slug' => $slug,
1156
+ ) );
1157
+ }
1158
+ }
1159
  }
1160
+ }
1161
+
1162
+ public function admin_init()
1163
+ {
1164
+ // CATCH TRANSIENT for reset
1165
+ if (delete_transient('xmlsf_clear_settings'))
1166
+ $this->clear_settings();
1167
+
1168
+ // CATCH TRANSIENT for flushing rewrite rules after the sitemaps setting has changed
1169
+ if (delete_transient('xmlsf_flush_rewrite_rules'))
1170
+ $this->flush_rules();
1171
 
1172
  // Include the admin class file
1173
  include_once( XMLSF_PLUGIN_DIR . '/includes/admin.php' );
1174
 
1175
  }
1176
 
1177
+ // for debugging
1178
+ public function _e_usage()
1179
+ {
1180
+ if (defined('WP_DEBUG') && WP_DEBUG == true) {
1181
+ echo '<!-- Queries executed '.get_num_queries();
1182
+ if(function_exists('memory_get_peak_usage'))
1183
+ echo ' | Peak memory usage '.round(memory_get_peak_usage()/1024/1024,2).'M';
1184
+ echo ' -->';
1185
+ }
1186
+ }
1187
+
1188
  /**
1189
  * CONSTRUCTOR
1190
  */
1191
 
1192
+ function __construct()
1193
+ {
1194
+ // sitemap element filters
1195
+ add_filter('the_title_xmlsitemap', 'strip_tags');
1196
+ add_filter('the_title_xmlsitemap', 'ent2ncr', 8);
1197
+ add_filter('the_title_xmlsitemap', 'esc_html');
1198
+ add_filter('bloginfo_xmlsitemap', 'ent2ncr', 8);
1199
+
1200
+ // TEMPLATE
1201
+ add_filter('template', array($this, 'template'), 0); //create_function ( string $args , string $code )
1202
 
1203
  // REQUEST main filtering function
1204
  add_filter('request', array($this, 'filter_request'), 1 );
1210
  add_action('generate_rewrite_rules', array($this, 'rewrite_rules') );
1211
  add_filter('user_trailingslashit', array($this, 'trailingslash') );
1212
 
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
1220
  add_action('do_robotstxt', array($this, 'robots'), 0 );
1221
  add_filter('robots_txt', array($this, 'robots_txt'), 0 );
1222
+
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
  }
includes/feed-sitemap-custom.php ADDED
@@ -0,0 +1,50 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * XML Sitemap Feed Template for displaying an XML Sitemap feed.
4
+ *
5
+ * @package XML Sitemap Feed plugin for WordPress
6
+ */
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/" -->
16
+ <!-- generator-version="' . XMLSF_VERSION . '" -->
17
+ <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
18
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
19
+ xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9
20
+ http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
21
+ ';
22
+
23
+ // get our custom urls array
24
+ 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
+
34
+ if ( $xmlsf->is_allowed_domain( $url[0] ) ) {
35
+ ?>
36
+ <url>
37
+ <loc><?php echo esc_url( $url[0] ); ?></loc>
38
+ <priority><?php echo ( isset($url[1]) && is_numeric($url[1]) ) ? $url[1] : '0.5'; ?></priority>
39
+ </url>
40
+ <?php
41
+ } else {
42
+ ?>
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(); ?>
includes/feed-sitemap-home.php CHANGED
@@ -21,15 +21,26 @@ echo '<?xml version="1.0" encoding="' . get_bloginfo('charset') . '"?>
21
  ';
22
 
23
  global $xmlsf;
 
 
24
  foreach ( $xmlsf->get_home_urls() as $url ) {
25
  ?>
26
  <url>
27
  <loc><?php echo esc_url( $url ); ?></loc>
28
- <lastmod><?php echo mysql2date('Y-m-d\TH:i:s+00:00', get_lastdate( 'gmt' ), false); ?></lastmod>
29
- <changefreq>hourly</changefreq>
 
 
 
 
 
 
 
 
30
  <priority>1.0</priority>
31
  </url>
32
  <?php
33
  }
34
  ?>
35
  </urlset>
 
21
  ';
22
 
23
  global $xmlsf;
24
+ $lastmodified = get_lastdate( 'gmt' ); // TODO take language into account !! Dont't use get_lastdate but pull one post for each language instead?
25
+ $lastactivityage = ( gmdate('U') - mysql2date( 'U', $lastmodified ) );
26
  foreach ( $xmlsf->get_home_urls() as $url ) {
27
  ?>
28
  <url>
29
  <loc><?php echo esc_url( $url ); ?></loc>
30
+ <lastmod><?php echo mysql2date('Y-m-d\TH:i:s+00:00', $lastmodified, false); ?></lastmod>
31
+ <changefreq><?php
32
+ if ( ($lastactivityage/86400) < 1 ) { // last activity less than 1 day old
33
+ echo 'hourly';
34
+ } else if ( ($lastactivityage/86400) < 7 ) { // last activity less than 1 week old
35
+ echo 'daily';
36
+ } else { // over a week old
37
+ echo 'weekly';
38
+ }
39
+ ?></changefreq>
40
  <priority>1.0</priority>
41
  </url>
42
  <?php
43
  }
44
  ?>
45
  </urlset>
46
+ <?php $xmlsf->_e_usage(); ?>
includes/feed-sitemap-news.php CHANGED
@@ -5,6 +5,9 @@
5
  * @package XML Sitemap Feed plugin for WordPress
6
  */
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
 
@@ -15,19 +18,27 @@ echo '<?xml version="1.0" encoding="'.get_bloginfo('charset').'"?>
15
  <!-- generator-url="http://status301.net/wordpress-plugins/xml-sitemap-feed/" -->
16
  <!-- generator-version="'.XMLSF_VERSION.'" -->
17
  <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
18
- xmlns:news="http://www.google.com/schemas/sitemap-news/0.9"
 
 
 
 
19
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
20
  xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9
21
  http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd
22
  http://www.google.com/schemas/sitemap-news/0.9
23
- http://www.google.com/schemas/sitemap-news/0.9/sitemap-news.xsd">
 
 
 
 
24
  ';
25
 
26
  // get site language for default language
27
  // bloginfo_rss('language') returns improper format so
28
  // we explode on hyphen and use only first part.
29
  // TODO this workaround breaks (simplified) chinese :(
30
- $language = reset(explode('-', get_bloginfo_rss('language')));
31
  if ( empty($language) )
32
  $language = 'en';
33
 
@@ -36,84 +47,162 @@ if ( have_posts() ) :
36
  while ( have_posts() ) :
37
  the_post();
38
 
39
- // check if we are not dealing with an external URL :: Thanks, Francois Deschenes :)
40
- if(!preg_match('/^' . preg_quote(home_url(), '/') . '/i', get_permalink())) continue;
41
-
42
- $thispostmodified_gmt = $post->post_modified_gmt; // post GMT timestamp
43
- $thispostmodified = mysql2date('U',$thispostmodified_gmt); // post Unix timestamp
44
- $lastcomment = array();
45
-
46
- if ($post->comment_count && $post->comment_count > 0) {
47
- $lastcomment = get_comments( array(
48
- 'status' => 'approve',
49
- '$number' => 1,
50
- 'post_id' => $post->ID,
51
- ) );
52
- $lastcommentsdate = mysql2date('U',$lastcomment[0]->comment_date_gmt); // last comment timestamp
53
- if ( $lastcommentsdate > $thispostmodified ) {
54
- $thispostmodified = $lastcommentsdate; // replace post with comment Unix timestamp
55
- $thispostmodified_gmt = $lastcomment[0]->comment_date_gmt; // and replace modified GMT timestamp
56
- }
57
- }
58
- $lastactivityage = (gmdate('U') - $thispostmodified); // post age
59
-
60
- // get the article keywords from categories and tags
61
- $keys_arr = get_the_category();
62
- if (get_the_tags())
63
- $keys_arr = array_merge($keys_arr,get_the_tags());
64
 
65
  ?>
66
  <url>
67
- <loc><?php the_permalink_rss() ?></loc>
68
  <news:news>
69
  <news:publication>
70
  <news:name><?php
71
- if(defined('XMLSF_GOOGLE_NEWS_NAME'))
72
- echo apply_filters('the_title_rss', XMLSF_GOOGLE_NEWS_NAME);
 
 
73
  else
74
- echo bloginfo_rss('name'); ?></news:name>
75
  <news:language><?php
76
  $lang = reset(get_the_terms($post->ID,'language'));
77
  echo (is_object($lang)) ? $lang->slug : $language; ?></news:language>
78
  </news:publication>
79
  <news:publication_date><?php
80
  echo mysql2date('Y-m-d\TH:i:s+00:00', $post->post_date_gmt, false); ?></news:publication_date>
81
- <news:title><?php the_title_rss() ?></news:title>
82
- <news:keywords><?php
83
- $do_comma = false;
84
- $keys_arr = get_the_category();
85
- foreach($keys_arr as $key) {
86
- echo ( $do_comma ) ? ', ' : '' ;
87
- echo apply_filters('the_title_rss', $key->name);
88
- $do_comma = true;
89
- } ?></news:keywords>
90
- <?php
91
- // TODO: create the new taxonomy "Google News Genre" with some genres preset
92
- if ( taxonomy_exists('gn_genre') && get_the_terms($post->ID,'gn_genre') ) {
93
- ?>
94
- <news:genres><?php
95
- $do_comma = false;
96
- foreach(get_the_terms($post->ID,'gn_genre') as $key) {
97
- echo ( $do_comma ) ? ', ' : '' ;
98
- echo apply_filters('the_title_rss', $key->name);
99
- $do_comma = true;
100
- } ?></news:genres>
101
- <?php
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
102
  }
103
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
104
  </news:news>
105
- <lastmod><?php echo mysql2date('Y-m-d\TH:i:s+00:00', $thispostmodified_gmt, false); ?></lastmod>
106
- <changefreq><?php
107
- if(($lastactivityage/86400) < 1) { // last activity less than 1 day old
108
- echo 'hourly';
109
- } else {
110
- echo 'daily';
111
- } ?></changefreq>
112
- <priority>1.0</priority>
 
 
 
 
 
 
 
 
 
 
 
 
113
  </url>
114
  <?php
115
  endwhile;
116
  else :
 
 
117
  $lastmodified_gmt = get_lastmodified('GMT'); // last posts or page modified date
118
  ?>
119
  <url>
@@ -131,13 +220,5 @@ else :
131
  <?php
132
  endif;
133
 
134
- // TODO see what we can do for :
135
- //<news:access>Subscription</news:access> (for now always leave off)
136
- // and
137
- //<news:genres>Blog</news:genres> (for now leave up to external taxonomy plugin to set up 'gn_genre')
138
- // http://www.google.com/support/news_pub/bin/answer.py?answer=93992
139
-
140
- // Submit:
141
- // http://www.google.com/support/news_pub/bin/answer.py?hl=nl&answer=74289
142
-
143
  ?></urlset>
 
5
  * @package XML Sitemap Feed plugin for WordPress
6
  */
7
 
8
+ global $xmlsf;
9
+ $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
 
18
  <!-- generator-url="http://status301.net/wordpress-plugins/xml-sitemap-feed/" -->
19
  <!-- generator-version="'.XMLSF_VERSION.'" -->
20
  <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
21
+ xmlns:news="http://www.google.com/schemas/sitemap-news/0.9" ';
22
+
23
+ echo !empty($options['image']) ? '
24
+ xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" ' : '';
25
+ echo '
26
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
27
  xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9
28
  http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd
29
  http://www.google.com/schemas/sitemap-news/0.9
30
+ http://www.google.com/schemas/sitemap-news/0.9/sitemap-news.xsd' ;
31
+ echo !empty($options['image']) ? '
32
+ http://www.google.com/schemas/sitemap-image/1.1
33
+ http://www.google.com/schemas/sitemap-image/1.1/sitemap-image.xsd' : '';
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
 
47
  while ( have_posts() ) :
48
  the_post();
49
 
50
+ // check if we are not dealing with an external URL :: Thanks to Francois Deschenes :)
51
+ // or if post meta says "exclude me please"
52
+ $exclude = get_post_meta( $post->ID, '_xmlsf_exclude', true );
53
+ if ( !empty($exclude) || !$xmlsf->is_allowed_domain(get_permalink()) )
54
+ continue;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
55
 
56
  ?>
57
  <url>
58
+ <loc><?php echo esc_url( get_permalink() ); ?></loc>
59
  <news:news>
60
  <news:publication>
61
  <news:name><?php
62
+ if(!empty($options['name']))
63
+ echo apply_filters( 'the_title_xmlsitemap', $options['name'] );
64
+ elseif(defined('XMLSF_GOOGLE_NEWS_NAME'))
65
+ echo apply_filters( 'the_title_xmlsitemap', XMLSF_GOOGLE_NEWS_NAME );
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>
74
+ <news:title><?php echo apply_filters( 'the_title_xmlsitemap', get_the_title() ); ?></news:title>
75
+ <?php
76
+ // access tag
77
+ $access = '';
78
+ if (!empty($options['access'])) {
79
+ // if ( get_post_status() == 'private' ) {
80
+ // if (!empty($options['access']['private'])) $access = $options['access']['private'];
81
+ // } else
82
+ if ( post_password_required() ) {
83
+ if (!empty($options['access']['password'])) $access = $options['access']['password'];
84
+ } else {
85
+ if (!empty($options['access']['default'])) $access = $options['access']['default'];
86
+ }
87
+ }
88
+
89
+ if (!empty($access)) {
90
+ ?>
91
+ <news:access><?php echo $access; ?></news:access>
92
+ <?php
93
+ }
94
+
95
+ // genres tag
96
+ $genres = '';
97
+ $terms = get_the_terms($post->ID,'gn-genre');
98
+ if ( is_array($terms) ) {
99
+ $sep = '';
100
+ foreach($terms as $obj) {
101
+ if (!empty($obj->name)) {
102
+ $genres .= $sep . $obj->name;
103
+ $sep = ', ';
104
+ }
105
+ }
106
+ }
107
+
108
+ $genres = trim(apply_filters('the_title_xmlsitemap', $genres));
109
+
110
+ if ( empty($genres) && !empty($options['genres']) && !empty($options['genres']['default']) ) {
111
+ $genres = trim(apply_filters('the_title_xmlsitemap', $options['genres']['default']));
112
+ }
113
+
114
+ if ( !empty($genres) ) {
115
+ ?>
116
+ <news:genres><?php echo $genres; ?></news:genres>
117
+ <?php
118
+ }
119
+
120
+ // keywords tag
121
+ $keywords = '';
122
+ if( !empty($options['keywords']) ) {
123
+ if ( !empty($options['keywords']['from']) ) {
124
+ $terms = get_the_terms( $post->ID, $options['keywords']['from'] );
125
+ if ( is_array($terms) ) {
126
+ $sep = '';
127
+ foreach($terms as $obj) {
128
+ if (!empty($obj->name)) {
129
+ $keywords .= $sep . $obj->name;
130
+ $sep = ', ';
131
+ }
132
+ }
133
+ }
134
+ }
135
+
136
+ $keywords = trim(apply_filters('the_title_xmlsitemap', $keywords));
137
+
138
+ if ( empty($keywords) && !empty($options['keywords']['default']) ) {
139
+ $keywords = trim(apply_filters('the_title_xmlsitemap', $options['keywords']['default']));
140
+ }
141
+
142
+ }
143
+
144
+ if ( !empty($keywords) ) {
145
+ ?>
146
+ <news:keywords><?php echo $keywords; ?></news:keywords>
147
+ <?php
148
+ }
149
+
150
+ // locations tag
151
+ $locations = '';
152
+ $sep = '';
153
+ $locs = array('gn-location-1','gn-location-2','gn-location-3');
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;
161
+ $sep = ', ';
162
+ }
163
  }
164
+ }
165
+
166
+ $locations = trim(apply_filters('the_title_xmlsitemap', $locations));
167
+
168
+ if ( empty($locations) && isset($options['locations']) && !empty($options['locations']['default']) ) {
169
+ $locations = trim(apply_filters('the_title_xmlsitemap', $options['locations']['default']));
170
+ }
171
+
172
+ if ( !empty($locations) ) {
173
+ ?>
174
+ <news:geo_locations><?php echo $locations; ?></news:geo_locations>
175
+ <?php
176
+ }
177
+
178
+ ?>
179
  </news:news>
180
+ <?php
181
+ if ( !empty($options['image']) && $xmlsf->get_images('news') ) :
182
+ foreach ( $xmlsf->get_images() as $image ) {
183
+ if ( empty($image['loc']) )
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
+ }
198
+ endif;
199
+ ?>
200
  </url>
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>
220
  <?php
221
  endif;
222
 
 
 
 
 
 
 
 
 
 
223
  ?></urlset>
224
+ <?php $xmlsf->_e_usage(); ?>
includes/feed-sitemap-post_type.php CHANGED
@@ -8,11 +8,6 @@
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
- global $xmlsf;
12
- $post_type = get_query_var('post_type');
13
- foreach ( (array)$xmlsf->get_do_tags($post_type) as $tag )
14
- $$tag = true;
15
-
16
  echo '<?xml version="1.0" encoding="' . get_bloginfo('charset') . '"?>
17
  <?xml-stylesheet type="text/xsl" href="' . plugins_url('xsl/sitemap.xsl.php',__FILE__) . '?ver=' . XMLSF_VERSION . '"?>
18
  <!-- generated-on="' . date('Y-m-d\TH:i:s+00:00') . '" -->
@@ -20,203 +15,78 @@ echo '<?xml version="1.0" encoding="' . get_bloginfo('charset') . '"?>
20
  <!-- generator-url="http://status301.net/wordpress-plugins/xml-sitemap-feed/" -->
21
  <!-- generator-version="' . XMLSF_VERSION . '" -->
22
  <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" ';
23
- echo $do_news ? '
24
- xmlns:news="http://www.google.com/schemas/sitemap-news/0.9" ' : '';
 
 
 
 
 
 
 
25
  echo '
26
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
27
  xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9
28
- http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd ';
29
- echo $do_news ? '
30
- http://www.google.com/schemas/sitemap-news/0.9
31
- http://www.google.com/schemas/sitemap-news/0.9/sitemap-news.xsd ' : '';
32
  echo '">
33
  ';
34
 
35
- // PRESETS are changable -- please read comments:
36
-
37
- $max_priority = 0.9; // Maximum priority value for any URL in the sitemap; set to any other value between 0 and 1.
38
- $min_priority = 0; // Minimum priority value for any URL in the sitemap; set to any other value between 0 and 1.
39
- // NOTE: Changing these values will influence each URL's priority. Priority values are taken by
40
- // search engines to represent RELATIVE priority within the site domain. Forcing all URLs
41
- // to a priority of above 0.5 or even fixing them all to 1.0 - for example - is useless.
42
- $frontpage_priority = 1.0; // Your front page priority, usually the same as max priority but if you have any reason
43
- // to change it, please be my guest; set to any other value between 0 and 1.
44
-
45
- $level_weight = 0.1; // Makes a sub-page gain or loose priority for each level; set to any other value between 0 and 1.
46
- $month_weight = -0.1; // Fall-back value normally ignored by automatic priority calculation, which
47
- // makes a post loose 10% of priority monthly; set to any other value between 0 and 1.
48
- $firstcomment_bonus = 0.1;
49
-
50
- // EDITING below here is NOT ADVISED!
51
-
52
- // setup site variables
53
- $_post_count = wp_count_posts('post');
54
- $_page_count = wp_count_posts('page');
55
- $_totalcommentcount = wp_count_comments();
56
-
57
- $lastmodified_gmt = get_lastmodified('GMT'); // last posts or page modified date
58
- $lastmodified = mysql2date('U',$lastmodified_gmt); // last posts or page modified date in Unix seconds
59
- $firstdate = mysql2date('U',get_firstdate('GMT')); // uses new get_firstdate() function defined in xml-sitemap/hacks.php !
60
-
61
- // calculated presets
62
- if ($_totalcommentcount->approved > 0) {
63
- $average_commentcount = $_totalcommentcount->approved/($_post_count->publish + $_page_count->publish);
64
- //$comment_weight = $average_commentcount / $_totalcommentcount->approved;
65
- } else {
66
- //$comment_weight = 0;
67
- $average_commentcount = 0;
68
- }
69
-
70
- if ( $_post_count->publish > $_page_count->publish ) { // emphasis on posts (blog)
71
- $blogbonus = 0.4;
72
- $sitebonus = 0;
73
- } elseif ( $_post_count->publish==0 ) { // only pages (you're kidding... really?? old style site)
74
- $blogbonus = 0;
75
- $sitebonus = 0.4;
76
- } else { // emphasis on pages (site)
77
- $blogbonus = 0;
78
- $sitebonus = 0.2;
79
- }
80
-
81
- if ( $lastmodified > $firstdate ) // valid blog age found ?
82
- $age_weight = ($blogbonus - $min_priority) / ($firstdate - $lastmodified); // calculate relative age weight
83
- else
84
- $age_weight = $month_weight / 2629744 ; // if not ? malus per month (that's a month in seconds)
85
 
86
- $exclude = array();
87
- if ( $post_type == 'page' ) {
88
- $exclude[] = get_option('page_on_front');
89
- if ( !empty($exclude) && function_exists('pll_get_post') )
90
- foreach ( $xmlsf->get_languages() as $lang )
91
- $exclude[] = pll_get_post( $exclude[0], $lang );
92
- // TODO : find a better way to exclude all Polylang language front pages : is_front_page() in any language !
93
- }
94
 
95
  // loop away!
96
  if ( have_posts() ) :
97
  while ( have_posts() ) :
98
  the_post();
99
-
100
- // check if we are not dealing with an external URL :: Thanks to Francois Deschenes :)
101
- // or if page is in the exclusion list (like front pages)
102
- if ( !preg_match('/^' . preg_quote(home_url(), '/') . '/i', get_permalink()) || ( $post_type == 'page' && in_array($post->ID, $exclude) ) )
103
- continue;
104
-
105
- $thispostmodified_gmt = $post->post_modified_gmt; // post GMT timestamp
106
- $thispostmodified = mysql2date('U',$thispostmodified_gmt); // post Unix timestamp
107
- $lastcomment = array();
108
- $priority = 0;
109
-
110
- if ($post->comment_count && $post->comment_count > 0) {
111
- $lastcomment = get_comments( array(
112
- 'status' => 'approve',
113
- '$number' => 1,
114
- 'post_id' => $post->ID,
115
- ) );
116
- $lastcommentsdate = mysql2date('U',$lastcomment[0]->comment_date_gmt); // last comment timestamp
117
- if ( $lastcommentsdate > $thispostmodified ) {
118
- $thispostmodified = $lastcommentsdate; // replace post with comment Unix timestamp
119
- $thispostmodified_gmt = $lastcomment[0]->comment_date_gmt; // and replace modified GMT timestamp
120
- }
121
-
122
- if ($_totalcommentcount->approved > 0)
123
- $priority = ( $post->comment_count / ( ( $_totalcommentcount->approved / 2 ) - $average_commentcount ) ) + $firstcomment_bonus;
124
- else
125
- $priority = ( $min_priority + $max_priority ) / 2 ;
126
-
127
- }
128
-
129
- if($post->post_type == "page") {
130
 
131
- if (!isset($post->ancestors)) {
132
- // could use get_post_ancestors($post) but that creates an
133
- // extra db query per sub-page so better do it ourselves...
134
- $page_obj = $post;
135
- $ancestors = array();
136
- while($page_obj->post_parent!=0) {
137
- $page_obj = get_page($page_obj->post_parent);
138
- $ancestors[] = $page_obj->ID;
139
- }
140
- } else {
141
- $ancestors = $post->ancestors;
142
- }
143
-
144
- $priority += (count($ancestors) * $level_weight) + $sitebonus;
145
- } else {
146
- if(is_sticky($post->ID))
147
- $priority = $max_priority;
148
- else
149
- $priority += (($lastmodified - $thispostmodified) * $age_weight) + $blogbonus;
150
- }
151
-
152
 
153
- $lastactivityage = (gmdate('U') - $thispostmodified); // post age
154
-
155
- // trim priority
156
- $priority = ($priority > $max_priority) ? $max_priority : $priority;
157
- $priority = ($priority < $min_priority) ? $min_priority : $priority;
158
- ?>
159
  <url>
160
- <loc><?php the_permalink_rss(); ?></loc>
 
 
 
 
 
 
 
 
 
 
 
161
  <?php
162
- // Google News tags
163
- if ( $news && $post->post_date > date('Y-m-d H:i:s', strtotime('-49 hours') ) ) { ?>
164
- <news:news>
165
- <news:publication>
166
- <news:name><?php
167
- echo ( defined('XMLSF_GOOGLE_NEWS_TITLE') ) ? apply_filters('the_title_rss', XMLSF_GOOGLE_NEWS_TITLE) : bloginfo_rss('name'); ?></news:name>
168
- <news:language><?php
169
- $lang = reset(get_the_terms($post->ID,'language'));
170
- // bloginfo_rss('language') returns improper format
171
- // so using explode but that breaks chinese :°(
172
- echo ( is_object($lang) ) ? $lang->slug : reset(explode('-', get_bloginfo_rss('language'))); ?></news:language>
173
- </news:publication>
174
- <news:publication_date><?php
175
- echo mysql2date('Y-m-d\TH:i:s+00:00', $post->post_date_gmt, false); ?></news:publication_date>
176
- <news:title><?php the_title_rss() ?></news:title>
177
- <news:keywords><?php
178
- $do_comma = false;
179
- $keys_arr = get_the_category();
180
- foreach($keys_arr as $key) {
181
- echo ( $do_comma ) ? ', ' : '' ;
182
- echo apply_filters('the_title_rss', $key->name);
183
- $do_comma = true;
184
- } ?></news:keywords>
185
  <?php
186
- // TODO: create the new taxonomy "Google News Genre" with some genres preset
187
- if ( taxonomy_exists('gn_genre') && get_the_terms($post->ID,'gn_genre') ) {
188
- ?>
189
- <news:genres><?php
190
- $do_comma = false;
191
- foreach(get_the_terms($post->ID,'gn_genre') as $key) {
192
- echo ( $do_comma ) ? ', ' : '' ;
193
- echo apply_filters('the_title_rss', $key->name);
194
- $do_comma = true;
195
- } ?></news:genres>
196
- <?php
197
  }
 
198
  ?>
199
- </news:news>
200
- <?php
201
- // and lastly, set the priority to news priority level
202
- $priority = $max_priority;
203
- } ?>
204
- <lastmod><?php echo mysql2date('Y-m-d\TH:i:s+00:00', $thispostmodified_gmt, false); ?></lastmod>
205
- <changefreq><?php
206
- if(($lastactivityage/86400) < 1) { // last activity less than 1 day old
207
- echo 'hourly';
208
- } else if(($lastactivityage/86400) < 7) { // last activity less than 1 week old
209
- echo 'daily';
210
- } else if(($lastactivityage/86400) < 30) { // last activity between 1 week and one month old
211
- echo 'weekly';
212
- } else if(($lastactivityage/86400) < 365) { // last activity between 1 month and 1 year old
213
- echo 'monthly';
214
- } else {
215
- echo 'yearly'; // never
216
- } ?></changefreq>
217
- <priority><?php echo number_format($priority,1) ?></priority>
218
  </url>
219
  <?php
220
  endwhile;
221
  endif;
222
  ?></urlset>
 
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') . '" -->
15
  <!-- generator-url="http://status301.net/wordpress-plugins/xml-sitemap-feed/" -->
16
  <!-- generator-version="' . XMLSF_VERSION . '" -->
17
  <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" ';
18
+
19
+ global $xmlsf;
20
+ $post_type = get_query_var('post_type');
21
+
22
+ foreach ( $xmlsf->do_tags($post_type) as $tag => $setting )
23
+ $$tag = $setting;
24
+
25
+ echo !empty($image) ? '
26
+ xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" ' : '';
27
  echo '
28
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
29
  xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9
30
+ http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd';
31
+ echo !empty($image) ? '
32
+ http://www.google.com/schemas/sitemap-image/1.1
33
+ http://www.google.com/schemas/sitemap-image/1.1/sitemap-image.xsd' : '';
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
 
48
  // loop away!
49
  if ( have_posts() ) :
50
  while ( have_posts() ) :
51
  the_post();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
52
 
53
+ // check if page is in the exclusion list (like front page)
54
+ // or if we are not dealing with an external URL :: Thanks to Francois Deschenes :)
55
+ // or if post meta says "exclude me please"
56
+ $exclude = get_post_meta( $post->ID, '_xmlsf_exclude', true );
57
+ if ( !empty($exclude) || !$xmlsf->is_allowed_domain(get_permalink()) || in_array($post->ID, $excluded) )
58
+ continue;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
59
 
60
+ // TODO more image tags & video tags
61
+ ?>
 
 
 
 
62
  <url>
63
+ <loc><?php echo esc_url( get_permalink() ); ?></loc>
64
+ <?php echo $xmlsf->get_lastmod(); ?>
65
+ <changefreq><?php echo $xmlsf->get_changefreq(); ?></changefreq>
66
+ <priority><?php echo $xmlsf->get_priority(); ?></priority>
67
+ <?php
68
+ if ( !empty($image) && $xmlsf->get_images() ) :
69
+ foreach ( $xmlsf->get_images() as $image ) {
70
+ if ( empty($image['loc']) )
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
  }
85
+ endif;
86
  ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
87
  </url>
88
  <?php
89
  endwhile;
90
  endif;
91
  ?></urlset>
92
+ <?php $xmlsf->_e_usage(); ?>
includes/feed-sitemap-taxonomy.php CHANGED
@@ -6,7 +6,6 @@
6
  */
7
 
8
  status_header('200'); // force header('HTTP/1.1 200 OK') for sites without posts
9
- // TODO test if we can do without it
10
  header('Content-Type: text/xml; charset=' . get_bloginfo('charset', 'UTF-8'), true);
11
 
12
  echo '<?xml version="1.0" encoding="'.get_bloginfo('charset', 'UTF-8').'"?>
@@ -15,39 +14,16 @@ echo '<?xml version="1.0" encoding="'.get_bloginfo('charset', 'UTF-8').'"?>
15
  <!-- generator="XML & Google News Sitemap Feed plugin for WordPress" -->
16
  <!-- generator-url="http://status310.net/wordpress-plugins/xml-sitemap-feed/" -->
17
  <!-- generator-version="'.XMLSF_VERSION.'" -->
18
-
19
  <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
20
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
21
  xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9
22
  http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
23
  ';
24
 
25
- // PRESETS are changable -- please read comments:
26
-
27
- $max_priority = 0.7; // Maximum priority value for any URL in the sitemap; set to any other value between 0 and 1.
28
- $min_priority = 0.2; // Minimum priority value for any URL in the sitemap; set to any other value between 0 and 1.
29
- // NOTE: Changing these values will influence each URL's priority. Priority values are taken by
30
- // search engines to represent RELATIVE priority within the site domain. Forcing all URLs
31
- // to a priority of above 0.5 or even fixing them all to 1.0 - for example - is useless.
32
-
33
- $level_weight = 0.1; // TODO Makes a sub-term gain or loose priority for each level; set to any other value between 0 and 1.
34
 
35
  $taxonomy = get_query_var('taxonomy');
36
  $lang = get_query_var('lang');
37
- echo "<!-- taxonomy: $taxonomy -->";
38
- $tax_obj = get_taxonomy($taxonomy);
39
- foreach ( $tax_obj->object_type as $post_type) {
40
- echo "<!-- taxonomy post type: $post_type -->
41
- ";
42
- $_post_count = wp_count_posts($post_type);
43
- $postcount += $_post_count->publish;
44
- }
45
-
46
- //$_terms_count = wp_count_terms(get_query_var('taxonomy'));
47
- //$average_count = $_post_count->publish / $_terms_count;
48
-
49
- // Polylang solution on http://wordpress.org/support/topic/query-all-language-terms?replies=6#post-3415389
50
- //global $xmlsf;
51
 
52
  $terms = get_terms( $taxonomy, array(
53
  'orderby' => 'count',
@@ -61,55 +37,16 @@ if ( $terms ) :
61
 
62
  foreach ( $terms as $term ) :
63
 
64
- // calculate priority based on number of posts
65
- // or maybe take child taxonomy terms into account.?
66
-
67
- $priority = $min_priority + ( $term->count / ( $postcount / 2 ) );
68
- $priority = ($priority > $max_priority) ? $max_priority : $priority;
69
-
70
- // get the latest post in this taxonomy item, to use its post_date as lastmod
71
- $posts = get_posts ( array(
72
- 'numberposts' => 1,
73
- 'no_found_rows' => true,
74
- 'update_post_meta_cache' => false,
75
- 'update_post_term_cache' => false,
76
- 'update_cache' => false,
77
- 'tax_query' => array(
78
- array(
79
- 'taxonomy' => $term->taxonomy,
80
- 'field' => 'slug',
81
- 'terms' => $term->slug
82
- )
83
- )
84
- )
85
- );
86
  ?>
87
  <url>
88
  <loc><?php echo get_term_link( $term ); ?></loc>
89
- <priority><?php echo number_format($priority,1) ?></priority>
90
- <lastmod><?php echo mysql2date('Y-m-d\TH:i:s+00:00', $posts[0]->post_date_gmt, false); ?></lastmod>
91
- <changefreq><?php
92
- $lastactivityage = (gmdate('U') - mysql2date('U', $posts[0]->post_date_gmt));
93
- if(($lastactivityage/86400) < 1) { // last activity less than 1 day old
94
- echo 'hourly';
95
- } else if(($lastactivityage/86400) < 7) { // last activity less than 1 week old
96
- echo 'daily';
97
- } else if(($lastactivityage/86400) < 30) { // last activity between 1 week and one month old
98
- echo 'weekly';
99
- } else if(($lastactivityage/86400) < 365) { // last activity between 1 month and 1 year old
100
- echo 'monthly';
101
- } else {
102
- echo 'yearly';
103
- } ?></changefreq>
104
  </url>
105
  <?php
106
  endforeach;
107
- else :
108
- ?>
109
- <url>
110
- <loc><?php echo esc_url( trailingslashit(home_url()) ); ?></loc>
111
- </url>
112
- <?php
113
  endif;
114
 
115
  ?></urlset>
 
6
  */
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').'"?>
14
  <!-- generator="XML & Google News Sitemap Feed plugin for WordPress" -->
15
  <!-- generator-url="http://status310.net/wordpress-plugins/xml-sitemap-feed/" -->
16
  <!-- generator-version="'.XMLSF_VERSION.'" -->
 
17
  <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
18
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
19
  xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9
20
  http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
21
  ';
22
 
23
+ global $xmlsf;
 
 
 
 
 
 
 
 
24
 
25
  $taxonomy = get_query_var('taxonomy');
26
  $lang = get_query_var('lang');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
27
 
28
  $terms = get_terms( $taxonomy, array(
29
  'orderby' => 'count',
37
 
38
  foreach ( $terms as $term ) :
39
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
40
  ?>
41
  <url>
42
  <loc><?php echo get_term_link( $term ); ?></loc>
43
+ <priority><?php echo $xmlsf->get_priority('taxonomy',$term); ?></priority>
44
+ <?php echo $xmlsf->get_lastmod('taxonomy',$term); ?>
45
+ <changefreq><?php echo $xmlsf->get_changefreq('taxonomy',$term); ?></changefreq>
 
 
 
 
 
 
 
 
 
 
 
 
46
  </url>
47
  <?php
48
  endforeach;
 
 
 
 
 
 
49
  endif;
50
 
51
  ?></urlset>
52
+ <?php $xmlsf->_e_usage(); ?>
includes/feed-sitemap.php CHANGED
@@ -21,67 +21,49 @@ echo '<?xml version="1.0" encoding="'.get_bloginfo('charset').'"?><?xml-styleshe
21
 
22
  global $xmlsf;
23
  ?>
24
- <!-- home page(s) -->
25
  <sitemap>
26
- <loc><?php
27
- // hook for filter 'xml_sitemap_url' provides a string here and MUST get a string returned
28
- $url = apply_filters( 'xml_sitemap_url', trailingslashit(home_url()) );
29
- if ( is_string($url) )
30
- echo esc_url( $url );
31
- else
32
- echo esc_url( trailingslashit(home_url()) );
33
- if (''==get_option('permalink_structure'))
34
- echo '?feed='.$xmlsf->base_name.'-home';
35
- else
36
- echo $xmlsf->base_name.'-home.'.$xmlsf->extension; ?></loc>
37
  </sitemap>
38
- <!-- post types -->
39
  <?php
40
  // add rules for custom public post types
41
- foreach ( $xmlsf->get_post_types() as $post_type ) {
42
- $count = wp_count_posts( $post_type['name'] );
43
- if ( $count->publish > 0 && isset($post_type['active']) ) {
 
 
 
 
44
  ?>
45
  <sitemap>
46
- <loc><?php
47
- // hook for filter 'xml_sitemap_url' provides a string here and MUST get a string returned
48
- $url = apply_filters( 'xml_sitemap_url', trailingslashit(home_url()) );
49
- if ( is_string($url) )
50
- echo esc_url( $url );
51
- else
52
- echo esc_url( trailingslashit(home_url()) );
53
- if (''==get_option('permalink_structure'))
54
- echo '?feed='.$xmlsf->base_name.'-posttype_'.$post_type['name'];
55
- else
56
- echo $xmlsf->base_name.'-posttype-'.$post_type['name'].'.'.$xmlsf->extension; ?></loc>
57
- <lastmod><?php echo mysql2date('Y-m-d\TH:i:s+00:00', get_lastdate( 'gmt', $post_type['name'] ), false); ?></lastmod>
58
  </sitemap>
59
  <?php
60
  }
61
- }
62
- ?>
63
- <!-- taxonomy types -->
64
- <?php
65
  // add rules for custom public post taxonomies
66
- foreach ( $xmlsf->get_taxonomies() as $taxonomy ) {
67
- if ( wp_count_terms( $taxonomy ) > 0 ) {
 
68
  ?>
69
  <sitemap>
70
- <loc><?php
71
- // hook for filter 'xml_sitemap_url' provides a string here and MUST get a string returned
72
- $url = apply_filters( 'xml_sitemap_url', trailingslashit(home_url()) );
73
- if ( is_string($url) )
74
- echo esc_url( $url );
75
- else
76
- echo esc_url( trailingslashit(home_url()) );
77
- if (''==get_option('permalink_structure'))
78
- echo '?feed='.$xmlsf->base_name.'-taxonomy&amp;taxonomy='.$taxonomy;
79
- else
80
- echo $xmlsf->base_name.'-taxonomy-'.$taxonomy.'.'.$xmlsf->extension; ?></loc>
81
  </sitemap>
82
  <?php
83
- // TODO add lastmod ?
84
  }
85
- }
86
 
 
 
 
 
 
 
 
 
 
87
  ?></sitemapindex>
 
21
 
22
  global $xmlsf;
23
  ?>
 
24
  <sitemap>
25
+ <loc><?php echo $xmlsf->get_index_url('home'); ?></loc>
26
+ <lastmod><?php echo mysql2date('Y-m-d\TH:i:s+00:00', get_lastdate( 'gmt' ), false); ?></lastmod>
 
 
 
 
 
 
 
 
 
27
  </sitemap>
 
28
  <?php
29
  // add rules for custom public post types
30
+ foreach ( $xmlsf->have_post_types() as $post_type ) :
31
+
32
+ if (!empty($post_type['archive']))
33
+ $archive = $post_type['archive'];
34
+ else
35
+ $archive = '';
36
+ foreach ( $xmlsf->get_archives($post_type['name'],$archive) as $m => $url ) {
37
  ?>
38
  <sitemap>
39
+ <loc><?php echo $url; ?></loc>
40
+ <lastmod><?php echo mysql2date('Y-m-d\TH:i:s+00:00', get_lastmodified( 'gmt', $post_type['name'], $m ), false); ?></lastmod>
 
 
 
 
 
 
 
 
 
 
41
  </sitemap>
42
  <?php
43
  }
44
+ endforeach;
45
+
 
 
46
  // add rules for custom public post taxonomies
47
+ foreach ( $xmlsf->get_taxonomies() as $taxonomy ) :
48
+
49
+ if ( wp_count_terms( $taxonomy, array('hide_empty'=>true) ) > 0 ) {
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;
58
 
59
+ // custom URLs sitemap
60
+ $urls = $xmlsf->get_urls();
61
+ if ( !empty($urls) ) :
62
+ ?>
63
+ <sitemap>
64
+ <loc><?php echo $xmlsf->get_index_url('custom'); ?></loc>
65
+ </sitemap>
66
+ <?php
67
+ endif;
68
  ?></sitemapindex>
69
+ <?php $xmlsf->_e_usage(); ?>
includes/xsl/sitemap-index.xsl.php CHANGED
@@ -27,7 +27,7 @@ echo '<?xml version="1.0" encoding="UTF-8"?>
27
  </div>
28
  <div id="content">
29
  <table cellpadding="5">
30
- <tr style="border-bottom:1px black solid;">
31
  <th>#</th>
32
  <th>XML Sitemap</th>
33
  <th>Last Changed</th>
27
  </div>
28
  <div id="content">
29
  <table cellpadding="5">
30
+ <tr class="high">
31
  <th>#</th>
32
  <th>XML Sitemap</th>
33
  <th>Last Changed</th>
includes/xsl/sitemap-news.xsl.php CHANGED
@@ -5,12 +5,12 @@
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"
13
- sitemap:news="http://www.google.com/schemas/sitemap-news/0.9"
 
14
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
15
  <xsl:output method="html" version="1.0" encoding="UTF-8" indent="yes"/>
16
  <xsl:template match="/">
@@ -27,9 +27,15 @@ echo '<?xml version="1.0" encoding="UTF-8"?>
27
  </div>
28
  <div id="content">
29
  <table cellpadding="5">
30
- <tr style="border-bottom:1px black solid;">
31
  <th>#</th>
32
- <th>URL</th>
 
 
 
 
 
 
33
  </tr>
34
  <xsl:variable name="lower" select="'abcdefghijklmnopqrstuvwxyz'"/>
35
  <xsl:variable name="upper" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ'"/>
@@ -37,8 +43,14 @@ echo '<?xml version="1.0" encoding="UTF-8"?>
37
  <tr><xsl:if test="position() mod 2 != 1"><xsl:attribute name="class">high</xsl:attribute></xsl:if>
38
  <td><xsl:value-of select="position()"/></td>
39
  <td><xsl:variable name="itemURL"><xsl:value-of select="sitemap:loc"/></xsl:variable>
40
- <a href="{$itemURL}"><xsl:value-of select="sitemap:loc"/></a>
41
  </td>
 
 
 
 
 
 
42
  </tr>
43
  </xsl:for-each>
44
  </table>
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"
12
+ xmlns:news="http://www.google.com/schemas/sitemap-news/0.9"
13
+ xmlns:image="http://www.google.com/schemas/sitemap-image/1.1"
14
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
15
  <xsl:output method="html" version="1.0" encoding="UTF-8" indent="yes"/>
16
  <xsl:template match="/">
27
  </div>
28
  <div id="content">
29
  <table cellpadding="5">
30
+ <tr class="high">
31
  <th>#</th>
32
+ <th>Title</th>
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'"/>
43
  <tr><xsl:if test="position() mod 2 != 1"><xsl:attribute name="class">high</xsl:attribute></xsl:if>
44
  <td><xsl:value-of select="position()"/></td>
45
  <td><xsl:variable name="itemURL"><xsl:value-of select="sitemap:loc"/></xsl:variable>
46
+ <a href="{$itemURL}"><xsl:value-of select="news:news/news:title"/></a>
47
  </td>
48
+ <td><xsl:value-of select="news:news/news:publication/news:language"/></td>
49
+ <td><xsl:value-of select="news:news/news:genres"/></td>
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>
includes/xsl/sitemap.xsl.php CHANGED
@@ -9,6 +9,7 @@ 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"
 
12
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
13
  <xsl:output method="html" version="1.0" encoding="UTF-8" indent="yes"/>
14
  <xsl:template match="/">
@@ -25,9 +26,10 @@ echo '<?xml version="1.0" encoding="UTF-8"?>'; ?>
25
  </div>
26
  <div id="content">
27
  <table cellpadding="5">
28
- <tr style="border-bottom:1px black solid;">
29
  <th>#</th>
30
  <th>URL</th>
 
31
  <th>Priority</th>
32
  <th>Change Frequency</th>
33
  <th>Last Changed</th>
@@ -38,6 +40,7 @@ echo '<?xml version="1.0" encoding="UTF-8"?>'; ?>
38
  <tr><xsl:if test="position() mod 2 != 1"><xsl:attribute name="class">high</xsl:attribute></xsl:if>
39
  <td><xsl:value-of select="position()"/></td>
40
  <td><xsl:variable name="itemURL"><xsl:value-of select="sitemap:loc"/></xsl:variable><a href="{$itemURL}"><xsl:value-of select="sitemap:loc"/></a></td>
 
41
  <td><xsl:value-of select="concat(sitemap:priority*100,'%')"/></td>
42
  <td><xsl:value-of select="concat(translate(substring(sitemap:changefreq, 1, 1),concat($lower, $upper),concat($upper, $lower)),substring(sitemap:changefreq, 2))"/></td>
43
  <td><xsl:value-of select="concat(substring(sitemap:lastmod,0,11),concat(' ', substring(sitemap:lastmod,12,5)))"/></td>
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"
12
+ xmlns:image="http://www.google.com/schemas/sitemap-image/1.1"
13
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
14
  <xsl:output method="html" version="1.0" encoding="UTF-8" indent="yes"/>
15
  <xsl:template match="/">
26
  </div>
27
  <div id="content">
28
  <table cellpadding="5">
29
+ <tr class="high">
30
  <th>#</th>
31
  <th>URL</th>
32
+ <th># Images</th>
33
  <th>Priority</th>
34
  <th>Change Frequency</th>
35
  <th>Last Changed</th>
40
  <tr><xsl:if test="position() mod 2 != 1"><xsl:attribute name="class">high</xsl:attribute></xsl:if>
41
  <td><xsl:value-of select="position()"/></td>
42
  <td><xsl:variable name="itemURL"><xsl:value-of select="sitemap:loc"/></xsl:variable><a href="{$itemURL}"><xsl:value-of select="sitemap:loc"/></a></td>
43
+ <td><xsl:value-of select="count(image:image)"/></td>
44
  <td><xsl:value-of select="concat(sitemap:priority*100,'%')"/></td>
45
  <td><xsl:value-of select="concat(translate(substring(sitemap:changefreq, 1, 1),concat($lower, $upper),concat($upper, $lower)),substring(sitemap:changefreq, 2))"/></td>
46
  <td><xsl:value-of select="concat(substring(sitemap:lastmod,0,11),concat(' ', substring(sitemap:lastmod,12,5)))"/></td>
languages/instructions.txt CHANGED
@@ -4,20 +4,24 @@
4
 
5
  1. Install PoEdit on your computer.
6
 
7
- 2. Open the template translation database xml-sitemap-xx_XX.po in this plugins /languages/ directory with PoEdit.
8
 
9
- 3. Go to Edit > Preferences and on the tab Editor check the option to compile a .mo database on save automatically. Close with OK.
10
 
11
- 4. Go to Catalog > Settings and set your name, e-mail address, language and country. Close with OK.
12
 
13
- 5. Go to Catalog > Update from POT-file and select the main xml-sitemap-feed.pot file. Then accept all new and removed translation strings with OK.
14
 
15
- 6. Now go ahead and start translating all the texts listed in PoEdit.
16
 
17
- 7. When done, go to File > Save as... and replace the xx_XX in the file name with the appropriate language and country code for your translation. Leave the rest of the file name the same and Save.
18
 
19
- 8. Upload the automatically created xml-sitemap-feed-xx_XX.mo database file (where xx_XX should now be your language and country code) to the plugins /languages/ directory on your WordPress site.
20
 
21
- 9. After verifying the translations work on your site, send the .mo file to ravanhagen@gmail.com and don't forget to tell me how and with what link you would like to be mentioned in the credits!
 
 
 
 
22
 
23
  Thanks for sharing your translation :)
4
 
5
  1. Install PoEdit on your computer.
6
 
7
+ 2. Go to this plugins /languages/ directory.
8
 
9
+ 3. If there is no .po file that corresponds with your language yet, rename the template translation database xml-sitemap-feed-xx_XX.po by replacing the xx with your language code and XX with your country code.
10
 
11
+ 4. Open the .po file of your language with PoEdit.
12
 
13
+ 5. Go to Edit > Preferences and on the tab Editor check the option to compile a .mo database on save automatically. Close with OK.
14
 
15
+ 6. Go to Catalog > Settings and set your name, e-mail address, language and country. Close with OK.
16
 
17
+ 7. Go to Catalog > Update from POT-file and select the main xml-sitemap-feed.pot file. Then accept all new and removed translation strings with OK.
18
 
19
+ 8. Now go ahead and start translating all the texts listed in PoEdit.
20
 
21
+ 9. When done, go to File > Save to Save.
22
+
23
+ 10. Upload the automatically created xml-sitemap-feed-xx_XX.mo database file (where xx_XX should now be your language and country code) to the plugins /languages/ directory on your WordPress site.
24
+
25
+ 11. After verifying the translations work on your site, send the .mo file and, if you're willing to share it, your original .po file to ravanhagen@gmail.com and don't forget to tell me how and with what link you would like to be mentioned in the credits!
26
 
27
  Thanks for sharing your translation :)
languages/xml-sitemap-feed-es_ES.mo ADDED
Binary file
languages/xml-sitemap-feed-es_ES.po ADDED
@@ -0,0 +1,528 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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-11-29 11:45+0100\n"
7
+ "Last-Translator: jelena kovacevic <jecajeca260@gmail.com>\n"
8
+ "Language-Team: \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;_n\n"
13
+ "X-Poedit-SourceCharset: UTF-8\n"
14
+ "X-Generator: Poedit 1.5.5\n"
15
+
16
+ #: ../includes/admin.php:19
17
+ msgid "XML Sitemaps"
18
+ msgstr "Mapas de Sitios XML"
19
+
20
+ #: ../includes/admin.php:20
21
+ msgid "XML Sitemap Index"
22
+ msgstr "Índice de Mapas de Sitios XML"
23
+
24
+ #: ../includes/admin.php:25 ../includes/admin.php:820
25
+ msgid "Google News Sitemap"
26
+ msgstr "Mapa de Sitio Noticias Google"
27
+
28
+ #: ../includes/admin.php:69
29
+ msgid "Google"
30
+ msgstr "Google"
31
+
32
+ #: ../includes/admin.php:72
33
+ msgid "Bing & Yahoo"
34
+ msgstr "Bing & Yahoo"
35
+
36
+ #: ../includes/admin.php:75
37
+ msgid "Yandex"
38
+ msgstr "Yandex"
39
+
40
+ #: ../includes/admin.php:78
41
+ msgid "Baidu"
42
+ msgstr "Baidu"
43
+
44
+ #: ../includes/admin.php:81
45
+ msgid "Ping-O-Matic"
46
+ msgstr "Ping-O-Matic"
47
+
48
+ #: ../includes/admin.php:89 ../includes/admin.php:778
49
+ msgid "Ping on Publish"
50
+ msgstr "Ping on Publish"
51
+
52
+ #: ../includes/admin.php:113
53
+ #, php-format
54
+ msgid "Successfully pinged for %1$s on %2$s GMT."
55
+ msgstr "Pinged exitosamente para %1$s en %2$s GMT."
56
+
57
+ #: ../includes/admin.php:123
58
+ #, php-format
59
+ msgid "Rules to append to the %s generated by WordPress."
60
+ msgstr "Reglas para anexar a los %s generados por WordPress"
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
+ "Únicamente añada reglas aquí cuando sepa lo que está haciendo, de otro modo "
68
+ "puede cortar el acceso del motor de búsqueda a su sitio."
69
+
70
+ #: ../includes/admin.php:124
71
+ msgid ""
72
+ "These rules will not have effect when you are using a static robots.txt file."
73
+ msgstr ""
74
+ "Estas reglas no tendrán efecto cuando utilice un archivo robots.txt estático."
75
+
76
+ #: ../includes/admin.php:131
77
+ msgid ""
78
+ "Clear all XML Sitemap Feed options from the database and start fresh with "
79
+ "the default settings."
80
+ msgstr ""
81
+ "Limpie todas las opciones de Alimentación al Mapa de Sitio XML de la base de "
82
+ "datos y comience de nuevo con la configuración por omisión."
83
+
84
+ #: ../includes/admin.php:133
85
+ #, php-format
86
+ msgid "Disabling and reenabling the %s plugin will have the same effect."
87
+ msgstr "Deshabilitar y rehabilitar el plugin %s tendrá el mismo efecto."
88
+
89
+ #: ../includes/admin.php:133 ../includes/admin.php:141
90
+ #: ../includes/admin.php:352
91
+ msgid "XML Sitemap & Google News Feeds"
92
+ msgstr "Mapa de sitio XML & Noticias Google"
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 "Done para conservar gratutio el desarrollo del plugin %s ¡y apóyelo!"
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
+ "Estos parámetros controlan los Mapas de Sitio XML generados por el plugin %s."
104
+
105
+ #: ../includes/admin.php:150
106
+ msgid "XML Sitemaps for post types"
107
+ msgstr "Mapas de Sitio XML para tipos de publicaciones."
108
+
109
+ #: ../includes/admin.php:189
110
+ msgid "Year"
111
+ msgstr "Año"
112
+
113
+ #: ../includes/admin.php:190
114
+ msgid "Month"
115
+ msgstr "Mes"
116
+
117
+ #: ../includes/admin.php:194
118
+ msgid "Split by"
119
+ msgstr "Dividir por"
120
+
121
+ #: ../includes/admin.php:204
122
+ msgid ""
123
+ "Split by year if you experience errors or slow sitemaps. In very rare cases, "
124
+ "split by month is needed."
125
+ msgstr ""
126
+ "Dividir por año si experimenta errores o más de sitio lentos. En casos "
127
+ "raros, divida por mes si es necesario."
128
+
129
+ #: ../includes/admin.php:209 ../includes/admin.php:725
130
+ msgid "Priority"
131
+ msgstr "Prioridad"
132
+
133
+ #: ../includes/admin.php:211
134
+ msgid "Priority can be overridden on individual posts."
135
+ msgstr "La Prioridad se puede anteponer a publicaciones individuales."
136
+
137
+ #: ../includes/admin.php:216
138
+ msgid ""
139
+ "Automatically adjusts Priority according to relative age and comment count."
140
+ msgstr ""
141
+ "Ajusta la Prioridad automáticamente de acuerdo a edad relativa y cantidad de "
142
+ "comentarios."
143
+
144
+ #: ../includes/admin.php:216
145
+ msgid ""
146
+ "Sticky posts will not be subject to reduction by age. Individual posts with "
147
+ "fixed Priority will always keep that value."
148
+ msgstr ""
149
+ "Las publicaciones no estarán sujetas a reducción por edad. Las publicaciones "
150
+ "individuales siempre conservarán ese valor."
151
+
152
+ #: ../includes/admin.php:221
153
+ msgid "Update Lastmod and Changefreq on comments."
154
+ msgstr "Actualizar Lastmod y Changefreq en comentarios."
155
+
156
+ #: ../includes/admin.php:221
157
+ msgid ""
158
+ "Set this if discussion on your site warrants reindexation upon each new "
159
+ "comment."
160
+ msgstr ""
161
+ "Establezca esto si la discusión en su sitio garantiza la reindexación en "
162
+ "cada nuevo comentario."
163
+
164
+ #: ../includes/admin.php:225 ../includes/admin.php:371
165
+ msgid "Add image tags for"
166
+ msgstr "Añada etiquetas de imagen para"
167
+
168
+ #: ../includes/admin.php:233 ../includes/admin.php:378
169
+ msgid "Attached images"
170
+ msgstr "Imágenes adjuntas"
171
+
172
+ #: ../includes/admin.php:243
173
+ msgid ""
174
+ "Priority settings do not affect ranking in search results in any way. They "
175
+ "are only meant to suggest search engines which URLs to index first. Once a "
176
+ "URL has been indexed, its Priority becomes meaningless until its Lastmod is "
177
+ "updated."
178
+ msgstr ""
179
+ "Los parámetros de prioridad no afectan la clasificación en los resultados. "
180
+ "Sólo sugieren a los motores de búsqueda cuáles URLs encontrar primero. Una "
181
+ "vez que la URL ha sido indexada, su Prioridad se vuelve insignificante hasta "
182
+ "que su Lastmod sea actualizada."
183
+
184
+ #: ../includes/admin.php:243
185
+ msgid ""
186
+ "Maximum Priority (1.0) is reserved for the front page, individual posts and, "
187
+ "when allowed, posts with high comment count."
188
+ msgstr ""
189
+ "Prioridad Máxima (1.0) está reservada para la página frontal, publicaciones "
190
+ "individuales y, cuando sea permitido, publicaciones con gran número de "
191
+ "comentarios."
192
+
193
+ #: ../includes/admin.php:243
194
+ msgid ""
195
+ "Priority values are taken as relative values. Setting all to the same (high) "
196
+ "value is pointless."
197
+ msgstr ""
198
+ "Los valores de prioridad se toman como valores relativos. Fijar todos al "
199
+ "mismo valor (alto) es innecesario."
200
+
201
+ #: ../includes/admin.php:294
202
+ msgid "XML Sitemaps for taxonomies"
203
+ msgstr "Mapas de Sitios XML para taxonomías."
204
+
205
+ #: ../includes/admin.php:300
206
+ msgid ""
207
+ "It is generally not recommended to include taxonomy pages, unless their "
208
+ "content brings added value."
209
+ msgstr ""
210
+ "No es recomendado generalmente incluir páginas de taxonomía, a menos que su "
211
+ "contenido proporcione valor agregado."
212
+
213
+ #: ../includes/admin.php:300
214
+ msgid ""
215
+ "For example, when you use category descriptions with information that is not "
216
+ "present elsewhere on your site or if taxonomy pages list posts with an "
217
+ "excerpt that is different from, but complementary to the post content. In "
218
+ "these cases you might consider including certain taxonomies. Otherwise, if "
219
+ "you fear <a href=\"http://moz.com/learn/seo/duplicate-content\">negative "
220
+ "affects of duplicate content</a> or PageRank spread, you might even consider "
221
+ "disallowing indexation of taxonomies."
222
+ msgstr ""
223
+ "Por ejemplo, cuando se utilizan descripciones de las categorías con "
224
+ "información que no está presente en otros lugares en su sitio o si la lista "
225
+ "de páginas de taxonomía enlista las publicaciones con un extracto que es "
226
+ "diferente, pero complementario al contenido de la publicación. En estos "
227
+ "casos, es posible considerar la inclusión de ciertas taxonomías. De lo "
228
+ "contrario, si teme <a href=\"http://moz.com/learn/seo/duplicate-content\"> "
229
+ "afecta negativamente al contenido duplicado </ a> o propagación PageRank, "
230
+ "incluso podría considerar no permitir la indexación de las taxonomías ."
231
+
232
+ #: ../includes/admin.php:300
233
+ #, php-format
234
+ msgid ""
235
+ "You can do this by adding specific robots.txt rules in the %s field above."
236
+ msgstr ""
237
+ "Puede hacer esto añadiendo reglas específicas robots.txt en el campo %s de "
238
+ "arriba."
239
+
240
+ #: ../includes/admin.php:300 ../includes/admin.php:789
241
+ msgid "Additional robots.txt rules"
242
+ msgstr "Reglas robots.txt adicionales"
243
+
244
+ #: ../includes/admin.php:315
245
+ msgid "No taxonomies available for the currently included post types."
246
+ msgstr ""
247
+ "No hay taxonomías disponibles para los tipos de publicaciones incluidas "
248
+ "actualmente."
249
+
250
+ #: ../includes/admin.php:331
251
+ msgid "Additional URLs to append to the XML Sitemap."
252
+ msgstr "URLs adicionales para anexar al Mapa de Sitio XML."
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
+ "Añada la URL completa incluyendo el protocolo (http/https) y el dominio de "
262
+ "cualquier página estática o página de WordPress que desee anexar a las ya "
263
+ "incluidas por los parámetros de arriba. Opcionalmente, añada un valor de "
264
+ "prioridad entre 0 y , separados por un espacio después de la URL. Comience "
265
+ "cada URL en un nuevo renglón."
266
+
267
+ #: ../includes/admin.php:341
268
+ msgid "Additional domains to allow in the XML Sitemap."
269
+ msgstr "Dominios adicionales para permitir en el Mapa de Sitio XML."
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 "
275
+ "allowed. This means that all URLs that use another domain (custom URLs or "
276
+ "using a plugin like Page Links To) are filtered from the XML Sitemap. "
277
+ "However, if you are the verified owner of other domains in your Google/Bing "
278
+ "Webmaster Tools account, you can include these in the same sitemap. Add "
279
+ "these domains, without protocol (http/https) each on a new line. Note that "
280
+ "if you enter a domain with www, all URLs without it or with other subdomains "
281
+ "will be filtered."
282
+ msgstr ""
283
+ "Por defecto, sólo se permite el dominio %s como se utiliza en la dirección "
284
+ "del sitio de WordPress. Esto significa que todas las URL que utilizan otro "
285
+ "dominio (URL personalizadas o usar un plugin como Page Links a) se filtran "
286
+ "desde el Mapa de Sitio XML. Sin embargo, si usted es el propietario "
287
+ "verificado de otros dominios en su cuenta de Herramientas para webmasters de "
288
+ "Google / Bing, puede incluirlos en el mismo mapa del sitio. Añada estos "
289
+ "dominios, sin protocolo (http / https) cada uno en una línea nueva. Tenga en "
290
+ "cuenta que si usted entra en un dominio con www, se filtrarán todos los URL "
291
+ "sin ella o con otros subdominios."
292
+
293
+ #: ../includes/admin.php:352
294
+ #, php-format
295
+ msgid ""
296
+ "These settings control the Google News Sitemap generated by the %s plugin."
297
+ msgstr ""
298
+ "Estos parámetros controlan el Mapa de Sitio Noticias Google generado por el "
299
+ "plugin %s."
300
+
301
+ #: ../includes/admin.php:352
302
+ msgid ""
303
+ "When you are done configuring and preparing your news content and you are "
304
+ "convinced your site adheres to the <a href=\"https://support.google.com/news/"
305
+ "publisher/answer/40787?ref_topic=2484652\" target=\"_blank\">Google News "
306
+ "guidelines</a>, go ahead and <a href=\"https://support.google.com/news/"
307
+ "publisher/troubleshooter/3179220?#ts=3179198\" target=\"_blank\">submit your "
308
+ "site for inclusion</a>!"
309
+ msgstr ""
310
+ "Cuando haya terminado de configurar y preparar su contenido de noticias y "
311
+ "usted está convencido de que su sitio se adhiere a las <a href=\"https://"
312
+ "support.google.com/news/publisher/answer/40787?ref_topic=2484652\" target="
313
+ "\"_blank\">Google News guidelines</a>, go ahead and <a href=\"https://"
314
+ "support.google.com/news/publisher/troubleshooter/3179220?#ts=3179198\" "
315
+ "target=\"_blank\">submit your site for inclusion</a>!"
316
+
317
+ #: ../includes/admin.php:362
318
+ #, php-format
319
+ msgid "By default, the general %s setting will be used."
320
+ msgstr "Por defecto, serán utilizados los parámetros generales %s."
321
+
322
+ #: ../includes/admin.php:392 ../includes/admin.php:826
323
+ msgid "Access (&lt;access&gt; tag)"
324
+ msgstr "Acceso (&lt;access&gt; tag)"
325
+
326
+ #: ../includes/admin.php:393
327
+ #, php-format
328
+ msgid ""
329
+ "The &lt;access&gt; tag specifies whether an article is available to all "
330
+ "readers (%1$s), or only to those with a free (%2$s) or paid membership "
331
+ "(%3$s) to your site."
332
+ msgstr ""
333
+ "The &lt;access&gt; especifica si un artículo se encuentra disponible a "
334
+ "todos los lectores (%1$s), o sólo a aquellos con una membrecía gratuita "
335
+ "(%2$s) o pagada (%3$s) a su sitio."
336
+
337
+ #: ../includes/admin.php:393 ../includes/admin.php:400
338
+ #: ../includes/admin.php:413
339
+ msgid "Registration"
340
+ msgstr "Registro"
341
+
342
+ #: ../includes/admin.php:393 ../includes/admin.php:401
343
+ #: ../includes/admin.php:414
344
+ msgid "Subscription"
345
+ msgstr "Subscripción"
346
+
347
+ #: ../includes/admin.php:398
348
+ msgid "Tag normal posts as"
349
+ msgstr "Etiquete publicaciones normales como"
350
+
351
+ #: ../includes/admin.php:412
352
+ #, php-format
353
+ msgid "Tag %s posts as"
354
+ msgstr "Etiquete publicaciones %s como"
355
+
356
+ #: ../includes/admin.php:419
357
+ msgid ""
358
+ "Note: The &lt;access&gt; tag is required when applicable. Do not leave it to "
359
+ "Public when your content is not."
360
+ msgstr ""
361
+ "Nota: La etiqueta &lt;Access&gt; es requerida cuando sea necesaria. No le "
362
+ "deje en Pública cuando su contenido no lo es."
363
+
364
+ #: ../includes/admin.php:439 ../includes/admin.php:827
365
+ msgid "Genres (&lt;genres&gt; tag)"
366
+ msgstr "Géneros (&lt;genres&gt; tag)"
367
+
368
+ #: ../includes/admin.php:440
369
+ msgid ""
370
+ "The &lt;genres&gt; tag specifies one or more properties for an article, "
371
+ "namely, whether it is a press release, a blog post, an opinion, an op-ed "
372
+ "piece, user-generated content, or satire."
373
+ msgstr ""
374
+ "La etiqueta &lt;genres&gt; especifica una o más propiedades de un artículo, "
375
+ "a saber, si se trata de un comunicado de prensa, un blog, una opinión, una "
376
+ "columna de opinión, el contenido generado por el usuario, o sátira."
377
+
378
+ #: ../includes/admin.php:440
379
+ msgid "You can assign Google News genres when writing a new post."
380
+ msgstr ""
381
+ "Puede asignar géneros de Noticias Google al escribir una nueva publicación."
382
+
383
+ #: ../includes/admin.php:451
384
+ msgid "Default genre:"
385
+ msgstr "Género por defecto:"
386
+
387
+ #: ../includes/admin.php:460
388
+ msgid ""
389
+ "Note: The &lt;genres&gt; tag is required when applicable and restricted to "
390
+ "the list provided above."
391
+ msgstr ""
392
+ "Nota: La etiqueta &lt;genres&gt; es requerida cuando sea necesaria y "
393
+ "restringida a la lista proporcionad arriba."
394
+
395
+ #: ../includes/admin.php:472 ../includes/admin.php:828
396
+ msgid "Topics (&lt;keywords&gt; tag)"
397
+ msgstr "Temas (&lt;keywords&gt; etiqueta)"
398
+
399
+ #: ../includes/admin.php:473
400
+ msgid ""
401
+ "The &lt;keywords&gt; tag is used to help classify the articles you submit to "
402
+ "Google News by <strong>topic</strong>."
403
+ msgstr ""
404
+ "La etiqueta &lt;keywords&gt; se usa para ayudarle a clasificar los artículos "
405
+ "que envíe a Noticias Google por <strong>topic</strong>."
406
+
407
+ #: ../includes/admin.php:475
408
+ #, php-format
409
+ msgid "Use %s for topics."
410
+ msgstr "Utilice %s para temas"
411
+
412
+ #: ../includes/admin.php:480
413
+ msgid "Default topic(s):"
414
+ msgstr "Tema(s) por defecto:"
415
+
416
+ #: ../includes/admin.php:482 ../includes/admin.php:503
417
+ msgid "Separate with a comma."
418
+ msgstr "Separar con una coma."
419
+
420
+ #: ../includes/admin.php:484
421
+ msgid ""
422
+ "Keywords may be drawn from, but are not limited to, the list of <a href="
423
+ "\"http://www.google.com/support/news_pub/bin/answer.py?answer=116037\" "
424
+ "target=\"_blank\">existing Google News keywords</a>."
425
+ msgstr ""
426
+ "Las palabras clave pueden extraerse de, pero no se limitan a, la lista de <a "
427
+ "href=\"http://www.google.com/support/news_pub/bin/answer.py?answer=116037\" "
428
+ "target=\"_blank\">existing Google News keywords</a>."
429
+
430
+ #: ../includes/admin.php:494 ../includes/admin.php:829
431
+ msgid "Locations (&lt;geo_locations&gt; tag)"
432
+ msgstr "Localizaciones (&lt;geo_locations&gt; tag)"
433
+
434
+ #: ../includes/admin.php:495
435
+ msgid ""
436
+ "The &lt;geo_locations&gt; tag is used identify the geographic location of "
437
+ "your articles."
438
+ msgstr ""
439
+ "La etiqueta &lt;geo_locations&gt; se utiliza para identificar la "
440
+ "localización geográfica de sus artículos."
441
+
442
+ #: ../includes/admin.php:495
443
+ msgid "You can assign locations when writing a new post."
444
+ msgstr "Puede asignar localizaciones al escribir una nueva publicación."
445
+
446
+ #: ../includes/admin.php:501
447
+ msgid "Default location:"
448
+ msgstr "Localización por defecto:"
449
+
450
+ #: ../includes/admin.php:505
451
+ msgid ""
452
+ "You should list location entities from smallest entity to largest. For "
453
+ "example: <code>Detroit, Michigan, USA</code> or <code>Rhône-Alpes, France</"
454
+ "code>."
455
+ msgstr ""
456
+ "Se deben poner las entidades de ubicación de entidad menor a mayor. Por "
457
+ "ejemplo: <code> Detroit, Michigan, EE.UU. </ code> o <code> Ródano-Alpes, "
458
+ "Francia </ code>."
459
+
460
+ #: ../includes/admin.php:689 ../includes/admin.php:798
461
+ msgid "XML Sitemap"
462
+ msgstr "Mapa de Sitio XML"
463
+
464
+ #: ../includes/admin.php:721
465
+ msgid "Exclude from XML Sitemap"
466
+ msgstr "Excluir del Mapa de Sitio XML"
467
+
468
+ #: ../includes/admin.php:727
469
+ #, php-format
470
+ msgid "Leave empty for automatic Priority as configured on %1$s > %2$s."
471
+ msgstr "Deje vacío para Prioridad automática como se configuró en %1$s > %2$s."
472
+
473
+ #: ../includes/admin.php:773
474
+ msgid "Enable XML sitemaps"
475
+ msgstr "Habilitar Mapas de Sitio XML"
476
+
477
+ #: ../includes/admin.php:794
478
+ msgid "Reset XML sitemaps"
479
+ msgstr "Restaurar Mapas de Sitio XML"
480
+
481
+ #: ../includes/admin.php:801
482
+ msgid "Include post types"
483
+ msgstr "Incluir tipos de publicaciones"
484
+
485
+ #: ../includes/admin.php:804
486
+ msgid "Include taxonomies"
487
+ msgstr "Incluir taxonomías"
488
+
489
+ #: ../includes/admin.php:807
490
+ msgid "Include custom URLs"
491
+ msgstr "Incluir URLs personalizadas"
492
+
493
+ #: ../includes/admin.php:811
494
+ msgid "Additional allowed domains"
495
+ msgstr "Dominios permitidos adicionales"
496
+
497
+ #: ../includes/admin.php:824
498
+ msgid "Publication name"
499
+ msgstr "Nombre de la publicación"
500
+
501
+ #: ../includes/core.php:1059
502
+ msgid "Google News Genres"
503
+ msgstr "Géneros de Noticias Google"
504
+
505
+ #: ../includes/core.php:1060
506
+ msgid "Google News Genre"
507
+ msgstr "Género de Noticias Google"
508
+
509
+ #: ../includes/core.php:1078
510
+ msgid "Google News Country"
511
+ msgstr "País de Noticias Google"
512
+
513
+ #: ../includes/core.php:1080 ../includes/core.php:1099
514
+ #: ../includes/core.php:1118
515
+ msgid ""
516
+ "Only one allowed. Must be consistent with other Google News location "
517
+ "entities (if set)."
518
+ msgstr ""
519
+ "Sólo uno permitido. Debe ser consistente con otras entidades de localización "
520
+ "de Noticias Google (si se establecen)."
521
+
522
+ #: ../includes/core.php:1097
523
+ msgid "Google News State/Province"
524
+ msgstr "Estado/Provincia de Noticias Google"
525
+
526
+ #: ../includes/core.php:1116
527
+ msgid "Google News City"
528
+ msgstr "Ciudad de Noticias Google"
languages/xml-sitemap-feed-fr_FR.mo CHANGED
Binary file
languages/xml-sitemap-feed-fr_FR.po CHANGED
@@ -2,8 +2,8 @@ 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-02-22 16:43+0100\n"
6
- "PO-Revision-Date: 2013-02-22 18:03+0100\n"
7
  "Last-Translator: RavanH <ravanhagen@gmail.com>\n"
8
  "Language-Team: \n"
9
  "Language: \n"
@@ -16,65 +16,245 @@ msgstr ""
16
  "X-Poedit-Country: FRANCE\n"
17
 
18
  #: ../includes/admin.php:15
19
- msgid "Donate to keep the free XML Sitemap Feeds plugin development & support going!"
20
- msgstr "Faites un don pour aider le développement et support de l'extension XML Sitemap Feeds. Merci !"
 
21
 
22
  #: ../includes/admin.php:15
23
- msgid "These settings control the XML Sitemap generation."
24
- msgstr "Ces options contrôlent le XML Sitemap."
 
25
 
26
  #: ../includes/admin.php:15
27
  #, php-format
28
- msgid "XML Sitemaps are disabled if you have set the option %s (above) to %s."
29
- msgstr "Les XML Sitemaps sont désactivé si l'option %s (en haut) est mis à %s."
30
 
31
- #: ../includes/admin.php:15
32
- msgid "Site Visibility"
33
- msgstr ""
 
34
 
35
- #: ../includes/admin.php:15
36
  msgid "Discourage search engines from indexing this site"
37
  msgstr ""
38
 
39
- #: ../includes/admin.php:39
 
 
 
 
 
 
 
 
 
 
 
 
 
 
40
  msgid "Regular XML Sitemaps"
41
  msgstr "XML Sitemaps normaux"
42
 
43
- #: ../includes/admin.php:41
44
- #: ../includes/admin.php:47
45
  msgid "View"
46
  msgstr ""
47
 
48
- #: ../includes/admin.php:45
 
49
  msgid "Google News Sitemap"
50
  msgstr "Google News Sitemap"
51
 
52
- #: ../includes/admin.php:123
53
- #, php-format
54
- msgid "Rules to append to %s generated by WordPress."
55
- msgstr "Règles à ajouter au %s produit par WordPress."
56
 
57
- #: ../includes/admin.php:123
58
- msgid "Warning: Only set rules here when you know what you are doing, otherwise you might break access to your site.<br />Note: These rules will not have effect when you are using a static robots.txt file."
59
- msgstr "Attention: Ajoutez des règles ici seulement si vous saviez le faire, vous risquez bloquer l'accès aux moteurs de recherche.<br />Note: Ces règles n'ont pas d'influence si vous utilisez un fichier robots.txt statique."
 
 
60
 
61
- #: ../includes/admin.php:185
62
- msgid "XML Sitemaps"
63
- msgstr "XML Sitemaps"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
64
 
65
- #: ../includes/admin.php:188
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
66
  msgid "Enable XML sitemaps"
67
  msgstr "Activez XML Sitemaps"
68
 
69
- #: ../includes/admin.php:191
70
- msgid "Include post types"
71
- msgstr "Types d'articles à inclure"
72
-
73
- #: ../includes/admin.php:194
74
  msgid "Include taxonomies"
75
  msgstr "Taxonomies à inclure"
76
 
77
- #: ../includes/admin.php:201
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
78
  msgid "Additional robots.txt rules"
79
  msgstr "Règles robots.txt additionelles"
80
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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"
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"
249
+
250
+ #~ msgid "month of publication"
251
+ #~ msgstr "mois de la publication"
252
+
253
+ #~ msgid "Note:"
254
+ #~ msgstr "Attention :"
255
+
256
+ #~ msgid "year"
257
+ #~ msgstr "an"
258
+
259
+ #~ msgid "Divide by"
260
+ #~ msgstr "Trier par"
languages/xml-sitemap-feed-id_ID.mo ADDED
Binary file
languages/xml-sitemap-feed-id_ID.po ADDED
@@ -0,0 +1,304 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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-04-29 19:59+0100\n"
6
+ "PO-Revision-Date: 2013-07-21 01:07+0800\n"
7
+ "Last-Translator: RavanH <ravanhagen@gmail.com>\n"
8
+ "Language-Team: <nasrulhaq81@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;_n\n"
13
+ "X-Poedit-Basepath: .\n"
14
+ "X-Poedit-SourceCharset: UTF-8\n"
15
+ "X-Generator: Poedit 1.5.7\n"
16
+ "Language: id_ID\n"
17
+ "X-Poedit-SearchPath-0: ..\n"
18
+
19
+ #: ../includes/admin.php:15
20
+ #, php-format
21
+ msgid "Donate to keep the free %s plugin development & support going!"
22
+ msgstr ""
23
+ "Donasi untuk menjaga pengembangan & dukungan plugin gratis %s berlangsung "
24
+
25
+ #: ../includes/admin.php:15 ../includes/admin.php:269
26
+ msgid "XML Sitemap & Google News Feeds"
27
+ msgstr "XML Sitemap & Google News Feeds"
28
+
29
+ #: ../includes/admin.php:15
30
+ #, php-format
31
+ msgid "These settings control the XML Sitemaps generated by the %s plugin."
32
+ msgstr ""
33
+ "Pengaturan ini mengontrol untuk menghasilkan XML Sitemaps oleh plugin %s"
34
+
35
+ #: ../includes/admin.php:16
36
+ #, php-format
37
+ msgid ""
38
+ "XML Sitemaps will be disabled automatically when you check the option %1$s "
39
+ "at %2$s above."
40
+ msgstr ""
41
+ "XML Sitemap akan dimatikan otomatis ketika anda mencentang pilihan %1$s di "
42
+ "%2$s atas"
43
+
44
+ #: ../includes/admin.php:16
45
+ msgid "Discourage search engines from indexing this site"
46
+ msgstr "Halangi mesin pencari mengindex situs ini"
47
+
48
+ #: ../includes/admin.php:16
49
+ msgid "Search Engine Visibility"
50
+ msgstr "Kenampakan mesin pencari"
51
+
52
+ #: ../includes/admin.php:16
53
+ #, php-format
54
+ msgid ""
55
+ "XML Sitemaps are disabled because you have checked the option %1$s at %2$s "
56
+ "above."
57
+ msgstr ""
58
+ "XML Sitemap dimatikan karena anda mencentang pilihan %1$s pada %2$s diatas."
59
+
60
+ #: ../includes/admin.php:40 ../includes/admin.php:410
61
+ msgid "XML Sitemaps"
62
+ msgstr "XML Sitemaps"
63
+
64
+ #: ../includes/admin.php:41
65
+ msgid "Regular XML Sitemaps"
66
+ msgstr "XML Sitemap Reguler"
67
+
68
+ #: ../includes/admin.php:43 ../includes/admin.php:48
69
+ msgid "View"
70
+ msgstr "Lihat"
71
+
72
+ #: ../includes/admin.php:46 ../includes/admin.php:173
73
+ msgid "Google News Sitemap"
74
+ msgstr "Google News Sitemap"
75
+
76
+ #: ../includes/admin.php:58 ../includes/admin.php:419
77
+ msgid "Include post types"
78
+ msgstr "Termasuk tipe post"
79
+
80
+ #: ../includes/admin.php:82 ../includes/admin.php:327
81
+ #: ../includes/admin.php:369
82
+ msgid "Settings"
83
+ msgstr "Pengaturan"
84
+
85
+ #: ../includes/admin.php:97
86
+ msgid "Year"
87
+ msgstr "Tahun"
88
+
89
+ #: ../includes/admin.php:98
90
+ msgid "Month"
91
+ msgstr "Bulan"
92
+
93
+ #: ../includes/admin.php:102
94
+ msgid "Split by"
95
+ msgstr "Dipilah oleh"
96
+
97
+ #: ../includes/admin.php:105 ../includes/admin.php:140
98
+ msgid "None"
99
+ msgstr "Tidak ada"
100
+
101
+ #: ../includes/admin.php:112
102
+ msgid ""
103
+ "Split by year if you experience errors or slow sitemaps. In very rare cases, "
104
+ "split by month is needed."
105
+ msgstr ""
106
+ "Pilah berdasarkan tahun jika sitemap mengalami kesalahan atau lambat. Kasus "
107
+ "yang jarang terjadi, pilah berdasarkan bulan dibutuhkan."
108
+
109
+ #: ../includes/admin.php:117 ../includes/admin.php:365
110
+ msgid "Priority"
111
+ msgstr "Prioritas"
112
+
113
+ #: ../includes/admin.php:119
114
+ msgid "Priority can be overridden on individual posts. *"
115
+ msgstr "Prioritas dapat ditimpa pada tiap post"
116
+
117
+ #: ../includes/admin.php:124
118
+ msgid ""
119
+ "Automatically adjusts Priority according to relative age and comment count."
120
+ msgstr ""
121
+ "Otomatis menyesuaikan Prioritas mengikuti usia post dan jumlah komentar"
122
+
123
+ #: ../includes/admin.php:124
124
+ msgid ""
125
+ "Sticky posts will not be subject to reduction by age. Individual posts with "
126
+ "fixed Priority will always keep that value."
127
+ msgstr ""
128
+ "Post terbaru tidak menjadi subyek mereduksi umur post, Tiap post dengan "
129
+ "Prioritas yang jelas akan selalu menjadi nilai."
130
+
131
+ #: ../includes/admin.php:129
132
+ msgid "Update Lastmod and Changefreq on comments."
133
+ msgstr "Perbarui Lastmod dan Changefreq di komentar."
134
+
135
+ #: ../includes/admin.php:129
136
+ msgid ""
137
+ "Set this if discussion on your site warrants reindexation upon each new "
138
+ "comment."
139
+ msgstr ""
140
+ "Atur ini jika diskusi di situs anda mengingatkan index ulang atas setiap "
141
+ "komentar baru."
142
+
143
+ #: ../includes/admin.php:133
144
+ msgid "Include:"
145
+ msgstr "Termasuk:"
146
+
147
+ #: ../includes/admin.php:138
148
+ msgid "Image tags for"
149
+ msgstr "Tag gambar untuk"
150
+
151
+ #: ../includes/admin.php:143
152
+ msgid "Featured Image"
153
+ msgstr "Fitur Gambar"
154
+
155
+ #: ../includes/admin.php:146
156
+ msgid "Attached images"
157
+ msgstr "Gambar terlampir"
158
+
159
+ #: ../includes/admin.php:154
160
+ msgid "Google News tags"
161
+ msgstr "Tag Google News"
162
+
163
+ #: ../includes/admin.php:154
164
+ msgid ""
165
+ "Only set when your site has been or will soon be accepted by Google News. **"
166
+ msgstr ""
167
+ "Atur ini hanya jika situs anda telah diterima atau akan diteriima oleh "
168
+ "Google News. **"
169
+
170
+ #: ../includes/admin.php:171
171
+ msgid ""
172
+ "* Priority settings do not affect ranking in search results in any way. They "
173
+ "are only meant to suggest search engines which URLs to index first. Once a "
174
+ "URL has been indexed, its Priority becomes meaningless until its Lastmod is "
175
+ "updated."
176
+ msgstr ""
177
+ "* Pengaturan Prioritas tidak berefek pada peringkat hasil pencarian. "
178
+ "Prioritas dimaksudkan hanya menyarankan mesin pencari dengan URL agar "
179
+ "diindex terlebih dahulu. ketika URL terindex, Prioritas tidak bermakna "
180
+ "hingga Lastmod diperbaharui"
181
+
182
+ #: ../includes/admin.php:171
183
+ msgid ""
184
+ "Maximum Priority (1.0) is reserved for the front page, individual posts and, "
185
+ "when allowed, posts with high comment count."
186
+ msgstr ""
187
+ "Prioritas Maksimum (1.0) tersedia dihalaman depan, tiap posting, dan jika "
188
+ "diijinkan, posting dengan komentar tinggi terhitung."
189
+
190
+ #: ../includes/admin.php:173
191
+ #, php-format
192
+ msgid ""
193
+ "** Google recommends using a seperate news sitemap. You can do this by "
194
+ "checking the option %1$s at %2$s above."
195
+ msgstr ""
196
+ "** Google merekomendasikan memakai sitemap terpisah. Anda dapat melakukannya "
197
+ "dengan mencentang pilihan %1$s pada %2$s diatas."
198
+
199
+ #: ../includes/admin.php:173 ../includes/admin.php:413
200
+ msgid "Enable XML sitemaps"
201
+ msgstr "Aktifkan XML sitemap"
202
+
203
+ #: ../includes/admin.php:183 ../includes/admin.php:422
204
+ msgid "Include taxonomies"
205
+ msgstr "Ikutkan Taxonomi"
206
+
207
+ #: ../includes/admin.php:213
208
+ msgid "No taxonomies available for the currently included post types."
209
+ msgstr "Tidak taxonomi tersedia tipe post yang diikutkan saat ini."
210
+
211
+ #: ../includes/admin.php:216
212
+ msgid ""
213
+ "It is generally not recommended to include taxonomy pages, unless their "
214
+ "content brings added value. For example, when you use category descriptions "
215
+ "with information that is not present elsewhere on your site or if taxonomy "
216
+ "pages list posts with an excerpt that is different from, but complementary "
217
+ "to the post content. In these cases you might consider including certain "
218
+ "taxonomies. Otherwise, you might even consider disallowing indexation to "
219
+ "prevent a possible duplicate content penalty. You can do this by adding "
220
+ "specific robots.txt rules below."
221
+ msgstr ""
222
+ "Secara umum tidak merekomendasikan mengikutkan taksonomi halaman, kecuali "
223
+ "kontennya memberi nilai. Sebagai contoh, ketika anda menggunakan deskripsi "
224
+ "kategori dengan informasi yang tidak ada dibagian lain disitus anda atau "
225
+ "jika taksonomi halaman diposting dengan kutipan dalam bentuk berbeda. akan "
226
+ "tetapi menjadi pelengkap pada isi posting. Dalam kasus ini anda diharapkan "
227
+ "mengikutkan beberapa taksonomi. Sebaliknya, anda bisa tidak menginkan "
228
+ "indeksasi untuk menjaga kemungkinan pinalti konten ganda. Anda dapat "
229
+ "melakukan dengan menambah aturan spesifik robots.txt dibawah."
230
+
231
+ #: ../includes/admin.php:226
232
+ msgid "Google"
233
+ msgstr "Google"
234
+
235
+ #: ../includes/admin.php:227
236
+ msgid "Bing"
237
+ msgstr "Bing"
238
+
239
+ #: ../includes/admin.php:231 ../includes/admin.php:425
240
+ msgid "Ping on Publish"
241
+ msgstr "Ping saat Publikasi"
242
+
243
+ #: ../includes/admin.php:250
244
+ #, php-format
245
+ msgid "Successfully pinged for %1$s on %2$s GMT."
246
+ msgstr "Sukses ping untuk %1$s pada %2$s GMT."
247
+
248
+ #: ../includes/admin.php:259
249
+ #, php-format
250
+ msgid "Rules to append to the %s generated by WordPress."
251
+ msgstr "Aturan yang ditambahkan %s dihasilkan oleh WordPress"
252
+
253
+ #: ../includes/admin.php:260
254
+ msgid ""
255
+ "Only add rules here when you know what you are doing, otherwise you might "
256
+ "break search engine access to your site."
257
+ msgstr ""
258
+ "Tambah aturan disini jika hanya anda memahami, sebaliknya anda bisa saja "
259
+ "menghentikan akses mesin pencari ke situs anda. "
260
+
261
+ #: ../includes/admin.php:260
262
+ msgid ""
263
+ "These rules will not have effect when you are using a static robots.txt file."
264
+ msgstr ""
265
+ "Pengaturan tidak memiliki efek jika anda menggunakan file statis robots.txt"
266
+
267
+ #: ../includes/admin.php:267
268
+ msgid ""
269
+ "Clear all XML Sitemap Feed options from the database and start fresh with "
270
+ "the default settings."
271
+ msgstr ""
272
+ "Hapus semua pilihan XML Sitemap Feed dari database dan mulai yang baru "
273
+ "melalui pengaturan awal"
274
+
275
+ #: ../includes/admin.php:269
276
+ #, php-format
277
+ msgid "Disabling and reenabling the %s plugin will have the same effect."
278
+ msgstr "Mengaktifkan dan menyalakan plugin %s akan berdampak sama."
279
+
280
+ #: ../includes/admin.php:344
281
+ msgid "XML Sitemap"
282
+ msgstr "XML Sitemap"
283
+
284
+ #: ../includes/admin.php:361
285
+ msgid "Exclude from XML Sitemap"
286
+ msgstr "Mengecualikan dari XML Sitemap"
287
+
288
+ #: ../includes/admin.php:369
289
+ #, php-format
290
+ msgid "Leave empty for automatic Priority as configured on %1$s > %2$s."
291
+ msgstr ""
292
+ "Biarkan kosong untuk Prioritas otomatis seperti dikonfigurasi di %1$s > %2$s."
293
+
294
+ #: ../includes/admin.php:369
295
+ msgid "Reading"
296
+ msgstr "Membaca"
297
+
298
+ #: ../includes/admin.php:431
299
+ msgid "Additional robots.txt rules"
300
+ msgstr "Aturan tambahan robots.txt"
301
+
302
+ #: ../includes/admin.php:434
303
+ msgid "Reset XML sitemaps"
304
+ msgstr "Atur ulang XML Sitemaps"
languages/xml-sitemap-feed-it_IT.mo ADDED
Binary file
languages/xml-sitemap-feed-it_IT.po ADDED
@@ -0,0 +1,539 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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: 2014-05-29 12:46+0200\n"
7
+ "Last-Translator: Raffaello Tesi <info@raffaellotesi.com>\n"
8
+ "Language-Team: Raffaello Tesi <info@raffaellotesi.com>\n"
9
+ "Language: it_IT\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.6.5\n"
16
+
17
+ #: ../includes/admin.php:19
18
+ msgid "XML Sitemaps"
19
+ msgstr "Sitemap XML"
20
+
21
+ #: ../includes/admin.php:20
22
+ msgid "XML Sitemap Index"
23
+ msgstr "Sitemap XML del sito"
24
+
25
+ #: ../includes/admin.php:25 ../includes/admin.php:820
26
+ msgid "Google News Sitemap"
27
+ msgstr "Sitemap per Google News"
28
+
29
+ #: ../includes/admin.php:69
30
+ msgid "Google"
31
+ msgstr "Google"
32
+
33
+ #: ../includes/admin.php:72
34
+ msgid "Bing & Yahoo"
35
+ msgstr "Bing & Yahoo"
36
+
37
+ #: ../includes/admin.php:75
38
+ msgid "Yandex"
39
+ msgstr "Yandex"
40
+
41
+ #: ../includes/admin.php:78
42
+ msgid "Baidu"
43
+ msgstr "Baidu"
44
+
45
+ #: ../includes/admin.php:81
46
+ msgid "Ping-O-Matic"
47
+ msgstr "Ping-O-Matic"
48
+
49
+ #: ../includes/admin.php:89 ../includes/admin.php:778
50
+ msgid "Ping on Publish"
51
+ msgstr "Ping on Publish"
52
+
53
+ #: ../includes/admin.php:113
54
+ #, php-format
55
+ msgid "Successfully pinged for %1$s on %2$s GMT."
56
+ msgstr "Ping a %1$s effettuato con successo alle %2$s GMT."
57
+
58
+ #: ../includes/admin.php:123
59
+ #, php-format
60
+ msgid "Rules to append to the %s generated by WordPress."
61
+ msgstr "Regole da aggiungere al %s generato da WordPress."
62
+
63
+ #: ../includes/admin.php:124
64
+ msgid ""
65
+ "Only add rules here when you know what you are doing, otherwise you might "
66
+ "break search engine access to your site."
67
+ msgstr ""
68
+ "Inserire nuove regole solo se si sa cosa si sta facendo, dal momento che "
69
+ "tali regole potrebbero impedire l'accesso dei motori di ricerca a questo "
70
+ "sito."
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 "Queste regole non hanno effetto se si usa un file robots.txt statico"
76
+
77
+ #: ../includes/admin.php:131
78
+ msgid ""
79
+ "Clear all XML Sitemap Feed options from the database and start fresh with "
80
+ "the default settings."
81
+ msgstr ""
82
+ "Rimuovi tutte le opzioni per i feed della sitemap XML dal database e "
83
+ "reimposta i valori di default."
84
+
85
+ #: ../includes/admin.php:133
86
+ #, php-format
87
+ msgid "Disabling and reenabling the %s plugin will have the same effect."
88
+ msgstr ""
89
+ "La stessa azione può essere ottenuta disabilitando e abilitando di nuovo il "
90
+ "plugin %s."
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
+ "Effettua una donazione per mantenere gratuito lo sviluppo e il supporto al "
102
+ "plugin %s!"
103
+
104
+ #: ../includes/admin.php:141
105
+ #, php-format
106
+ msgid "These settings control the XML Sitemaps generated by the %s plugin."
107
+ msgstr "Queste impostazioni controllano le sitemap XML generate dal plugin %s."
108
+
109
+ #: ../includes/admin.php:150
110
+ msgid "XML Sitemaps for post types"
111
+ msgstr "Sitemap XML per tipi di post"
112
+
113
+ #: ../includes/admin.php:189
114
+ msgid "Year"
115
+ msgstr "Anno"
116
+
117
+ #: ../includes/admin.php:190
118
+ msgid "Month"
119
+ msgstr "Mese"
120
+
121
+ #: ../includes/admin.php:194
122
+ msgid "Split by"
123
+ msgstr "Dividi per"
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."
129
+ msgstr ""
130
+ "Dividere per mese se le sitemap generate risultano lente o errate. In alcuni "
131
+ "rari casi è necessario dividere per mese."
132
+
133
+ #: ../includes/admin.php:209 ../includes/admin.php:725
134
+ msgid "Priority"
135
+ msgstr "Priorità"
136
+
137
+ #: ../includes/admin.php:211
138
+ msgid "Priority can be overridden on individual posts."
139
+ msgstr "La priorità può essere modificata in ogni singolo post."
140
+
141
+ #: ../includes/admin.php:216
142
+ msgid ""
143
+ "Automatically adjusts Priority according to relative age and comment count."
144
+ msgstr ""
145
+ "Selezionare la priorità automaticamente in base all'età del post e al numero "
146
+ "di commenti."
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
+ "Nel caso di post evidenziati, l'età non ha effetto nel calcolo della "
154
+ "priorità. La priorità resterà invariata anche per singoli post ai quali è "
155
+ "stata assegnata una priorità specifica."
156
+
157
+ #: ../includes/admin.php:221
158
+ msgid "Update Lastmod and Changefreq on comments."
159
+ msgstr ""
160
+ "Aggiorna data ultima modifica (Lastmod) e frequenza (Changefreq) nei "
161
+ "commenti."
162
+
163
+ #: ../includes/admin.php:221
164
+ msgid ""
165
+ "Set this if discussion on your site warrants reindexation upon each new "
166
+ "comment."
167
+ msgstr ""
168
+ "Selezionare questa impostazione nel caso in cui questo sito effettui la "
169
+ "reindicizzazione della discussione tutte le volte che un nuovo commento "
170
+ "viene inserito."
171
+
172
+ #: ../includes/admin.php:225 ../includes/admin.php:371
173
+ msgid "Add image tags for"
174
+ msgstr "Aggiungi tag immagine per"
175
+
176
+ #: ../includes/admin.php:233 ../includes/admin.php:378
177
+ msgid "Attached images"
178
+ msgstr "Immagini allegate"
179
+
180
+ #: ../includes/admin.php:243
181
+ msgid ""
182
+ "Priority settings do not affect ranking in search results in any way. They "
183
+ "are only meant to suggest search engines which URLs to index first. Once a "
184
+ "URL has been indexed, its Priority becomes meaningless until its Lastmod is "
185
+ "updated."
186
+ msgstr ""
187
+ "Le impostazioni di priorità non influiscono in alcun modo sul rank nei "
188
+ "risultati dei motori di ricerca. Tali impostazioni servono solo a suggerire "
189
+ "quali URL debbano essere indicizzate per prime. Una volta che l'URL è "
190
+ "indicizzata. la sua priorità non ha più alcun effetto fintantoché la data di "
191
+ "ultima modifica (Lastmod) non venga modificata."
192
+
193
+ #: ../includes/admin.php:243
194
+ msgid ""
195
+ "Maximum Priority (1.0) is reserved for the front page, individual posts and, "
196
+ "when allowed, posts with high comment count."
197
+ msgstr ""
198
+ "La massima priorità (1.0) è riservata alla pagina principale, a post "
199
+ "individuali e, se consentita, a post con un alto numero di commenti."
200
+
201
+ #: ../includes/admin.php:243
202
+ msgid ""
203
+ "Priority values are taken as relative values. Setting all to the same (high) "
204
+ "value is pointless."
205
+ msgstr ""
206
+ "I valori di priorità sono valori relativi. Non ha senso impostarli tutti "
207
+ "allo stesso valore (massimo)."
208
+
209
+ #: ../includes/admin.php:294
210
+ msgid "XML Sitemaps for taxonomies"
211
+ msgstr "Sitemap XML per tassonomie"
212
+
213
+ #: ../includes/admin.php:300
214
+ msgid ""
215
+ "It is generally not recommended to include taxonomy pages, unless their "
216
+ "content brings added value."
217
+ msgstr ""
218
+ "Normalmente non è consigliato includere le pagine di tassonomia, a meno che "
219
+ "il loro contenuto non costituisca un valore aggiunto."
220
+
221
+ #: ../includes/admin.php:300
222
+ msgid ""
223
+ "For example, when you use category descriptions with information that is not "
224
+ "present elsewhere on your site or if taxonomy pages list posts with an "
225
+ "excerpt that is different from, but complementary to the post content. In "
226
+ "these cases you might consider including certain taxonomies. Otherwise, if "
227
+ "you fear <a href=\"http://moz.com/learn/seo/duplicate-content\">negative "
228
+ "affects of duplicate content</a> or PageRank spread, you might even consider "
229
+ "disallowing indexation of taxonomies."
230
+ msgstr ""
231
+ "Si può decidere di includere le tassonomie nella sitemap se ad esempio le "
232
+ "categorie dei post contengano testi descrittivi non presenti in altre parti "
233
+ "del sito, oppure se le pagine di tassonomia includano liste di post con un "
234
+ "riassunto diverso nella forma, ma complementare al contenuto del post. Se "
235
+ "comunque si pensa che l'indicizzazione delle tassonomie crei <a href="
236
+ "\"http://moz.com/learn/seo/duplicate-content\">un effetto negativo a causa "
237
+ "di contenuti duplicati</a> o la propagazione del PageRank spread, è "
238
+ "consigliato mantenere l'indicizzazione disabilitata."
239
+
240
+ #: ../includes/admin.php:300
241
+ #, php-format
242
+ msgid ""
243
+ "You can do this by adding specific robots.txt rules in the %s field above."
244
+ msgstr ""
245
+ "Questo può essere effettuato aggiungendo specifiche regole nel robots.txt "
246
+ "nei campi %s qui sopra."
247
+
248
+ #: ../includes/admin.php:300 ../includes/admin.php:789
249
+ msgid "Additional robots.txt rules"
250
+ msgstr "Regole addizionali per robots.txt"
251
+
252
+ #: ../includes/admin.php:315
253
+ msgid "No taxonomies available for the currently included post types."
254
+ msgstr "Non risultano tassonomie per i tipi di post inclusi al momento."
255
+
256
+ #: ../includes/admin.php:331
257
+ msgid "Additional URLs to append to the XML Sitemap."
258
+ msgstr "URL addizionali da inserire nella sitemap XML."
259
+
260
+ #: ../includes/admin.php:332
261
+ msgid ""
262
+ "Add the full URL, including protocol (http/https) and domain, of any static "
263
+ "page or WordPress page that you want to append to the ones already included "
264
+ "by the settings above. Optionally add a priority value between 0 and 1, "
265
+ "separated with a space, after the URL. Start each URL on a new line."
266
+ msgstr ""
267
+ "Inserire l'URL per intero, includendo anche il tipo di protocollo (http/"
268
+ "https) e il dominio di ogni pagina statica di WordPress che si desideri "
269
+ "aggiungere a quelle già incluse in base alle impostazioni qui sopra. È "
270
+ "possibile aggiungere anche un valore di priorità da 0 a 1 dopo l'URL, "
271
+ "separato da uno spazio. Inserire una URL per riga."
272
+
273
+ #: ../includes/admin.php:341
274
+ msgid "Additional domains to allow in the XML Sitemap."
275
+ msgstr "Domini addizionali da includere nella sitemap XML."
276
+
277
+ #: ../includes/admin.php:342
278
+ #, php-format
279
+ msgid ""
280
+ "By default, only the domain %s as used in your WordPress site address is "
281
+ "allowed. This means that all URLs that use another domain (custom URLs or "
282
+ "using a plugin like Page Links To) are filtered from the XML Sitemap. "
283
+ "However, if you are the verified owner of other domains in your Google/Bing "
284
+ "Webmaster Tools account, you can include these in the same sitemap. Add "
285
+ "these domains, without protocol (http/https) each on a new line. Note that "
286
+ "if you enter a domain with www, all URLs without it or with other subdomains "
287
+ "will be filtered."
288
+ msgstr ""
289
+ "Solo il dominio di questo sito WordPress (%s) è consentito di default. Ciò "
290
+ "significa che tutte le URL relative ad altri domini (URL personalizzate o "
291
+ "create tramite plugin come Page Links To) sono escluse dalla sitemap XML. "
292
+ "Nel caso in cui tali URL siano relative a domini in tuo possesso e "
293
+ "verificati tramite un account Google o Bing Webmaster Tools, è possibile "
294
+ "includerle nella stessa sitemap. Aggiungere un dominio per riga senza il "
295
+ "protocollo (http/https). Si noti che nel caso in cui il dominio venga "
296
+ "inserito con il prefisso www, tutte le URL prive di www oppure relative a "
297
+ "sottodomini verranno escluse."
298
+
299
+ #: ../includes/admin.php:352
300
+ #, php-format
301
+ msgid ""
302
+ "These settings control the Google News Sitemap generated by the %s plugin."
303
+ msgstr ""
304
+ "Queste impostazioni controllano la sitemap per Google News generata dal "
305
+ "plugin %s."
306
+
307
+ #: ../includes/admin.php:352
308
+ msgid ""
309
+ "When you are done configuring and preparing your news content and you are "
310
+ "convinced your site adheres to the <a href=\"https://support.google.com/news/"
311
+ "publisher/answer/40787?ref_topic=2484652\" target=\"_blank\">Google News "
312
+ "guidelines</a>, go ahead and <a href=\"https://support.google.com/news/"
313
+ "publisher/troubleshooter/3179220?#ts=3179198\" target=\"_blank\">submit your "
314
+ "site for inclusion</a>!"
315
+ msgstr ""
316
+ "Dopo aver effettuato le impostazioni e preparato il contenuto delle news, e "
317
+ "una volta assicuratosi che il sito sia conforme alle <a href=\"https://"
318
+ "support.google.com/news/publisher/answer/40787?ref_topic=2484652&hl=it\" "
319
+ "target=\"_blank\">linee guida di Google News</a>, proseguire con la <a href="
320
+ "\"https://support.google.com/news/publisher/troubleshooter/3179220?"
321
+ "hl=it#ts=3179198\" target=\"_blank\">richiesta di inclusione del sito</a>!"
322
+
323
+ #: ../includes/admin.php:362
324
+ #, php-format
325
+ msgid "By default, the general %s setting will be used."
326
+ msgstr "Le impostazioni generali presenti in %s sono utilizzate di default."
327
+
328
+ #: ../includes/admin.php:392 ../includes/admin.php:826
329
+ msgid "Access (&lt;access&gt; tag)"
330
+ msgstr "Accesso (tag &lt;access&gt;)"
331
+
332
+ #: ../includes/admin.php:393
333
+ #, php-format
334
+ msgid ""
335
+ "The &lt;access&gt; tag specifies whether an article is available to all "
336
+ "readers (%1$s), or only to those with a free (%2$s) or paid membership "
337
+ "(%3$s) to your site."
338
+ msgstr ""
339
+ "Il tag &lt;access&gt; specifica se un articolo è disponibile per tutti i "
340
+ "lettori (%1$s), oppure soltanto per chi si è iscritto gratuitamente (%2$s) o "
341
+ "a pagamento (%3$s) al sito."
342
+
343
+ #: ../includes/admin.php:393 ../includes/admin.php:400
344
+ #: ../includes/admin.php:413
345
+ msgid "Registration"
346
+ msgstr "Registration"
347
+
348
+ #: ../includes/admin.php:393 ../includes/admin.php:401
349
+ #: ../includes/admin.php:414
350
+ msgid "Subscription"
351
+ msgstr "Subscription"
352
+
353
+ #: ../includes/admin.php:398
354
+ msgid "Tag normal posts as"
355
+ msgstr "Taggare i post normali come"
356
+
357
+ #: ../includes/admin.php:412
358
+ #, php-format
359
+ msgid "Tag %s posts as"
360
+ msgstr "Taggare i post %s come"
361
+
362
+ #: ../includes/admin.php:419
363
+ msgid ""
364
+ "Note: The &lt;access&gt; tag is required when applicable. Do not leave it to "
365
+ "Public when your content is not."
366
+ msgstr ""
367
+ "Nota: il tag &lt;access&gt; è richiesto quando applicabile. Non lasciare il "
368
+ "tag impostato come \"pubblico\" se il contenuto non lo è."
369
+
370
+ #: ../includes/admin.php:439 ../includes/admin.php:827
371
+ msgid "Genres (&lt;genres&gt; tag)"
372
+ msgstr "Genere (tag &lt;genres&gt;)"
373
+
374
+ #: ../includes/admin.php:440
375
+ msgid ""
376
+ "The &lt;genres&gt; tag specifies one or more properties for an article, "
377
+ "namely, whether it is a press release, a blog post, an opinion, an op-ed "
378
+ "piece, user-generated content, or satire."
379
+ msgstr ""
380
+ "Il tag &lt;genres&gt; specifica una o più proprietà di un articolo, cioè se "
381
+ "si tratta di un comunicato stampa, un post di un blog, un'opinione, un "
382
+ "editoriale, contenuti generati dagli utenti o satira."
383
+
384
+ #: ../includes/admin.php:440
385
+ msgid "You can assign Google News genres when writing a new post."
386
+ msgstr ""
387
+ "È possibile suggerire un genere a Google News tutte le volte che viene "
388
+ "scritto un nuovo post."
389
+
390
+ #: ../includes/admin.php:451
391
+ msgid "Default genre:"
392
+ msgstr "Genere di default:"
393
+
394
+ #: ../includes/admin.php:460
395
+ msgid ""
396
+ "Note: The &lt;genres&gt; tag is required when applicable and restricted to "
397
+ "the list provided above."
398
+ msgstr ""
399
+ "Nota: il tag &lt;genres&gt; è richiesto quando applicabile e selezionabile "
400
+ "in base alla lista elencata qui sopra."
401
+
402
+ #: ../includes/admin.php:472 ../includes/admin.php:828
403
+ msgid "Topics (&lt;keywords&gt; tag)"
404
+ msgstr "Argomento (tag &lt;keywords&gt;)"
405
+
406
+ #: ../includes/admin.php:473
407
+ msgid ""
408
+ "The &lt;keywords&gt; tag is used to help classify the articles you submit to "
409
+ "Google News by <strong>topic</strong>."
410
+ msgstr ""
411
+ "Il tag &lt;keywords&gt; serve per facilitare la classificazione per "
412
+ "<strong>argomento</strong> degli articoli inviati a Google News."
413
+
414
+ #: ../includes/admin.php:475
415
+ #, php-format
416
+ msgid "Use %s for topics."
417
+ msgstr "Utilizzare %s per gli argomenti."
418
+
419
+ #: ../includes/admin.php:480
420
+ msgid "Default topic(s):"
421
+ msgstr "Argomento/i di default:"
422
+
423
+ #: ../includes/admin.php:482 ../includes/admin.php:503
424
+ msgid "Separate with a comma."
425
+ msgstr "Separare con una virgola."
426
+
427
+ #: ../includes/admin.php:484
428
+ msgid ""
429
+ "Keywords may be drawn from, but are not limited to, the list of <a href="
430
+ "\"http://www.google.com/support/news_pub/bin/answer.py?answer=116037\" "
431
+ "target=\"_blank\">existing Google News keywords</a>."
432
+ msgstr ""
433
+ "Una lista di keyword è disponibile su <a href=\"https://support.google.com/"
434
+ "news/publisher/answer/116037?hl=it\" target=\"_blank\">Google News</a> ma la "
435
+ "scelta non è limitata ad esse."
436
+
437
+ #: ../includes/admin.php:494 ../includes/admin.php:829
438
+ msgid "Locations (&lt;geo_locations&gt; tag)"
439
+ msgstr "Ubicazione (tag &lt;geo_location&gt;)"
440
+
441
+ #: ../includes/admin.php:495
442
+ msgid ""
443
+ "The &lt;geo_locations&gt; tag is used identify the geographic location of "
444
+ "your articles."
445
+ msgstr ""
446
+ "Il tag &lt;geo_location&gt; è utilizzato per identificare la posizione "
447
+ "geografica dell'articolo."
448
+
449
+ #: ../includes/admin.php:495
450
+ msgid "You can assign locations when writing a new post."
451
+ msgstr ""
452
+ "È possibile assegnare l'ubicazione tutte le volte che si scrive un nuovo "
453
+ "post."
454
+
455
+ #: ../includes/admin.php:501
456
+ msgid "Default location:"
457
+ msgstr "Ubicazione di default:"
458
+
459
+ #: ../includes/admin.php:505
460
+ msgid ""
461
+ "You should list location entities from smallest entity to largest. For "
462
+ "example: <code>Detroit, Michigan, USA</code> or <code>Rhône-Alpes, France</"
463
+ "code>."
464
+ msgstr ""
465
+ "Le entità locali devono essere scritte dalla più piccola alla più grande. Ad "
466
+ "esempio: <code>Detroit, Michigan, USA</code> or <code>Rhône-Alpes, France</"
467
+ "code>."
468
+
469
+ #: ../includes/admin.php:689 ../includes/admin.php:798
470
+ msgid "XML Sitemap"
471
+ msgstr "Sitemap XML"
472
+
473
+ #: ../includes/admin.php:721
474
+ msgid "Exclude from XML Sitemap"
475
+ msgstr "Escludi dalla sitemap XML"
476
+
477
+ #: ../includes/admin.php:727
478
+ #, php-format
479
+ msgid "Leave empty for automatic Priority as configured on %1$s > %2$s."
480
+ msgstr ""
481
+ "Lasciare vuoto per utilizzare la priorità automatica configurata in %1$s > "
482
+ "%2$s."
483
+
484
+ #: ../includes/admin.php:773
485
+ msgid "Enable XML sitemaps"
486
+ msgstr "Abilita sitemap XML"
487
+
488
+ #: ../includes/admin.php:794
489
+ msgid "Reset XML sitemaps"
490
+ msgstr "Azzera sitemap XML"
491
+
492
+ #: ../includes/admin.php:801
493
+ msgid "Include post types"
494
+ msgstr "Tipi di post da includere"
495
+
496
+ #: ../includes/admin.php:804
497
+ msgid "Include taxonomies"
498
+ msgstr "Includi tassonomie"
499
+
500
+ #: ../includes/admin.php:807
501
+ msgid "Include custom URLs"
502
+ msgstr "Includi URL personalizzate"
503
+
504
+ #: ../includes/admin.php:811
505
+ msgid "Additional allowed domains"
506
+ msgstr "Domini addizionali consentiti"
507
+
508
+ #: ../includes/admin.php:824
509
+ msgid "Publication name"
510
+ msgstr "Nome pubblicazione"
511
+
512
+ #: ../includes/core.php:1059
513
+ msgid "Google News Genres"
514
+ msgstr "Google News: Generi"
515
+
516
+ #: ../includes/core.php:1060
517
+ msgid "Google News Genre"
518
+ msgstr "Google News: Genere"
519
+
520
+ #: ../includes/core.php:1078
521
+ msgid "Google News Country"
522
+ msgstr "Google News: Stato"
523
+
524
+ #: ../includes/core.php:1080 ../includes/core.php:1099
525
+ #: ../includes/core.php:1118
526
+ msgid ""
527
+ "Only one allowed. Must be consistent with other Google News location "
528
+ "entities (if set)."
529
+ msgstr ""
530
+ "Solo uno consentito. Deve essere coerente con l'entità di localizzazione (se "
531
+ "impostata)."
532
+
533
+ #: ../includes/core.php:1097
534
+ msgid "Google News State/Province"
535
+ msgstr "Google News: Provincia"
536
+
537
+ #: ../includes/core.php:1116
538
+ msgid "Google News City"
539
+ msgstr "Google News: Città"
languages/xml-sitemap-feed-nl_NL.mo CHANGED
Binary file
languages/xml-sitemap-feed-nl_NL.po CHANGED
@@ -1,80 +1,608 @@
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-02-22 16:43+0100\n"
6
- "PO-Revision-Date: 2013-02-22 17:10+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: Dutch\n"
16
- "X-Poedit-Country: NETHERLANDS\n"
17
 
18
- #: ../includes/admin.php:15
19
- msgid "Donate to keep the free XML Sitemap Feeds plugin development & support going!"
20
- msgstr "Doneer om de ontwikkeling en ondersteuning van de vrije XML Sitemap Feeds plugin gaande te houden!"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
21
 
22
- #: ../includes/admin.php:15
23
- msgid "These settings control the XML Sitemap generation."
24
- msgstr "Deze instellingen besturen de XML Sitemap generatie."
25
 
26
- #: ../includes/admin.php:15
27
  #, php-format
28
- msgid "XML Sitemaps are disabled if you have set the option %s (above) to %s."
29
- msgstr "XML Sitemaps zijn uitgeschakeld als de optie %s (boven) op %s staat."
30
 
31
- #: ../includes/admin.php:15
32
- msgid "Site Visibility"
 
 
 
 
 
 
 
33
  msgstr ""
 
 
34
 
35
- #: ../includes/admin.php:15
36
- msgid "Discourage search engines from indexing this site"
 
37
  msgstr ""
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
38
 
39
- #: ../includes/admin.php:39
40
- msgid "Regular XML Sitemaps"
41
- msgstr "Standaard XML Sitemaps"
 
42
 
43
- #: ../includes/admin.php:41
44
- #: ../includes/admin.php:47
45
- msgid "View"
46
  msgstr ""
 
47
 
48
- #: ../includes/admin.php:45
49
- msgid "Google News Sitemap"
50
- msgstr "Google News Sitemap"
 
 
51
 
52
- #: ../includes/admin.php:123
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
53
  #, php-format
54
- msgid "Rules to append to %s generated by WordPress."
55
- msgstr "Regels om aan de WordPress gegenereerde %s toe te voegen."
 
 
 
56
 
57
- #: ../includes/admin.php:123
58
- msgid "Warning: Only set rules here when you know what you are doing, otherwise you might break access to your site.<br />Note: These rules will not have effect when you are using a static robots.txt file."
59
- msgstr "Waarschuwing: Definieer hier alleen regels als je weet wat je doet, anders zou je de toegang tot je site kunnen verstoren.<br />Let op: Deze regels hebben geen effect"
60
 
61
- #: ../includes/admin.php:185
62
- msgid "XML Sitemaps"
63
- msgstr "XML Sitemaps"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
64
 
65
- #: ../includes/admin.php:188
66
  msgid "Enable XML sitemaps"
67
  msgstr "XML sitemaps activeren"
68
 
69
- #: ../includes/admin.php:191
 
 
 
 
70
  msgid "Include post types"
71
  msgstr "Post types bijsluiten"
72
 
73
- #: ../includes/admin.php:194
74
  msgid "Include taxonomies"
75
  msgstr "Taxonomieën bijsluiten"
76
 
77
- #: ../includes/admin.php:201
78
- msgid "Additional robots.txt rules"
79
- msgstr "Aanvullende robots.txt regels"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
80
 
 
 
 
 
 
 
 
 
 
 
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"
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.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"
21
+
22
+ #: ../includes/admin.php:20
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
+
30
+ #: ../includes/admin.php:69
31
+ msgid "Google"
32
+ msgstr "Google"
33
+
34
+ #: ../includes/admin.php:72
35
+ msgid "Bing & Yahoo"
36
+ msgstr "Bing & Yahoo"
37
+
38
+ #: ../includes/admin.php:75
39
+ msgid "Yandex"
40
+ msgstr "Yandex"
41
+
42
+ #: ../includes/admin.php:78
43
+ msgid "Baidu"
44
+ msgstr "Baidu"
45
+
46
+ #: ../includes/admin.php:81
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."
129
+ 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."
164
+ 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 "
180
+ "URL has been indexed, its Priority becomes meaningless until its Lastmod is "
181
+ "updated."
182
+ msgstr ""
183
+ "Priority beïnvloed de positie in zoekresultaten op geen enkele wijze. Het is "
184
+ "dient om zoekmachines aan te geven welke URLs het eerst te indexeren. Zodra "
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."
192
+ 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."
200
+ 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."
212
+ 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 "
220
+ "excerpt that is different from, but complementary to the post content. In "
221
+ "these cases you might consider including certain taxonomies. Otherwise, if "
222
+ "you fear <a href=\"http://moz.com/learn/seo/duplicate-content\">negative "
223
+ "affects of duplicate content</a> or PageRank spread, you might even consider "
224
+ "disallowing indexation of taxonomies."
225
+ msgstr ""
226
+ "Bijvoorbeeld als je categoriebeschrijvingen gebruikt die unieke informatie "
227
+ "bevatten of als samenvattingen op taxonomiepagina's aanvullend zijn op de "
228
+ "inhoud van de artikelen. In deze gevallen zou je kunnen overwegen bepaalde "
229
+ "taxonomieën bij te sluiten. Maar in andere gevallen zou je, als je de <a "
230
+ "href=\"http://moz.com/learn/seo/duplicate-content\">negatieve effecten van "
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."
238
+ 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 "
275
+ "allowed. This means that all URLs that use another domain (custom URLs or "
276
+ "using a plugin like Page Links To) are filtered from the XML Sitemap. "
277
+ "However, if you are the verified owner of other domains in your Google/Bing "
278
+ "Webmaster Tools account, you can include these in the same sitemap. Add "
279
+ "these domains, without protocol (http/https) each on a new line. Note that "
280
+ "if you enter a domain with www, all URLs without it or with other subdomains "
281
+ "will be filtered."
282
+ msgstr ""
283
+ "Standaard wordt alleen het domein %s zoals gebruikt in je WordPress "
284
+ "siteadres, toegestaan. Dit betekent dat alle URL's met een ander domein "
285
+ "(Aangepaste URL's of bij gebruik van een plugin als Page Links To) uit de "
286
+ "XML Sitemap worden gefilterd. Maar als je de geverifieerde eigenaar van "
287
+ "andere domeinen in je Google/Bing Webmaster Tools account bent, dan kun je "
288
+ "deze in de sitemap bijsluiten. Voer deze domeinen in, zonder protocol (http/"
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/"
303
+ "publisher/answer/40787?ref_topic=2484652\" target=\"_blank\">Google News "
304
+ "guidelines</a>, go ahead and <a href=\"https://support.google.com/news/"
305
+ "publisher/troubleshooter/3179220?#ts=3179198\" target=\"_blank\">submit your "
306
+ "site for inclusion</a>!"
307
+ msgstr ""
308
+ "Als je klaar bent met configureren en voorbereiden van nieuwsberichten en je "
309
+ "overtuigd bent dat je site overeenstemt met de <a href=\"https://support."
310
+ "google.com/news/publisher/answer/40787?ref_topic=2484652\" target=\"_blank"
311
+ "\">Google News guidelines</a>, dan kun je <a href=\"https://support.google."
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 "
328
+ "readers (%1$s), or only to those with a free (%2$s) or paid membership "
329
+ "(%3$s) to your site."
330
+ msgstr ""
331
+ "De &lt;access&gt; tag geeft aan of een artikel toegankelijk is voor iedereen "
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."
358
+ 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 "
370
+ "piece, user-generated content, or satire."
371
+ msgstr ""
372
+ "De &lt;genres&gt; tag geeft één of meer kenmerken aan een artikel, met name "
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."
389
+ 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>."
401
+ 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\" "
422
+ "target=\"_blank\">existing Google News keywords</a>."
423
+ msgstr ""
424
+ "Keywords mogen gehaald worden uit maar zijn niet gelimiteerd tot de lijst "
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."
436
+ 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</"
452
+ "code>."
453
+ msgstr ""
454
+ "Locatie-eenheden dienen van kleinste naar grootste worden ingevoerd. "
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 "
531
+ #~ "%1$s at %2$s above."
532
+ #~ msgstr ""
533
+ #~ "XML Sitemaps worden automatisch uitgeschakeld als je de optie %1$s bij "
534
+ #~ "%2$s aanvinkt."
535
+
536
+ #~ msgid ""
537
+ #~ "XML Sitemaps are disabled because you have checked the option %1$s at "
538
+ #~ "%2$s above."
539
+ #~ msgstr ""
540
+ #~ "XML Sitemaps zijn uitgeschakeld omdat de optie %1$s bij %2$s aangevinkt "
541
+ #~ "is."
542
+
543
+ #~ msgid "Regular XML Sitemaps"
544
+ #~ msgstr "Standaard XML Sitemaps"
545
+
546
+ #~ msgid "View"
547
+ #~ msgstr "Weergave"
548
+
549
+ #~ msgid "Include:"
550
+ #~ msgstr "Bijsluiten:"
551
+
552
+ #~ msgid ""
553
+ #~ "Only set when your site has been or will soon be accepted by Google News. "
554
+ #~ "**"
555
+ #~ msgstr ""
556
+ #~ "Alleen als je site door Google News geaccepteerd is of zal worden. **"
557
+
558
+ #~ msgid ""
559
+ #~ "** Google recommends using a seperate news sitemap. You can do this by "
560
+ #~ "checking the option %1$s at %2$s above."
561
+ #~ msgstr ""
562
+ #~ "** Google raadt het gebruik van een aparte news sitemap aan. Doe dit door "
563
+ #~ "de optie %1$s bij %2$s hier boven aan te vinken."
564
+
565
+ #~ msgid "Bing"
566
+ #~ msgstr "Bing"
567
+
568
+ #~ msgid "year of publication"
569
+ #~ msgstr "jaar van publicatie"
570
+
571
+ #~ msgid "month of publication"
572
+ #~ msgstr "maand van publicatie"
573
+
574
+ #~ msgid "Note:"
575
+ #~ msgstr "Opmerking:"
576
+
577
+ #~ msgid "year"
578
+ #~ msgstr "jaar"
579
+
580
+ #~ msgid "Divide by"
581
+ #~ msgstr "Verdeel naar"
582
+
583
+ #~ msgid "Maximum priority is reserved for sticky posts and the front page."
584
+ #~ msgstr ""
585
+ #~ "Maximale prioriteit is gereserveerd voor de homepagina en sticky posts."
586
+
587
+ #~ msgid "Use a %s priority"
588
+ #~ msgstr "Gebruik een %s prioriteit"
589
+
590
+ #~ msgid "dynamic"
591
+ #~ msgstr "dynamisch"
592
+
593
+ #~ msgid "static"
594
+ #~ msgstr "statisch"
595
+
596
+ #~ msgid "with initial value %s"
597
+ #~ msgstr "met beginwaarde %s"
598
 
599
+ #~ msgid ""
600
+ #~ "Dynamic priority is calculated by the initial value ajusted according to "
601
+ #~ "the relative last modification age and comment count. Sticky posts always "
602
+ #~ "get the maximum initial priority value of 1. A different priority can be "
603
+ #~ "set on a post by post basis."
604
+ #~ msgstr ""
605
+ #~ "Dynamische prioriteit wordt berekend aan de hand van de beginwaarde, "
606
+ #~ "aangepast aan de relatieve leeftijd van laatste bewerking en het aantal "
607
+ #~ "commentaren. Sticky posts krijgen altijd de maximum beginwaarde van 1. "
608
+ #~ "Een aangepaste prioriteit kan per artikel ingesteld worden."
languages/xml-sitemap-feed-xx_XX.po CHANGED
@@ -2,77 +2,445 @@ 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-02-22 16:43+0100\n"
6
- "PO-Revision-Date: 2013-02-22 17:38+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
 
16
- #: ../includes/admin.php:15
17
- msgid "Donate to keep the free XML Sitemap Feeds plugin development & support going!"
18
  msgstr ""
19
 
20
- #: ../includes/admin.php:15
21
- msgid "These settings control the XML Sitemap generation."
22
  msgstr ""
23
 
24
- #: ../includes/admin.php:15
25
- #, php-format
26
- msgid "XML Sitemaps are disabled if you have set the option %s (above) to %s."
27
  msgstr ""
28
 
29
- #: ../includes/admin.php:15
30
- msgid "Site Visibility"
31
  msgstr ""
32
 
33
- #: ../includes/admin.php:15
34
- msgid "Discourage search engines from indexing this site"
35
  msgstr ""
36
 
37
- #: ../includes/admin.php:39
38
- msgid "Regular XML Sitemaps"
39
  msgstr ""
40
 
41
- #: ../includes/admin.php:41
42
- #: ../includes/admin.php:47
43
- msgid "View"
44
  msgstr ""
45
 
46
- #: ../includes/admin.php:45
47
- msgid "Google News Sitemap"
48
  msgstr ""
49
 
50
- #: ../includes/admin.php:123
 
 
 
 
51
  #, php-format
52
- msgid "Rules to append to %s generated by WordPress."
53
  msgstr ""
54
 
55
  #: ../includes/admin.php:123
56
- msgid "Warning: Only set rules here when you know what you are doing, otherwise you might break access to your site.<br />Note: These rules will not have effect when you are using a static robots.txt file."
 
57
  msgstr ""
58
 
59
- #: ../includes/admin.php:185
60
- msgid "XML Sitemaps"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
61
  msgstr ""
62
 
63
- #: ../includes/admin.php:188
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
64
  msgid "Enable XML sitemaps"
65
  msgstr ""
66
 
67
- #: ../includes/admin.php:191
 
 
 
 
68
  msgid "Include post types"
69
  msgstr ""
70
 
71
- #: ../includes/admin.php:194
72
  msgid "Include taxonomies"
73
  msgstr ""
74
 
75
- #: ../includes/admin.php:201
76
- msgid "Additional robots.txt rules"
 
 
 
 
77
  msgstr ""
78
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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"
10
  "Content-Type: text/plain; charset=UTF-8\n"
11
  "Content-Transfer-Encoding: 8bit\n"
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"
18
  msgstr ""
19
 
20
+ #: ../includes/admin.php:20
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
 
28
+ #: ../includes/admin.php:69
29
+ msgid "Google"
30
  msgstr ""
31
 
32
+ #: ../includes/admin.php:72
33
+ msgid "Bing & Yahoo"
34
  msgstr ""
35
 
36
+ #: ../includes/admin.php:75
37
+ msgid "Yandex"
38
  msgstr ""
39
 
40
+ #: ../includes/admin.php:78
41
+ msgid "Baidu"
 
42
  msgstr ""
43
 
44
+ #: ../includes/admin.php:81
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 "
162
+ "URL has been indexed, its Priority becomes meaningless until its Lastmod is "
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 "
192
+ "excerpt that is different from, but complementary to the post content. In "
193
+ "these cases you might consider including certain taxonomies. Otherwise, if "
194
+ "you fear <a href=\"http://moz.com/learn/seo/duplicate-content\">negative "
195
+ "affects of duplicate content</a> or PageRank spread, you might even consider "
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 "
233
+ "allowed. This means that all URLs that use another domain (custom URLs or "
234
+ "using a plugin like Page Links To) are filtered from the XML Sitemap. "
235
+ "However, if you are the verified owner of other domains in your Google/Bing "
236
+ "Webmaster Tools account, you can include these in the same sitemap. Add "
237
+ "these domains, without protocol (http/https) each on a new line. Note that "
238
+ "if you enter a domain with www, all URLs without it or with other subdomains "
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/"
252
+ "publisher/answer/40787?ref_topic=2484652\" target=\"_blank\">Google News "
253
+ "guidelines</a>, go ahead and <a href=\"https://support.google.com/news/"
254
+ "publisher/troubleshooter/3179220?#ts=3179198\" target=\"_blank\">submit your "
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 "
271
+ "readers (%1$s), or only to those with a free (%2$s) or paid membership "
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 ""
languages/xml-sitemap-feed.pot CHANGED
@@ -2,79 +2,450 @@ 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-02-22 16:43+0100\n"
6
- "PO-Revision-Date: 2013-02-22 16:44+0100\n"
7
  "Last-Translator: RavanH <ravanhagen@gmail.com>\n"
8
  "Language-Team: <ravanhagen@gmail.com>\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-Basepath: .\n"
15
  "X-Poedit-SourceCharset: UTF-8\n"
 
 
16
  "X-Poedit-SearchPath-0: ..\n"
17
 
18
- #: ../includes/admin.php:15
19
- msgid "Donate to keep the free XML Sitemap Feeds plugin development & support going!"
20
  msgstr ""
21
 
22
- #: ../includes/admin.php:15
23
- msgid "These settings control the XML Sitemap generation."
24
  msgstr ""
25
 
26
- #: ../includes/admin.php:15
27
- #, php-format
28
- msgid "XML Sitemaps are disabled if you have set the option %s (above) to %s."
29
  msgstr ""
30
 
31
- #: ../includes/admin.php:15
32
- msgid "Site Visibility"
33
  msgstr ""
34
 
35
- #: ../includes/admin.php:15
36
- msgid "Discourage search engines from indexing this site"
37
  msgstr ""
38
 
39
- #: ../includes/admin.php:39
40
- msgid "Regular XML Sitemaps"
41
  msgstr ""
42
 
43
- #: ../includes/admin.php:41
44
- #: ../includes/admin.php:47
45
- msgid "View"
46
  msgstr ""
47
 
48
- #: ../includes/admin.php:45
49
- msgid "Google News Sitemap"
50
  msgstr ""
51
 
52
- #: ../includes/admin.php:123
 
 
 
 
53
  #, php-format
54
- msgid "Rules to append to %s generated by WordPress."
55
  msgstr ""
56
 
57
  #: ../includes/admin.php:123
58
- msgid "Warning: Only set rules here when you know what you are doing, otherwise you might break access to your site.<br />Note: These rules will not have effect when you are using a static robots.txt file."
 
59
  msgstr ""
60
 
61
- #: ../includes/admin.php:185
62
- msgid "XML Sitemaps"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
63
  msgstr ""
64
 
65
- #: ../includes/admin.php:188
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
66
  msgid "Enable XML sitemaps"
67
  msgstr ""
68
 
69
- #: ../includes/admin.php:191
 
 
 
 
70
  msgid "Include post types"
71
  msgstr ""
72
 
73
- #: ../includes/admin.php:194
74
  msgid "Include taxonomies"
75
  msgstr ""
76
 
77
- #: ../includes/admin.php:201
78
- msgid "Additional robots.txt rules"
 
 
 
 
79
  msgstr ""
80
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ""
24
 
25
+ #: ../includes/admin.php:20
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
 
33
+ #: ../includes/admin.php:69
34
+ msgid "Google"
35
  msgstr ""
36
 
37
+ #: ../includes/admin.php:72
38
+ msgid "Bing & Yahoo"
39
  msgstr ""
40
 
41
+ #: ../includes/admin.php:75
42
+ msgid "Yandex"
43
  msgstr ""
44
 
45
+ #: ../includes/admin.php:78
46
+ msgid "Baidu"
 
47
  msgstr ""
48
 
49
+ #: ../includes/admin.php:81
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 "
167
+ "URL has been indexed, its Priority becomes meaningless until its Lastmod is "
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 "
197
+ "excerpt that is different from, but complementary to the post content. In "
198
+ "these cases you might consider including certain taxonomies. Otherwise, if "
199
+ "you fear <a href=\"http://moz.com/learn/seo/duplicate-content\">negative "
200
+ "affects of duplicate content</a> or PageRank spread, you might even consider "
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 "
238
+ "allowed. This means that all URLs that use another domain (custom URLs or "
239
+ "using a plugin like Page Links To) are filtered from the XML Sitemap. "
240
+ "However, if you are the verified owner of other domains in your Google/Bing "
241
+ "Webmaster Tools account, you can include these in the same sitemap. Add "
242
+ "these domains, without protocol (http/https) each on a new line. Note that "
243
+ "if you enter a domain with www, all URLs without it or with other subdomains "
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/"
257
+ "publisher/answer/40787?ref_topic=2484652\" target=\"_blank\">Google News "
258
+ "guidelines</a>, go ahead and <a href=\"https://support.google.com/news/"
259
+ "publisher/troubleshooter/3179220?#ts=3179198\" target=\"_blank\">submit your "
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 "
276
+ "readers (%1$s), or only to those with a free (%2$s) or paid membership "
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 ""
readme.txt CHANGED
@@ -1,57 +1,64 @@
1
- === XML Sitemap & Google News Feeds ===
2
  Contributors: RavanH
3
  Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=ravanhagen%40gmail%2ecom&item_name=XML%20Sitemap%20Feed&item_number=3%2e8&no_shipping=0&tax=0&bn=PP%2dDonationsBF&charset=UTF%2d8&lc=us
4
- Tags: xml sitemap, news sitemap, sitemap.xml, multisite, Google, Google News, Yahoo, Bing, Live, MSN, seo, wpmu, feed
5
- Requires at least: 3.1
6
- Tested up to: 3.5.1
7
- Stable tag: 4.0.1
8
 
9
- Feeds that comply with the XML Sitemap and Google News protocol for fast indexing by Google, Yahoo, Bing, Ask and others. Multi-Site and Multi-Lingual compatible!
10
 
11
  == Description ==
12
 
13
- This plugin dynamically creates feeds that comply with the **XML Sitemap** and the **Google News Sitemap** protocol. It is Multi-Site and **Polylang** compatible and there are no files created. Some new options under the Privacy settings on **Settings > Reading** allow control over the sitemaps, which post and taxonomy types are included and any additional robots.txt rules.
14
 
15
- You or site owners on your Multi-site network will not be bothered with complicated settings like other XML Sitemap plugins. XML sitemap values like ChangeFreq and URL Priority are auto-calculated based on post age and comment activity.
16
 
17
- The feeds become instantly available: One XML Sitemap on yourblogurl.tld/sitemap.xml (or yourblogurl.tld/?feed=sitemap), ready for indexing by search engines like Google, Yahoo, MSN, Ask.com and others. And one Google News Sitemap on yourblogurl.tld/sitemap-news.xml (or yourblogurl.tld/?feed=sitemap-news), ready for indexing by Google News. Both are automatically referenced in the dynamically created **robots.txt** on yourblogurl.tld/robots.txt to tell search engines where to find your XML Sitemaps.
 
 
18
 
19
  Please read the FAQ's for info on how to get your articles listed on Google News.
20
 
21
- **Compatible with caching plugins** like WP Super Cache, W3 Total Cache and Quick Cache that cache feeds, allowing a faster serving to the hungry, impatient (!) spider.
22
 
23
  **NOTES:**
24
 
25
  1. If you _do not use fancy URL's_ or you have WordPress installed in a _subdirectory_, a dynamic **robots.txt will NOT be generated**. You'll have to create your own and upload it to your site root! See FAQ's.
26
 
27
- 2. On large sites, it is advised to use a good caching plugin like **Quick Cache**, **WP Super Cache** or **W3 Total Cache** to improve your site _and_ sitemap performance.
28
 
29
- = Advantages =
30
 
31
- * 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 on a difficult plugin options page. In fact, there are no options at all!
 
32
  * Completely **automatic** post URL _priority_ and _change frequency_ calculation based on post age and comment and trackback activity.
33
- * Works out-of-the-box, even on **multi-site / shared codebase / multi-blog setups** like WordPress MU, WP 3.0 in MultiSite (WPMS) mode and others.
34
- * Also works upon **Network Activate** or placed in **/mu-plugins/** on WP 3.0 in MS mode and WPMU and even takes care to exclude any tags blogs to avoid malus points for link spamming.
 
35
  * Compatible with multi-lingual sites using **Polylang** to allow all languages to be indexed equally.
 
 
 
 
 
36
 
37
- = Limitations =
38
-
39
- * Except by _re-saving_ older posts from time to time (keeping the lastmod date fairly recent) there is no way to manually control the priority of individual posts/pages in the sitemap. See the Faq's for more.
40
- * This plugin does not ping any search engines. But then, WordPress does this by default already via the Ping-o-Matic service so why bother? See the Faq's for more.
41
- * Because the feed is dynamically created, on _very_ large sites the creation process might take a while. Search engines are said to have a short fuse about waiting for a sitemap, so you may want to consider using a cache plugin that also (pre)caches feeds. If you are unfamiliar with caching and server setup start with an easy caching plugin such as **Quick Cache**. For more options (and better performance) you might find solace in **WP Super Cache** or **W3 Total Cache**.
42
- * On **VERY** large sites (read: over 10.000 posts) with limited memory assigned to PHP, the generation of the sitemap might cause a problem when the process runs out of memory. See the FAQ's for tips to increase the PHP memory limit on your server.
43
 
44
  = Translations =
45
 
46
- - **Dutch** * Author: [R.A. van Hagen](http://status301.net) (version 4.0)
47
- - **French** * Author: [R.A. van Hagen](http://status301.net) (version 4.0)
48
- - **Ukrainian** * Author: [Cmd Software](http://www.cmd-soft.com/) (version 4.0)
 
 
 
 
49
 
50
- New transtations will be accepted and listed here. See translation instructions under [Other Notes](http://wordpress.org/extend/plugins/xml-sitemap-feed/other_notes).
51
 
52
  = Credits =
53
 
54
- XML Sitemap Feed was originally based on the discontinued plugin Standard XML Sitemap Generator by Patrick Chia. Many thanks! Since then, it has been completely rewritten and extended in many ways.
55
 
56
 
57
  == Installation ==
@@ -72,7 +79,7 @@ Follow these steps:
72
 
73
  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.
74
 
75
- 3. Activate the plugin on the Plug-ins page.
76
 
77
  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.
78
 
@@ -82,22 +89,14 @@ Done! Check your sparkling new XML Sitemap by visiting yourblogurl.tld/sitemap.x
82
 
83
  Same as above but do a **Network Activate** to make a XML sitemap available for each site on your network.
84
 
85
- = Wordpress MU =
86
-
87
- The plugin works best from the **/mu-plugins/** folder where it runs quietly in the background without bothering any blog owner with new options or the need for special knowledge of XML Sitemap submission. Just upload the complete package content to /mu-plugins/ and move the file xml-sitemap.php from the new /mu-plugins/xml-sitemap-feed/ to /mu-plugins/.
88
-
89
- Installed alongside [WordPress MU Sitewide Tags Pages](http://wordpress.org/extend/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.
90
 
91
 
92
  == Frequently Asked Questions ==
93
 
94
- = Can I run this on a WPMU / WP3+ Multi-Site setup? =
95
-
96
- Yes. In fact, it has been designed for it. Tested on WPMU 2.9.2 and WPMS 3.0.1 both with normal activation and with Network Activate / Site Wide Activate.
97
 
98
- = Can I run this plugin from /mu-plugins/ on WP3.0 MS or WPMU ? =
99
-
100
- Yes. Upload the complete /xml-sitemap-feed/ directory to /wp-content/mu-plugins/ and move the file xml-sitemap.php one dir up.
101
 
102
  = How do I get my latest articles listed on Google News? =
103
 
@@ -107,41 +106,23 @@ You will also want to add the sitemap to your [Google Webmasters Tools account](
107
 
108
  = My Google News Sitemap is empty! =
109
 
110
- The rules of the Google News game are that you do not feed the cookie monster any stale food. Older than 2 days is bad. You need to bake him some fresh bread ;)
111
-
112
- = How are the values for priority and changefreq calculated? =
113
-
114
- The front page has a fixed priority of 100% (1.0). When your site has more posts than pages (you must be using WordPress for a blog), pages have a default priority of 40% (0.4) and posts have a default priority of 80% (0.8). If your site has more pages than posts (you must be using WordPress as CMS), pages have a default priority of 80% (0.8) and posts have a default priority of 40% (0.4).
115
-
116
- Page and post priority can vary between 0% (0.0) and 100% (1.0). Page priority depends on the page level (decreasing 10% for each sub-level) and relative number of comments. Post priority depends on relative number of comments and relative last comment age or (when the post has no comments) last post modification age.
117
-
118
- The changefreq of the front page is fixed to daily and calculated for pages and post to either daily, weekly, monthly or yearly depending on age and comment activity.
119
-
120
- Dynamic pages like category pages, tag pages and archive pages are not listed in the XML Sitemap.
121
 
122
  = Can I manipulate values for priority and changefreq? =
123
 
124
- Yes and No. This plugin has no options page so there is no way to manually set the priority of urls in the sitemap. But there is automatic post priority calculation based on _post modifaction date_ and _comment activity_, that can either make post priority go to 100% (1.0) for posts with many and recent comments or 0% (0) for the oldest posts with no comments.
125
-
126
- This feature can be used to your advantage: by re-saving your most important older posts from time to time, keeping the **lastmod date** fairly recent, you can ensure a priority of at least 80% (0.8) for those URLs. And if you have enough comments on on those pages, the priority can even go up to 100% (1.0).
127
-
128
- If you cannot live with these rules, edit the values `$min_priority`, `$max_priority` and `$frontpage_priority` in xml-sitemap-feed/feed-sitemap.php but be careful to NOT do an automatic upgrade or it will overwrite your customisation.
129
 
130
  = Do I need to submit the sitemap to search engines? =
131
 
132
  No. In normal circumstances, your site will be indexed by the major search engines before you know it. The search engines will be looking for a robots.txt file and (with this plugin activated) find a pointer in it to the XML Sitemap on your blog. The search engines will return on a regular basis to see if your site has updates.
133
- ( Read more about _Ping-O-Matic_ under **Does this plugin ping search engines** (below) to make sure your site is under _normal circumstances_ ;) )
134
 
135
- **But** if you have a server _without rewrite rules_, use your blog _without fancy URLs_ (meaning, you have WordPress Permalinks set to the old Default value) or have it installed in a _subdirectory_, read **Do I need to change my robots.txt** for more instructions.
136
 
137
- = Does this plugin ping search engines? =
138
 
139
- No. While other XML Sitemap plugins provide pinging to some search engines upon each post edit or publication, this plugin does not. There are two reasons for that:
140
-
141
- 1. WordPress has a built-in pinging feature. Go in your WP Admin section to Settings > Writing and make sure that the text area under **Update services** contains at least `http://rpc.pingomatic.com`. Read more on [Ping-O-Matic](http://pingomatic.com) about what excellent service you are actually getting _for free with every WordPress blog_ installation!
142
- 1. For the average website, in my experience, pinging Google or others after each little change does not benefit anything except a theoretical smaller delay in re-indexation of your website. This is only theoretical because if your site is popular and active, major search engines will likely be crawling your site on a very regular basis anyway. And if, on the other hand, your site is not high on the agenda of the major search engines, they will likely give no priority to your pings at all.
143
 
144
- You can always take a [Google Webmasters Tools account](https://www.google.com/webmasters/tools/) which will tell you many interesting things about your website, sitemap downloads, search terms and your visitors. Try it!
145
 
146
  = Do I need to change my robots.txt? =
147
 
@@ -164,9 +145,9 @@ If you already have a robots.txt file with another Sitemap reference like it, ju
164
 
165
  No. While I would advise you to use any one of the nicer Permalink structures for better indexing, you might not be able to (or don't want to) do that. If so, you can still use this plugin:
166
 
167
- Check to see if the URL yourblogurl.tld/?feed=sitemap does produce a feed. Now manually upload your own robots.txt file to your website root containing:
168
  `
169
- Sitemap: http://yourblogurl.tld/?feed=sitemap
170
 
171
  User-agent: *
172
  Allow: /
@@ -175,7 +156,7 @@ You can also choose to notify major search engines of your new XML sitemap manua
175
 
176
  = Can I change the sitemap name/URL? =
177
 
178
- No. If you have fancy URL's turned ON in WordPress (Permalinks), the sitemap url that you manually submit to Google (if you are impatient) should be `yourblogurl.tld/sitemap.xml` but if you have the Permalinks' Default option set the feed is only available via `yourblogurl.tld/?feed=sitemap`.
179
 
180
  = Where can I customize the xml output? =
181
 
@@ -183,6 +164,8 @@ You may edit the XML output in `xml-sitemap-feed/feed-sitemap.php` but be carefu
183
 
184
  The stylesheet (to make the sitemap human readable) can be edited in `xml-sitemap-feed/sitemap.xsl.php`.
185
 
 
 
186
  = I see no sitemap.xml file in my site root! =
187
 
188
  The sitemap is dynamically generated just like a feed. There is no actual file created.
@@ -226,7 +209,7 @@ There is a know issue with WordPress (at least up to 2.8) not generating a robot
226
 
227
  To get around this, you might either at least write one post and give it _Private_ status or alternatively create your own robots.txt file containing:
228
  `
229
- Sitemap: http://yourblogurl.tld/sitemap.xml
230
 
231
  User-agent: *
232
  Allow: /
@@ -237,32 +220,42 @@ and upload it to your web root...
237
 
238
  On some setups (usually using the WordPress MU Domain Mapping plugin) this error occurs. The problem is known, the cause is not... Until I find out why this is happening, please take comfort in knowing that this only affects reading the sitemap in normal browsers but will NOT affect any spidering/indexing on your site. The sitemap is still readable by all search engines!
239
 
240
- = I see only a BLANK (white) page when opening the sitemap =
241
 
242
- You might be experiencing an issue with your servers PHP memory limit. The plugin attempts to increase the memory limit to 256M by itself but in some rare cases that does not work. Or your site is just so big that that is not even enough... In those cases, you should see a messages like `PHP Fatal error: Allowed memory size of xxxxxx bytes exhausted.` in your server/account error log file.
243
 
244
- Read more on [Increasing memory allocated to PHP](http://codex.wordpress.org/Editing_wp-config.php#Increasing_memory_allocated_to_PHP) (try a value higher than 256M) or ask your hosting provider what you can do.
245
 
 
246
 
247
- == Translation ==
248
 
249
- 1. Install PoEdit on your computer.
250
 
251
- 2. Open the template translation database xml-sitemap-xx_XX.po in this plugins /languages/ directory with PoEdit.
252
 
253
- 3. Go to Edit > Preferences and on the tab Editor check the option to compile a .mo database on save automatically. Close with OK.
254
 
255
- 4. Go to Catalog > Settings and set your name, e-mail address, language and country. Close with OK.
256
 
257
- 5. Go to Catalog > Update from POT-file and select the main xml-sitemap-feed.pot file. Then accept all new and removed translation strings with OK.
258
 
259
- 6. Now go ahead and start translating all the texts listed in PoEdit.
260
 
261
- 7. When done, go to File > Save as... and replace the xx_XX in the file name with the appropriate language and country code for your translation. Leave the rest of the file name the same and Save.
262
 
263
- 8. Upload the automatically created xml-sitemap-feed-xx_XX.mo database file (where xx_XX should now be your language and country code) to the plugins /languages/ directory on your WordPress site.
264
 
265
- 9. After verifying the translations work on your site, send the .mo file to ravanhagen@gmail.com and don't forget to tell me how and with what link you would like to be mentioned in the credits!
 
 
 
 
 
 
 
 
 
 
266
 
267
  Thanks for sharing your translation :)
268
 
@@ -275,12 +268,67 @@ Thanks for sharing your translation :)
275
 
276
  == Upgrade Notice ==
277
 
278
- = 4.0.1 =
279
- Bugfix release.
280
 
281
 
282
  == Changelog ==
283
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
284
  = 4.0.1 =
285
  * NEW: Dutch and French translations
286
  * BUGFIX: Non public sites still have sitemap by default
@@ -378,5 +426,5 @@ Bugfix release.
378
  * BUGFIX: `get_post_modified_time` instead of `get_post_time`
379
 
380
  = 0.1 =
381
- * rework from Patrick Chia's [Standard XML Sitemaps](http://wordpress.org/extend/plugins/standard-xml-sitemap/)
382
  * increased post urls limit from 100 to 1000 (of max. 50,000 allowed by the Sitemap protocol)
1
+ === XML Sitemap & Google News feeds ===
2
  Contributors: RavanH
3
  Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=ravanhagen%40gmail%2ecom&item_name=XML%20Sitemap%20Feed&item_number=3%2e8&no_shipping=0&tax=0&bn=PP%2dDonationsBF&charset=UTF%2d8&lc=us
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
 
13
+ This plugin dynamically creates feeds that comply with the **XML Sitemap** and the **Google News Sitemap** protocol. **Multisite** and **Polylang** compatible and there are no files created. Options can be found on **Settings > Reading** to control which sitemaps, which post and taxonomy types are included, how priority is calculated, who to ping and set additional robots.txt rules.
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
 
23
+ **Compatible with caching plugins** like WP Super Cache, W3 Total Cache and Quick Cache that cache feeds, allowing a faster serving to the impatient (when hungry) spider.
24
 
25
  **NOTES:**
26
 
27
  1. If you _do not use fancy URL's_ or you have WordPress installed in a _subdirectory_, a dynamic **robots.txt will NOT be generated**. You'll have to create your own and upload it to your site root! See FAQ's.
28
 
29
+ 2. On large sites, it is advised to use a good caching plugin like **WP Super Cache**, **Quick Cache** or **W3 Total Cache** to improve your site _and_ sitemap performance.
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)
54
+ - **Spanish** * Andrew Kurtis - WebHostingHub Support http://www.webhostinghub.com/ (version 4.3.2)
55
+ - **Ukrainian** * Cmd Software http://www.cmd-soft.com/ (version 4.0)
56
 
57
+ New transtations will be accepted and listed here. See translation instructions under [Other Notes](http://wordpress.org/plugins/xml-sitemap-feed/other_notes/).
58
 
59
  = Credits =
60
 
61
+ XML Sitemap Feed was originally based on the discontinued plugin Standard XML Sitemap Generator by Patrick Chia. Since then, it has been completely rewritten and extended in many ways.
62
 
63
 
64
  == Installation ==
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
 
89
 
90
  Same as above but do a **Network Activate** to make a XML sitemap available for each site on your network.
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
 
97
+ = Where are the options? =
 
 
98
 
99
+ See the XML Sitemaps section on **Settings > Reading**.
 
 
100
 
101
  = How do I get my latest articles listed on Google News? =
102
 
106
 
107
  = My Google News Sitemap is empty! =
108
 
109
+ The rules of the Google News game are that you do not feed the monster any stale food. Older than 2 days is bad. You need to whip up some fresh chow ;)
 
 
 
 
 
 
 
 
 
 
110
 
111
  = Can I manipulate values for priority and changefreq? =
112
 
113
+ Yes. You can find default settings for priority, changefreq and lastmod on **Settings > Reading**. A fixed priority can be set on a post by post basis too.
 
 
 
 
114
 
115
  = Do I need to submit the sitemap to search engines? =
116
 
117
  No. In normal circumstances, your site will be indexed by the major search engines before you know it. The search engines will be looking for a robots.txt file and (with this plugin activated) find a pointer in it to the XML Sitemap on your blog. The search engines will return on a regular basis to see if your site has updates.
 
118
 
119
+ Besides that, Google and Bing are pinged upon each new publication.
120
 
121
+ **NOTE:** If you have a server _without rewrite rules_, use your blog _without fancy URLs_ (meaning, you have WordPress Permalinks set to the old default value) or have it installed in a _subdirectory_, then read **Do I need to change my robots.txt** for more instructions.
122
 
123
+ = Does this plugin ping search engines? =
 
 
 
124
 
125
+ Yes, Google and Bing are pinged upon each new publication. Unless you disable this feature on **Settings > Reading**.
126
 
127
  = Do I need to change my robots.txt? =
128
 
145
 
146
  No. While I would advise you to use any one of the nicer Permalink structures for better indexing, you might not be able to (or don't want to) do that. If so, you can still use this plugin:
147
 
148
+ Check to see if the URL yourblog.url/?feed=sitemap does produce a feed. Now manually upload your own robots.txt file to your website root containing:
149
  `
150
+ Sitemap: http://yourblog.url/?feed=sitemap
151
 
152
  User-agent: *
153
  Allow: /
156
 
157
  = Can I change the sitemap name/URL? =
158
 
159
+ No. If you have fancy URL's turned ON in WordPress (Permalinks), the sitemap url that you manually submit to Google (if you are impatient) should be `yourblogurl.tld/sitemap.xml` but if you have the Permalinks' Default option set the feed is only available via `yourblog.url/?feed=sitemap`.
160
 
161
  = Where can I customize the xml output? =
162
 
164
 
165
  The stylesheet (to make the sitemap human readable) can be edited in `xml-sitemap-feed/sitemap.xsl.php`.
166
 
167
+ 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.
209
 
210
  To get around this, you might either at least write one post and give it _Private_ status or alternatively create your own robots.txt file containing:
211
  `
212
+ Sitemap: http://yourblog.url/sitemap.xml
213
 
214
  User-agent: *
215
  Allow: /
220
 
221
  On some setups (usually using the WordPress MU Domain Mapping plugin) this error occurs. The problem is known, the cause is not... Until I find out why this is happening, please take comfort in knowing that this only affects reading the sitemap in normal browsers but will NOT affect any spidering/indexing on your site. The sitemap is still readable by all search engines!
222
 
223
+ **XML declaration allowed only at the start of the document**
224
 
225
+ This error occurs when blank lines or other output is generated before the start of the actual sitemap content. This can be caused by blank lines at the beginning of wp-config.php or your themes functions.php or by another plugin that generates output where it shouldn't. You'll need to test by disabling all other plugins, switching to the default theme and manually inspecting your wp-config.php file.
226
 
227
+ = I see only a BLANK (white) page when opening the sitemap =
228
 
229
+ There are several cases where this might happen.
230
 
231
+ Open your sitemap in a browser and look at the source code. This can usually be seen by hitting Ctrl+U or right-click then select 'View source...' Then scan the produced source (if any) for errors.
232
 
233
+ A. If you see strange output in the first few lines (head tags) of the source, then there is a conflict or bug occuring on your installation. Please go to the [Support forum](http://wordpress.org/support/plugin/xml-sitemap-feed) for help.
234
 
235
+ B. If the source is empty or incomplete then you're probably experiencing an issue with your servers PHP memory limit. In those cases, you should see a messages like `PHP Fatal error: Allowed memory size of xxxxxx bytes exhausted.` in your server/account error log file.
236
 
237
+ This can happen on large sites. To avoid these issues, there is an option to split posts over different sitemaps on Settings > Reading. Try different settings, each time revisiting the main sitemap index file and open different sitemaps listed there to check.
238
 
239
+ Read more on [Increasing memory allocated to PHP](http://codex.wordpress.org/Editing_wp-config.php#Increasing_memory_allocated_to_PHP) (try a value higher than 256M) or ask your hosting provider what you can do.
240
 
241
+ = Can I run this on a WPMU / WP3+ Multi-Site setup? =
242
 
243
+ Yes. In fact, it has been designed for it. Tested on WPMU 2.9.2 and WPMS 3+ both with normal activation and with Network Activate / Site Wide Activate.
244
 
 
245
 
246
+ == Translation ==
247
 
248
+ 1. Install PoEdit on your computer.
249
+ 1. Go to this plugins /languages/ directory.
250
+ 1. If there is no .po file that corresponds with your language yet, rename the template translation database xml-sitemap-feed-xx_XX.po by replacing the xx with your language code and XX with your country code.
251
+ 1. Open the .po file of your language with PoEdit.
252
+ 1. Go to Edit > Preferences and on the tab Editor check the option to compile a .mo database on save automatically. Close with OK.
253
+ 1. Go to Catalog > Settings and set your name, e-mail address, language and country. Close with OK.
254
+ 1. Go to Catalog > Update from POT-file and select the main xml-sitemap-feed.pot file. Then accept all new and removed translation strings with OK.
255
+ 1. Now go ahead and start translating all the texts listed in PoEdit.
256
+ 1. When done, go to File > Save to Save.
257
+ 1. Upload the automatically created xml-sitemap-feed-xx_XX.mo database file (where xx_XX should now be your language and country code) to the plugins /languages/ directory on your WordPress site.
258
+ 1. After verifying the translations work on your site, send the .mo file and, if you're willing to share it, your original .po file to ravanhagen@gmail.com and don't forget to tell me how and with what link you would like to be mentioned in the credits!
259
 
260
  Thanks for sharing your translation :)
261
 
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
281
+
282
+ = 4.3 =
283
+ * Google News sitemap settings section
284
+ * Google News tags: access, genres, keywords, geo_locations
285
+ * Improved Google News stylesheet
286
+ * Custom Google News Publication Name
287
+ * Image tags in Google News sitemap
288
+ * Custom URLs
289
+ * Allow additional domains
290
+ * Image caption and title tags
291
+ * Ping Yandex and Baidu optional
292
+ * BUGFIX: Ineffective robots.txt rules
293
+ * BUGFIX: Priority value 0 in post meta not saved
294
+ * BUGFIX: Ping for all post types
295
+ * BUGFIX: Custom taxonomy support
296
+ * BUGFIX: Split by month shows year
297
+
298
+ = 4.2.4 =
299
+ * NEW: Image tags
300
+ * Rearranged settings section
301
+ * FIX: replace permalink, title and bloginfo rss filter hooks with own
302
+
303
+ = 4.2.3 =
304
+ * BUGFIX: Empty ping options after disabling the main sitemap
305
+ * BUGFIX: Empty language tag for Google News tags in posts sitemap
306
+ * Small back end changes
307
+ * NEW: Custom post types split by year/month
308
+
309
+ = 4.2 =
310
+ * NEW: Image & News tags
311
+ * NEW: Exclude pages/posts
312
+
313
+ = 4.1.4 =
314
+ * BUGFIX: Pass by reference fatal error in PHP 5.4
315
+ * BUGFIX: issue with Polylang language code in pretty permalinks setting
316
+ * BUGFIX: unselected post types in sitemap
317
+ * BUGFIX: 1+ Priority for sticky posts with comments
318
+ * Dutch and French translations updated
319
+
320
+ = 4.1 =
321
+ * NEW: Ping Google and Bing on new publications
322
+ * NEW: Set priority per post
323
+ * NEW: Priority calculation options
324
+ * NEW: Option to split posts by year or month for faster generation of each sitemap
325
+ * Reduced queries to increase performance
326
+ * Improved Lastmod and Changefreq calculations
327
+ * Core class improvements
328
+ * Dropped qTranslate support
329
+ * Dropped PHP4 support
330
+ * BUGFIX: removed several PHP notices
331
+
332
  = 4.0.1 =
333
  * NEW: Dutch and French translations
334
  * BUGFIX: Non public sites still have sitemap by default
426
  * BUGFIX: `get_post_modified_time` instead of `get_post_time`
427
 
428
  = 0.1 =
429
+ * rework from Patrick Chia's [Standard XML Sitemaps](http://wordpress.org/plugins/standard-xml-sitemap/)
430
  * increased post urls limit from 100 to 1000 (of max. 50,000 allowed by the Sitemap protocol)
xml-sitemap.php CHANGED
@@ -1,10 +1,10 @@
1
  <?php
2
  /*
3
- Plugin Name: XML Sitemap & Google News Feeds
4
  Plugin URI: http://status301.net/wordpress-plugins/xml-sitemap-feed/
5
- Description: Creates a feed that complies with the XML Sitemap protocol ready for indexing by Google, Yahoo, Bing, Ask and others. Happy with it? 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 development and support time. Thanks :)
6
  Text Domain: xml-sitemap-feed
7
- Version: 4.0.1
8
  Author: RavanH
9
  Author URI: http://status301.net/
10
  */
@@ -27,14 +27,18 @@ 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
 
39
  * ACTIONS
40
  * [ none at this point, but feel free to request, suggest or submit one :) ]
@@ -48,6 +52,15 @@ if(!empty($_SERVER['SCRIPT_FILENAME']) && 'xml-sitemap.php' == basename($_SERVER
48
  * CONSTANTS
49
  * -------------------- */
50
 
 
 
 
 
 
 
 
 
 
51
  /* The following constants can be used to change plugin defaults by defining them in wp-config.php */
52
 
53
  /*
@@ -104,15 +117,6 @@ if ( !defined('XMLSF_NEWS_POST_TYPE') )
104
  */
105
 
106
 
107
- /* The following constants should not be changed */
108
-
109
- define('XMLSF_VERSION', '4.0.1');
110
-
111
- if ( file_exists ( dirname(__FILE__).'/xml-sitemap-feed' ) )
112
- define('XMLSF_PLUGIN_DIR', dirname(__FILE__) . '/xml-sitemap-feed');
113
- else
114
- define('XMLSF_PLUGIN_DIR', dirname(__FILE__));
115
-
116
 
117
  /* -------------------------------------
118
  * MISSING WORDPRESS FUNCTIONS
1
  <?php
2
  /*
3
+ 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
  */
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 :) ]
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
  /*
117
  */
118
 
119
 
 
 
 
 
 
 
 
 
 
120
 
121
  /* -------------------------------------
122
  * MISSING WORDPRESS FUNCTIONS