All in One SEO Pack - Version 2.3.11.2

Version Description

Download this release

Release Info

Developer hallsofmontezuma
Plugin Icon 128x128 All in One SEO Pack
Version 2.3.11.2
Comparing to
See all releases

Code changes from version 2.3.11.1 to 2.3.11.2

admin/aioseop_module_class.php CHANGED
@@ -1750,9 +1750,9 @@ if ( ! class_exists( 'All_in_One_SEO_Pack_Module' ) ) {
1750
  if ( ! empty( $this->pointers ) ) {
1751
  wp_enqueue_style( 'wp-pointer' );
1752
  }
1753
- wp_enqueue_style( 'aioseop-module-style', AIOSEOP_PLUGIN_URL . 'css/modules/aioseop_module.css' );
1754
  if ( function_exists( 'is_rtl' ) && is_rtl() ) {
1755
- wp_enqueue_style( 'aioseop-module-style-rtl', AIOSEOP_PLUGIN_URL . 'css/modules/aioseop_module-rtl.css', array( 'aioseop-module-style' ) );
1756
  }
1757
  }
1758
 
@@ -1764,6 +1764,7 @@ if ( ! class_exists( 'All_in_One_SEO_Pack_Module' ) ) {
1764
  wp_enqueue_script( 'jquery' );
1765
  wp_enqueue_script( 'media-upload' );
1766
  wp_enqueue_script( 'thickbox' );
 
1767
  wp_enqueue_script( 'common' );
1768
  wp_enqueue_script( 'wp-lists' );
1769
  wp_enqueue_script( 'postbox' );
1750
  if ( ! empty( $this->pointers ) ) {
1751
  wp_enqueue_style( 'wp-pointer' );
1752
  }
1753
+ wp_enqueue_style( 'aioseop-module-style', AIOSEOP_PLUGIN_URL . 'css/modules/aioseop_module.css', array(), AIOSEOP_VERSION );
1754
  if ( function_exists( 'is_rtl' ) && is_rtl() ) {
1755
+ wp_enqueue_style( 'aioseop-module-style-rtl', AIOSEOP_PLUGIN_URL . 'css/modules/aioseop_module-rtl.css', array( 'aioseop-module-style' ), AIOSEOP_VERSION );
1756
  }
1757
  }
1758
 
1764
  wp_enqueue_script( 'jquery' );
1765
  wp_enqueue_script( 'media-upload' );
1766
  wp_enqueue_script( 'thickbox' );
1767
+ wp_enqueue_media(); // WP 3.5+ Media upload.
1768
  wp_enqueue_script( 'common' );
1769
  wp_enqueue_script( 'wp-lists' );
1770
  wp_enqueue_script( 'postbox' );
admin/display/welcome.php CHANGED
@@ -16,7 +16,7 @@ if ( ! class_exists( 'aioseop_welcome' ) ) {
16
  }
17
 
18
  add_action( 'admin_menu', array( $this, 'add_menus' ) );
19
- add_action( 'admin_head', array( $this, 'remove_pages' ) );
20
  add_action( 'admin_enqueue_scripts', array( $this, 'welcome_screen_assets' ) );
21
 
22
  }
@@ -30,13 +30,15 @@ if ( ! class_exists( 'aioseop_welcome' ) ) {
30
 
31
  if ( 'dashboard_page_aioseop-about' === $hook ) {
32
 
33
- wp_enqueue_style( 'aioseop_welcome_css', AIOSEOP_PLUGIN_URL . '/css/welcome.css' );
34
  wp_enqueue_script( 'aioseop_welcome_js', AIOSEOP_PLUGIN_URL . '/js/welcome.js', array( 'jquery' ), AIOSEOP_VERSION, true );
35
  }
36
  }
37
 
38
  /**
39
  * Removes unneeded pages.
 
 
40
  */
41
  function remove_pages() {
42
  remove_submenu_page( 'index.php', 'aioseop-about' );
16
  }
17
 
18
  add_action( 'admin_menu', array( $this, 'add_menus' ) );
19
+ add_action( 'admin_menu', array( $this, 'remove_pages' ), 999 );
20
  add_action( 'admin_enqueue_scripts', array( $this, 'welcome_screen_assets' ) );
21
 
22
  }
30
 
31
  if ( 'dashboard_page_aioseop-about' === $hook ) {
32
 
33
+ wp_enqueue_style( 'aioseop_welcome_css', AIOSEOP_PLUGIN_URL . '/css/welcome.css', array(), AIOSEOP_VERSION );
34
  wp_enqueue_script( 'aioseop_welcome_js', AIOSEOP_PLUGIN_URL . '/js/welcome.js', array( 'jquery' ), AIOSEOP_VERSION, true );
35
  }
36
  }
37
 
38
  /**
39
  * Removes unneeded pages.
40
+ *
41
+ * @since 2.3.12 Called via admin_menu action instead of admin_head.
42
  */
43
  function remove_pages() {
44
  remove_submenu_page( 'index.php', 'aioseop-about' );
admin/meta_import.php CHANGED
@@ -486,6 +486,7 @@ function aiosp_seometa_import() {
486
  'Custom Doctitle' => '_aioseop_title',
487
  'META Description' => '_aioseop_description',
488
  'META Keywords' => '_aioseop_keywords',
 
489
  ),
490
  'Greg\'s High Performance SEO' => array(
491
  'Custom Doctitle' => '_ghpseo_secondary_title',
@@ -507,6 +508,9 @@ function aiosp_seometa_import() {
507
  'Canonical URI' => '_wds_canonical',
508
  'Redirect URI' => '_wds_redirect',
509
  ),
 
 
 
510
  'Meta SEO Pack' => array(
511
  'META Description' => '_msp_description',
512
  'META Keywords' => '_msp_keywords',
486
  'Custom Doctitle' => '_aioseop_title',
487
  'META Description' => '_aioseop_description',
488
  'META Keywords' => '_aioseop_keywords',
489
+ 'Canonical URI' => '_aioseop_custom_link',
490
  ),
491
  'Greg\'s High Performance SEO' => array(
492
  'Custom Doctitle' => '_ghpseo_secondary_title',
508
  'Canonical URI' => '_wds_canonical',
509
  'Redirect URI' => '_wds_redirect',
510
  ),
511
+ 'Jetpack' => array(
512
+ 'META Description' => 'advanced_seo_description',
513
+ ),
514
  'Meta SEO Pack' => array(
515
  'META Description' => '_msp_description',
516
  'META Keywords' => '_msp_keywords',
aioseop_class.php CHANGED
@@ -3000,7 +3000,7 @@ class All_in_One_SEO_Pack extends All_in_One_SEO_Pack_Module {
3000
  wp_enqueue_style( 'wp-pointer' );
3001
  //$this->add_admin_pointers();
3002
 
3003
- wp_enqueue_style( 'aiosp_admin_style', AIOSEOP_PLUGIN_URL . 'css/aiosp_admin.css' );
3004
  ?>
3005
  <script>
3006
  function aioseop_show_pointer(handle, value) {
3000
  wp_enqueue_style( 'wp-pointer' );
3001
  //$this->add_admin_pointers();
3002
 
3003
+ wp_enqueue_style( 'aiosp_admin_style', AIOSEOP_PLUGIN_URL . 'css/aiosp_admin.css', array(), AIOSEOP_VERSION );
3004
  ?>
3005
  <script>
3006
  function aioseop_show_pointer(handle, value) {
all_in_one_seo_pack.php CHANGED
@@ -3,7 +3,7 @@
3
  Plugin Name: All In One SEO Pack
4
  Plugin URI: https://semperfiwebdesign.com
5
  Description: Out-of-the-box SEO for your WordPress blog. Features like XML Sitemaps, SEO for custom post types, SEO for blogs or business sites, SEO for ecommerce sites, and much more. Almost 30 million downloads since 2007.
6
- Version: 2.3.11.1
7
  Author: Michael Torbert
8
  Author URI: https://michaeltorbert.com
9
  Text Domain: all-in-one-seo-pack
@@ -31,14 +31,14 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
31
  * The original WordPress SEO plugin.
32
  *
33
  * @package All-in-One-SEO-Pack
34
- * @version 2.3.11.1
35
  */
36
 
37
  if ( ! defined( 'AIOSEOPPRO' ) ) {
38
  define( 'AIOSEOPPRO', false );
39
  }
40
  if ( ! defined( 'AIOSEOP_VERSION' ) ) {
41
- define( 'AIOSEOP_VERSION', '2.3.11.1' );
42
  }
43
  global $aioseop_plugin_name;
44
  $aioseop_plugin_name = 'All in One SEO Pack';
3
  Plugin Name: All In One SEO Pack
4
  Plugin URI: https://semperfiwebdesign.com
5
  Description: Out-of-the-box SEO for your WordPress blog. Features like XML Sitemaps, SEO for custom post types, SEO for blogs or business sites, SEO for ecommerce sites, and much more. Almost 30 million downloads since 2007.
6
+ Version: 2.3.11.2
7
  Author: Michael Torbert
8
  Author URI: https://michaeltorbert.com
9
  Text Domain: all-in-one-seo-pack
31
  * The original WordPress SEO plugin.
32
  *
33
  * @package All-in-One-SEO-Pack
34
+ * @version 2.3.11.2
35
  */
36
 
37
  if ( ! defined( 'AIOSEOPPRO' ) ) {
38
  define( 'AIOSEOPPRO', false );
39
  }
40
  if ( ! defined( 'AIOSEOP_VERSION' ) ) {
41
+ define( 'AIOSEOP_VERSION', '2.3.11.2' );
42
  }
43
  global $aioseop_plugin_name;
44
  $aioseop_plugin_name = 'All in One SEO Pack';
inc/aioseop_functions.php CHANGED
@@ -183,7 +183,7 @@ if ( ! function_exists( 'aioseop_mrt_pcolumns' ) ) {
183
  if ( ! function_exists( 'aioseop_admin_head' ) ) {
184
 
185
  function aioseop_admin_head() {
186
- echo '<script type="text/javascript" src="' . AIOSEOP_PLUGIN_URL . 'js/quickedit_functions.js" ></script>';
187
  ?>
188
  <style>
189
  .aioseop_edit_button {
183
  if ( ! function_exists( 'aioseop_admin_head' ) ) {
184
 
185
  function aioseop_admin_head() {
186
+ wp_enqueue_script( 'aioseop_welcome_js', AIOSEOP_PLUGIN_URL . '/js/quickedit_functions.js', array( 'jquery' ), AIOSEOP_VERSION);
187
  ?>
188
  <style>
189
  .aioseop_edit_button {
inc/compatability/compat-init.php CHANGED
@@ -42,6 +42,13 @@ if ( ! class_exists( 'All_in_One_SEO_Pack_Compatibility' ) ) {
42
  'filter_jetpack_site_verification_output',
43
  ), 10, 1 );
44
  }
 
 
 
 
 
 
 
45
  }
46
 
47
  /**
42
  'filter_jetpack_site_verification_output',
43
  ), 10, 1 );
44
  }
45
+
46
+
47
+ // Remove Twitter plugin's meta if our Social Module is on.
48
+ global $aioseop_options;
49
+ if ( isset( $aioseop_options['modules']['aiosp_feature_manager_options']['aiosp_feature_manager_enable_opengraph'] ) && $aioseop_options['modules']['aiosp_feature_manager_options']['aiosp_feature_manager_enable_opengraph'] === 'on' ) {
50
+ add_filter('twitter_card','__return_false');
51
+ }
52
  }
53
 
54
  /**
js/modules/aioseop_module.js CHANGED
@@ -245,26 +245,44 @@ jQuery( document ).ready(function() {
245
  });
246
 
247
  /**
248
- * @since 1.0.0
249
- * @return boolean.
250
  */
251
- jQuery( document ).ready(function() {
252
- var image_field;
253
- jQuery( '.aioseop_upload_image_button' ).click(function() {
254
- window.send_to_editor = aioseopNewSendToEditor;
255
- image_field = jQuery( this ).next();
256
- formfield = image_field.attr( 'name' );
257
- tb_show( '', 'media-upload.php?type=image&amp;TB_iframe=true' );
258
- return false;
259
- });
260
- aioseopStoreSendToEditor = window.send_to_editor;
261
- aioseopNewSendToEditor = function(html) {
262
- imgurl = jQuery( 'img',html ).attr( 'src' );
263
- if ( typeof( imgurl ) !== undefined )
264
- image_field.val( imgurl );
265
- tb_remove();
266
- window.send_to_editor = aioseopStoreSendToEditor;
267
- };
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
268
  });
269
 
270
  /**
245
  });
246
 
247
  /**
248
+ * @since 2.3.11.2
249
+ *
250
  */
251
+ jQuery(document).ready(function($){
252
+
253
+ var custom_uploader;
254
+
255
+ jQuery('.aioseop_upload_image_button').click(function(e) {
256
+ var image_field = jQuery( this ).next();
257
+
258
+ e.preventDefault();
259
+
260
+ //If the uploader object has already been created, reopen the dialog
261
+ if (custom_uploader) {
262
+ custom_uploader.open();
263
+ return;
264
+ }
265
+
266
+ //Extend the wp.media object
267
+ custom_uploader = wp.media.frames.file_frame = wp.media({
268
+ title: 'Choose Image',
269
+ button: {
270
+ text: 'Choose Image'
271
+ },
272
+ multiple: false
273
+ });
274
+
275
+ //When a file is selected, grab the URL and set it as the text field's value
276
+ custom_uploader.on('select', function() {
277
+ attachment = custom_uploader.state().get('selection').first().toJSON();
278
+ jQuery(image_field.val( attachment.url));
279
+ });
280
+
281
+ //Open the uploader dialog
282
+ custom_uploader.open();
283
+
284
+ });
285
+
286
  });
287
 
288
  /**
modules/aioseop_bad_robots.php CHANGED
@@ -23,7 +23,6 @@ if ( ! class_exists( 'All_in_One_SEO_Pack_Bad_Robots' ) ) {
23
  'block_bots' => __( 'Block requests from user agents that are known to misbehave with 503.', 'all-in-one-seo-pack' ),
24
  'block_refer' => __( 'Block Referral Spam using HTTP.', 'all-in-one-seo-pack' ),
25
  'track_blocks' => __( 'Log and show recent requests from blocked bots.', 'all-in-one-seo-pack' ),
26
- 'htaccess_rules' => __( 'Block bad robots via Apache .htaccess rules. Warning: this will change your web server configuration, make sure you are able to edit this file manually as well.', 'all-in-one-seo-pack' ),
27
  'edit_blocks' => __( 'Check this to edit the list of disallowed user agents for blocking bad bots.', 'all-in-one-seo-pack' ),
28
  'blocklist' => __( 'This is the list of disallowed user agents used for blocking bad bots.', 'all-in-one-seo-pack' ),
29
  'referlist' => __( 'This is the list of disallowed referers used for blocking bad bots.', 'all-in-one-seo-pack' ),
@@ -34,7 +33,6 @@ if ( ! class_exists( 'All_in_One_SEO_Pack_Bad_Robots' ) ) {
34
  'block_bots' => array( 'name' => __( 'Block Bad Bots using HTTP', 'all-in-one-seo-pack' ) ),
35
  'block_refer' => array( 'name' => __( 'Block Referral Spam using HTTP', 'all-in-one-seo-pack' ) ),
36
  'track_blocks' => array( 'name' => __( 'Track Blocked Bots', 'all-in-one-seo-pack' ) ),
37
- 'htaccess_rules' => array( 'name' => __( 'Block Bad Bots using .htaccess', 'all-in-one-seo-pack' ) ),
38
  'edit_blocks' => array( 'name' => __( 'Use Custom Blocklists', 'all-in-one-seo-pack' ) ),
39
  'blocklist' => array(
40
  'name' => __( 'User Agent Blocklist', 'all-in-one-seo-pack' ),
@@ -68,14 +66,6 @@ if ( ! class_exists( 'All_in_One_SEO_Pack_Bad_Robots' ) ) {
68
  'condshow' => array( "{$this->prefix}track_blocks" => 'on' ),
69
  ),
70
  );
71
- $is_apache = false;
72
- if ( ! empty( $_SERVER['SERVER_SOFTWARE'] ) && stristr( $_SERVER['SERVER_SOFTWARE'], 'Apache' ) !== false ) {
73
- $is_apache = true;
74
- add_action( $this->prefix . 'settings_update', array( $this, 'generate_htaccess_blocklist' ), 10 );
75
- } else {
76
- unset( $this->default_options['htaccess_rules'] );
77
- unset( $help_text['htaccess_rules'] );
78
- }
79
 
80
  if ( ! empty( $help_text ) ) {
81
  foreach ( $help_text as $k => $v ) {
@@ -137,52 +127,6 @@ if ( ! class_exists( 'All_in_One_SEO_Pack_Bad_Robots' ) ) {
137
 
138
  }
139
 
140
- function generate_htaccess_blocklist() {
141
- if ( ! $this->option_isset( 'htaccess_rules' ) ) {
142
-
143
- if ( insert_with_markers( get_home_path() . '.htaccess', $this->name, '' ) ) {
144
- aioseop_output_notice( __( 'Updated .htaccess rules.', 'all-in-one-seo-pack' ) );
145
- } else {
146
- aioseop_output_notice( __( 'Failed to update .htaccess rules!', 'all-in-one-seo-pack' ), '', 'error' );
147
- }
148
-
149
- return;
150
-
151
- }
152
-
153
- if ( function_exists( 'apache_get_modules' ) ) {
154
- $modules = apache_get_modules();
155
- foreach ( array( 'mod_authz_host', 'mod_setenvif' ) as $m ) {
156
- if ( ! in_array( $m, $modules ) ) {
157
- aioseop_output_notice( sprintf( __( 'Apache module %s is required!', 'all-in-one-seo-pack' ), $m ), '', 'error' );
158
- }
159
- }
160
- }
161
- $botlist = $this->default_bad_bots();
162
- $botlist = apply_filters( $this->prefix . 'badbotlist', $botlist );
163
- if ( ! empty( $botlist ) ) {
164
- $regex = $this->quote_list_for_regex( $botlist, '"' );
165
- $htaccess = array();
166
- $htaccess[] = 'SetEnvIfNoCase User-Agent "' . $regex . '" bad_bot';
167
- if ( $this->option_isset( 'edit_blocks' ) && $this->option_isset( 'block_refer' ) && $this->option_isset( 'referlist' ) ) {
168
- $referlist = $this->default_bad_referers();
169
- $referlist = apply_filters( $this->prefix . 'badreferlist', $botlist );
170
- if ( ! empty( $referlist ) ) {
171
- $regex = $this->quote_list_for_regex( $referlist, '"' );
172
- $htaccess[] = 'SetEnvIfNoCase Referer "' . $regex . '" bad_bot';
173
- }
174
- }
175
- $htaccess[] = 'Deny from env=bad_bot';
176
- if ( insert_with_markers( get_home_path() . '.htaccess', $this->name, $htaccess ) ) {
177
- aioseop_output_notice( __( 'Updated .htaccess rules.', 'all-in-one-seo-pack' ) );
178
- } else {
179
- aioseop_output_notice( __( 'Failed to update .htaccess rules!', 'all-in-one-seo-pack' ), '', 'error' );
180
- }
181
- } else {
182
- aioseop_output_notice( __( 'No rules to update!', 'all-in-one-seo-pack' ), '', 'error' );
183
- }
184
- }
185
-
186
  /**
187
  * @param $referlist
188
  *
23
  'block_bots' => __( 'Block requests from user agents that are known to misbehave with 503.', 'all-in-one-seo-pack' ),
24
  'block_refer' => __( 'Block Referral Spam using HTTP.', 'all-in-one-seo-pack' ),
25
  'track_blocks' => __( 'Log and show recent requests from blocked bots.', 'all-in-one-seo-pack' ),
 
26
  'edit_blocks' => __( 'Check this to edit the list of disallowed user agents for blocking bad bots.', 'all-in-one-seo-pack' ),
27
  'blocklist' => __( 'This is the list of disallowed user agents used for blocking bad bots.', 'all-in-one-seo-pack' ),
28
  'referlist' => __( 'This is the list of disallowed referers used for blocking bad bots.', 'all-in-one-seo-pack' ),
33
  'block_bots' => array( 'name' => __( 'Block Bad Bots using HTTP', 'all-in-one-seo-pack' ) ),
34
  'block_refer' => array( 'name' => __( 'Block Referral Spam using HTTP', 'all-in-one-seo-pack' ) ),
35
  'track_blocks' => array( 'name' => __( 'Track Blocked Bots', 'all-in-one-seo-pack' ) ),
 
36
  'edit_blocks' => array( 'name' => __( 'Use Custom Blocklists', 'all-in-one-seo-pack' ) ),
37
  'blocklist' => array(
38
  'name' => __( 'User Agent Blocklist', 'all-in-one-seo-pack' ),
66
  'condshow' => array( "{$this->prefix}track_blocks" => 'on' ),
67
  ),
68
  );
 
 
 
 
 
 
 
 
69
 
70
  if ( ! empty( $help_text ) ) {
71
  foreach ( $help_text as $k => $v ) {
127
 
128
  }
129
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
130
  /**
131
  * @param $referlist
132
  *
modules/aioseop_opengraph.php CHANGED
@@ -938,6 +938,8 @@ if ( ! class_exists( 'All_in_One_SEO_Pack_Opengraph' ) ) {
938
  $social_links = $this->options['aiosp_opengraph_profile_links'];
939
  if ( ! empty( $this->options['aiosp_opengraph_social_name'] ) ) {
940
  $social_name = $this->options['aiosp_opengraph_social_name'];
 
 
941
  }
942
  if ( $this->options['aiosp_opengraph_person_or_org'] == 'person' ) {
943
  $social_type = "Person";
938
  $social_links = $this->options['aiosp_opengraph_profile_links'];
939
  if ( ! empty( $this->options['aiosp_opengraph_social_name'] ) ) {
940
  $social_name = $this->options['aiosp_opengraph_social_name'];
941
+ }else{
942
+ $social_name = '';
943
  }
944
  if ( $this->options['aiosp_opengraph_person_or_org'] == 'person' ) {
945
  $social_type = "Person";
modules/aioseop_sitemap.php CHANGED
@@ -2909,6 +2909,16 @@ if ( ! class_exists( 'All_in_One_SEO_Pack_Sitemap' ) ) {
2909
  if ( defined( 'ICL_SITEPRESS_VERSION' ) ) {
2910
  $defaults['suppress_filters'] = false;
2911
  }
 
 
 
 
 
 
 
 
 
 
2912
  $args = wp_parse_args( $args, $defaults );
2913
  if ( empty( $args['post_type'] ) ) {
2914
  return apply_filters( $this->prefix . 'post_filter', array(), $args );
2909
  if ( defined( 'ICL_SITEPRESS_VERSION' ) ) {
2910
  $defaults['suppress_filters'] = false;
2911
  }
2912
+
2913
+ /*
2914
+ * Filter to exclude password protected posts.
2915
+ * TODO: move to its own function and call it from here, returning whatever is appropriate.
2916
+ * @since 2.3.12
2917
+ */
2918
+ if ( apply_filters( 'aioseop_sitemap_include_password_posts', true ) === false ) {
2919
+ $defaults['has_password'] = false;
2920
+ }
2921
+
2922
  $args = wp_parse_args( $args, $defaults );
2923
  if ( empty( $args['post_type'] ) ) {
2924
  return apply_filters( $this->prefix . 'post_filter', array(), $args );
readme.txt CHANGED
@@ -4,11 +4,11 @@ Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=mrtor
4
  Tags: seo, all in one seo, google, twitter, page, image seo, social, search engine optimization, sitemap, WordPress SEO, meta, meta description, xml sitemap, google sitemap, sitemaps, robots meta, yahoo, bing, news sitemaps, multisite, canonical, nofollow, noindex, keywords, description, webmaster tools, google webmaster tools, google analytics
5
  Requires at least: 4.0
6
  Tested up to: 4.7
7
- Stable tag: 2.3.11.1
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
11
- One of the most downloaded WordPress plugins (over 30 million downloads since 2007). Use All in One SEO Pack to optimize your site for Search Engines.
12
 
13
  == Description ==
14
 
4
  Tags: seo, all in one seo, google, twitter, page, image seo, social, search engine optimization, sitemap, WordPress SEO, meta, meta description, xml sitemap, google sitemap, sitemaps, robots meta, yahoo, bing, news sitemaps, multisite, canonical, nofollow, noindex, keywords, description, webmaster tools, google webmaster tools, google analytics
5
  Requires at least: 4.0
6
  Tested up to: 4.7
7
+ Stable tag: 2.3.11.2
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
11
+ The original SEO plugin for WordPress, downloaded over 30,000,000 times since 2007.
12
 
13
  == Description ==
14