SEOPress - Version 3.9.1

Version Description

  • FIX Fatal error: Cannot redeclare seopress_title_columns()
Download this release

Release Info

Developer rainbowgeek
Plugin Icon 128x128 SEOPress
Version 3.9.1
Comparing to
See all releases

Code changes from version 3.9 to 3.9.1

Files changed (3) hide show
  1. inc/functions/options-advanced-admin.php +183 -182
  2. readme.txt +81 -60
  3. seopress.php +2 -2
inc/functions/options-advanced-admin.php CHANGED
@@ -387,208 +387,209 @@ if (seopress_advanced_appearance_title_col_option() !=''
387
  }
388
  }
389
  }
390
-
391
- function seopress_title_columns($columns) {
392
- if(seopress_advanced_appearance_title_col_option() !='') {
393
- $columns['seopress_title'] = __('Title tag', 'wp-seopress');
394
- }
395
- if(seopress_advanced_appearance_meta_desc_col_option() !='') {
396
- $columns['seopress_desc'] = __('Meta Desc.', 'wp-seopress');
397
- }
398
- if(seopress_advanced_appearance_redirect_enable_col_option() !='') {
399
- $columns['seopress_redirect_enable'] = __('Redirect?', 'wp-seopress');
400
- }
401
- if(seopress_advanced_appearance_redirect_url_col_option() !='') {
402
- $columns['seopress_redirect_url'] = __('Redirect URL', 'wp-seopress');
403
- }
404
- if(seopress_advanced_appearance_canonical_option() !='') {
405
- $columns['seopress_canonical'] = __('Canonical', 'wp-seopress');
406
- }
407
- if(seopress_advanced_appearance_target_kw_col_option() !='') {
408
- $columns['seopress_tkw'] = __('Target Kw', 'wp-seopress');
409
- }
410
- if(seopress_advanced_appearance_noindex_col_option() !='') {
411
- $columns['seopress_noindex'] = __('Noindex?', 'wp-seopress');
412
- }
413
- if(seopress_advanced_appearance_nofollow_col_option() !='') {
414
- $columns['seopress_nofollow'] = __('Nofollow?', 'wp-seopress');
415
- }
416
- if(seopress_advanced_appearance_score_col_option() !='') {
417
- $columns['seopress_score'] = __('Score', 'wp-seopress');
418
- }
419
- if(seopress_advanced_appearance_words_col_option() !='') {
420
- $columns['seopress_words'] = __('Words', 'wp-seopress');
421
- }
422
- if(seopress_advanced_appearance_w3c_col_option() !='') {
423
- $columns['seopress_w3c'] = __('W3C check', 'wp-seopress');
424
- }
425
- if(seopress_advanced_appearance_ps_col_option() !='') {
426
- $columns['seopress_ps'] = __('Page Speed', 'wp-seopress');
427
- }
428
- if(seopress_advanced_appearance_insights_col_option() !='') {
429
- $columns['seopress_insights'] = __('Insights', 'wp-seopress');
430
- }
431
- return $columns;
432
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
433
 
434
- function seopress_title_display_column($column, $post_id) {
435
- switch ( $column ) {
436
- case 'seopress_title' :
437
- echo '<div id="seopress_title-' . esc_attr($post_id) . '">'.esc_html(get_post_meta($post_id, "_seopress_titles_title", true)).'</div>';
438
- break;
439
 
440
- case 'seopress_desc';
441
- echo '<div id="seopress_desc-' . esc_attr($post_id) . '">'.esc_html(get_post_meta($post_id, "_seopress_titles_desc", true)).'</div>';
442
- break;
443
 
444
- case 'seopress_redirect_enable';
445
- if (get_post_meta($post_id, "_seopress_redirections_enabled", true) =='yes') {
446
- echo '<div id="seopress_redirect_enable-' . esc_attr($post_id) . '"><span class="dashicons dashicons-yes"></span></div>';
447
- }
448
- break;
449
- case 'seopress_redirect_url';
450
- echo '<div id="seopress_redirect_url-' . esc_attr($post_id) . '">'.esc_html(get_post_meta($post_id, "_seopress_redirections_value", true)).'</div>';
451
- break;
452
-
453
- case 'seopress_canonical';
454
- echo '<div id="seopress_canonical-' . esc_attr($post_id) . '">'.esc_html(get_post_meta($post_id, "_seopress_robots_canonical", true)).'</div>';
455
- break;
456
-
457
- case 'seopress_tkw' :
458
- echo '<div id="seopress_tkw-' . esc_attr($post_id) . '">'.esc_html(get_post_meta($post_id, "_seopress_analysis_target_kw", true)).'</div>';
459
- break;
460
-
461
- case 'seopress_noindex' :
462
- if (get_post_meta($post_id, "_seopress_robots_index", true) =='yes') {
463
- echo '<span class="dashicons dashicons-yes"></span>';
464
- }
465
- break;
466
 
467
- case 'seopress_nofollow' :
468
- if (get_post_meta($post_id, "_seopress_robots_follow", true) =='yes') {
469
- echo '<span class="dashicons dashicons-yes"></span>';
470
- }
471
- break;
472
 
473
- case 'seopress_words' :
474
- if (get_the_content() !='') {
475
- $seopress_analysis_data['words_counter'] = preg_match_all("/\p{L}[\p{L}\p{Mn}\p{Pd}'\x{2019}]*/u", strip_tags(wp_filter_nohtml_kses(get_the_content())), $matches);
476
 
477
- echo $seopress_analysis_data['words_counter'];
478
- }
479
- break;
 
 
480
 
481
- case 'seopress_w3c' :
482
- echo '<a class="seopress-button" href="https://validator.w3.org/nu/?doc='.esc_url(get_the_permalink()).'" title="'.esc_attr(__('Check code quality of this page','wp-seopress')).'" target="_blank"><span class="dashicons dashicons-clipboard"></span></a>';
483
- break;
 
 
484
 
485
- case 'seopress_ps' :
486
- echo '<div class="seopress-request-page-speed seopress-button" data_permalink="'.esc_url(get_the_permalink()).'" title="'.esc_attr(__('Analyze this page with Google Page Speed','wp-seopress')).'"><span class="dashicons dashicons-dashboard"></span></div>';
487
- break;
488
-
489
- case 'seopress_score' :
490
- if (get_post_meta($post_id, "_seopress_analysis_data")) {
491
- $ca = get_post_meta($post_id, "_seopress_analysis_data");
492
- echo '<div class="analysis-score">';
493
- if (isset($ca[0]["score"]) && $ca[0]["score"] == 1) {
494
- echo '<p><svg role="img" aria-hidden="true" focusable="false" width="100%" height="100%" viewBox="0 0 200 200" version="1.1" xmlns="http://www.w3.org/2000/svg">
495
- <circle r="90" cx="100" cy="100" fill="transparent" stroke-dasharray="565.48" stroke-dashoffset="0"></circle>
496
- <circle id="bar" class="good" r="90" cx="100" cy="100" fill="transparent" stroke-dasharray="565.48" stroke-dashoffset="0" style="stroke-dashoffset: 50.8938px;"></circle>
497
- </svg><span class="screen-reader-text">'.__('Good','wp-seopress').'</span></p>';
498
- } elseif (isset($ca[0]["score"]) && $ca[0]["score"] =='') {
499
- echo '<p><svg role="img" aria-hidden="true" focusable="false" width="100%" height="100%" viewBox="0 0 200 200" version="1.1" xmlns="http://www.w3.org/2000/svg">
500
- <circle r="90" cx="100" cy="100" fill="transparent" stroke-dasharray="565.48" stroke-dashoffset="0"></circle>
501
- <circle id="bar" class="notgood" r="90" cx="100" cy="100" fill="transparent" stroke-dasharray="565.48" stroke-dashoffset="0" style="stroke-dashoffset: 101.788px;"></circle>
502
- </svg><span class="screen-reader-text">'.__('Should be improved','wp-seopress').'</span></p>';
503
- }
504
- echo '</div>';
505
- }
506
- break;
507
-
508
- case 'seopress_insights' :
509
- if ( is_plugin_active( 'wp-seopress-insights/seopress-insights.php' ) ) {
510
- foreach( seopress_insights_query_all_rankings() as $key => $value ) {
511
- if( !empty( $value ) && $value['url'] == get_the_permalink( $post_id ) ) {
512
- $rankings[$value['ts']][] = [
513
- 'keyword' => get_the_title(),
514
- 'p' => $value['p'],
515
- 'url' => $value['url'],
516
- 'search_volume' => $value['search_volume'],
517
- 'cpc' => $value['cpc'],
518
- 'competition' => $value['competition'],
519
- 'date' => date('Y/m/d',$value['ts']),
520
- ];
521
- }
522
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
523
 
524
- if ( !empty( $rankings ) ) {
525
-
526
- foreach( $rankings as $key => $value ) {
527
- $avg_pos[] = $value[0]['p'];
528
- $kws[] = $value[0]['keyword'];
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
529
  }
530
-
531
- echo '<div class="wrap-insights-post">';
532
-
533
- echo '<p><span class="dashicons dashicons-chart-line"></span>';
 
 
 
 
534
 
535
- if ( !empty( $kws ) ) {
536
-
537
- $kws = array_unique($kws);
538
-
539
- $html = '<ul>';
540
- foreach( $kws as $kw ) {
541
- $html .= '<li><span class="dashicons dashicons-minus"></span>' . $kw . '</li>';
 
 
 
 
 
542
  }
543
- $html .= '</ul>';
544
-
545
- echo seopress_tooltip( __( 'Insights from these keywords:', 'wp-seopress-insights' ), sprintf( '%s', $html ), '' );
546
  }
547
-
548
  echo '</p>';
549
-
550
- //Average position
551
- echo '<p class="widget-insights-title">'. __( 'Average position: ', 'wp-seopress-insights' ) . '</p>';
552
-
553
- if ( !empty($avg_pos ) ) {
554
- echo '<p>';
555
-
556
- echo '<span>' . round( array_sum( $avg_pos ) / count( $avg_pos ), 2 ) . '</span>';
557
-
558
- //Variation
559
- if ( isset( $avg_pos[0]) && $avg_pos[1] ) {
560
- $p_variation = $avg_pos[0] - $avg_pos[1];
561
-
562
- if ($avg_pos[0] < $avg_pos[1]) {
563
- $p_variation_rel = '<span class="up"><span class="dashicons dashicons-arrow-up-alt"></span> '. abs( $p_variation ) . '</span>';
564
- } elseif ($avg_pos[0] == $avg_pos[1]) {
565
- $p_variation_rel = '<span class="stable">=</span>';
566
- } else {
567
- $p_variation_rel = '<span class="down"><span class="dashicons dashicons-arrow-up-alt"></span> ' . abs( $p_variation ) . '</span>';
568
- }
569
-
570
- echo $p_variation_rel;
571
- }
572
-
573
- echo '</p>';
574
- }
575
-
576
- //Latest position
577
- echo '<p class="widget-insights-title">'. __( 'Latest position: ', 'wp-seopress-insights' ) .'</p>';
578
-
579
- $p = array_key_first($rankings);
580
- echo '<p><span>' . $rankings[$p][0]['p'] . '</span></p>';
581
- echo '</div>';
582
- }
583
  }
584
- break;
585
-
586
- default :
587
- break;
588
- }
589
  }
590
  }
591
 
 
592
 
593
  //Sortable columns
594
  foreach (seopress_get_post_types() as $key => $value) {
387
  }
388
  }
389
  }
390
+ }
391
+
392
+ function seopress_title_columns($columns) {
393
+ if(seopress_advanced_appearance_title_col_option() !='') {
394
+ $columns['seopress_title'] = __('Title tag', 'wp-seopress');
395
+ }
396
+ if(seopress_advanced_appearance_meta_desc_col_option() !='') {
397
+ $columns['seopress_desc'] = __('Meta Desc.', 'wp-seopress');
398
+ }
399
+ if(seopress_advanced_appearance_redirect_enable_col_option() !='') {
400
+ $columns['seopress_redirect_enable'] = __('Redirect?', 'wp-seopress');
401
+ }
402
+ if(seopress_advanced_appearance_redirect_url_col_option() !='') {
403
+ $columns['seopress_redirect_url'] = __('Redirect URL', 'wp-seopress');
404
+ }
405
+ if(seopress_advanced_appearance_canonical_option() !='') {
406
+ $columns['seopress_canonical'] = __('Canonical', 'wp-seopress');
407
+ }
408
+ if(seopress_advanced_appearance_target_kw_col_option() !='') {
409
+ $columns['seopress_tkw'] = __('Target Kw', 'wp-seopress');
410
+ }
411
+ if(seopress_advanced_appearance_noindex_col_option() !='') {
412
+ $columns['seopress_noindex'] = __('Noindex?', 'wp-seopress');
413
+ }
414
+ if(seopress_advanced_appearance_nofollow_col_option() !='') {
415
+ $columns['seopress_nofollow'] = __('Nofollow?', 'wp-seopress');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
416
  }
417
+ if(seopress_advanced_appearance_score_col_option() !='') {
418
+ $columns['seopress_score'] = __('Score', 'wp-seopress');
419
+ }
420
+ if(seopress_advanced_appearance_words_col_option() !='') {
421
+ $columns['seopress_words'] = __('Words', 'wp-seopress');
422
+ }
423
+ if(seopress_advanced_appearance_w3c_col_option() !='') {
424
+ $columns['seopress_w3c'] = __('W3C check', 'wp-seopress');
425
+ }
426
+ if(seopress_advanced_appearance_ps_col_option() !='') {
427
+ $columns['seopress_ps'] = __('Page Speed', 'wp-seopress');
428
+ }
429
+ if(seopress_advanced_appearance_insights_col_option() !='') {
430
+ $columns['seopress_insights'] = __('Insights', 'wp-seopress');
431
+ }
432
+ return $columns;
433
+ }
434
 
435
+ function seopress_title_display_column($column, $post_id) {
436
+ switch ( $column ) {
437
+ case 'seopress_title' :
438
+ echo '<div id="seopress_title-' . esc_attr($post_id) . '">'.esc_html(get_post_meta($post_id, "_seopress_titles_title", true)).'</div>';
439
+ break;
440
 
441
+ case 'seopress_desc';
442
+ echo '<div id="seopress_desc-' . esc_attr($post_id) . '">'.esc_html(get_post_meta($post_id, "_seopress_titles_desc", true)).'</div>';
443
+ break;
444
 
445
+ case 'seopress_redirect_enable';
446
+ if (get_post_meta($post_id, "_seopress_redirections_enabled", true) =='yes') {
447
+ echo '<div id="seopress_redirect_enable-' . esc_attr($post_id) . '"><span class="dashicons dashicons-yes"></span></div>';
448
+ }
449
+ break;
450
+ case 'seopress_redirect_url';
451
+ echo '<div id="seopress_redirect_url-' . esc_attr($post_id) . '">'.esc_html(get_post_meta($post_id, "_seopress_redirections_value", true)).'</div>';
452
+ break;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
453
 
454
+ case 'seopress_canonical';
455
+ echo '<div id="seopress_canonical-' . esc_attr($post_id) . '">'.esc_html(get_post_meta($post_id, "_seopress_robots_canonical", true)).'</div>';
456
+ break;
 
 
457
 
458
+ case 'seopress_tkw' :
459
+ echo '<div id="seopress_tkw-' . esc_attr($post_id) . '">'.esc_html(get_post_meta($post_id, "_seopress_analysis_target_kw", true)).'</div>';
460
+ break;
461
 
462
+ case 'seopress_noindex' :
463
+ if (get_post_meta($post_id, "_seopress_robots_index", true) =='yes') {
464
+ echo '<span class="dashicons dashicons-yes"></span>';
465
+ }
466
+ break;
467
 
468
+ case 'seopress_nofollow' :
469
+ if (get_post_meta($post_id, "_seopress_robots_follow", true) =='yes') {
470
+ echo '<span class="dashicons dashicons-yes"></span>';
471
+ }
472
+ break;
473
 
474
+ case 'seopress_words' :
475
+ if (get_the_content() !='') {
476
+ $seopress_analysis_data['words_counter'] = preg_match_all("/\p{L}[\p{L}\p{Mn}\p{Pd}'\x{2019}]*/u", strip_tags(wp_filter_nohtml_kses(get_the_content())), $matches);
477
+
478
+ echo $seopress_analysis_data['words_counter'];
479
+ }
480
+ break;
481
+
482
+ case 'seopress_w3c' :
483
+ echo '<a class="seopress-button" href="https://validator.w3.org/nu/?doc='.esc_url(get_the_permalink()).'" title="'.esc_attr(__('Check code quality of this page','wp-seopress')).'" target="_blank"><span class="dashicons dashicons-clipboard"></span></a>';
484
+ break;
485
+
486
+ case 'seopress_ps' :
487
+ echo '<div class="seopress-request-page-speed seopress-button" data_permalink="'.esc_url(get_the_permalink()).'" title="'.esc_attr(__('Analyze this page with Google Page Speed','wp-seopress')).'"><span class="dashicons dashicons-dashboard"></span></div>';
488
+ break;
489
+
490
+ case 'seopress_score' :
491
+ if (get_post_meta($post_id, "_seopress_analysis_data")) {
492
+ $ca = get_post_meta($post_id, "_seopress_analysis_data");
493
+ echo '<div class="analysis-score">';
494
+ if (isset($ca[0]["score"]) && $ca[0]["score"] == 1) {
495
+ echo '<p><svg role="img" aria-hidden="true" focusable="false" width="100%" height="100%" viewBox="0 0 200 200" version="1.1" xmlns="http://www.w3.org/2000/svg">
496
+ <circle r="90" cx="100" cy="100" fill="transparent" stroke-dasharray="565.48" stroke-dashoffset="0"></circle>
497
+ <circle id="bar" class="good" r="90" cx="100" cy="100" fill="transparent" stroke-dasharray="565.48" stroke-dashoffset="0" style="stroke-dashoffset: 50.8938px;"></circle>
498
+ </svg><span class="screen-reader-text">'.__('Good','wp-seopress').'</span></p>';
499
+ } elseif (isset($ca[0]["score"]) && $ca[0]["score"] =='') {
500
+ echo '<p><svg role="img" aria-hidden="true" focusable="false" width="100%" height="100%" viewBox="0 0 200 200" version="1.1" xmlns="http://www.w3.org/2000/svg">
501
+ <circle r="90" cx="100" cy="100" fill="transparent" stroke-dasharray="565.48" stroke-dashoffset="0"></circle>
502
+ <circle id="bar" class="notgood" r="90" cx="100" cy="100" fill="transparent" stroke-dasharray="565.48" stroke-dashoffset="0" style="stroke-dashoffset: 101.788px;"></circle>
503
+ </svg><span class="screen-reader-text">'.__('Should be improved','wp-seopress').'</span></p>';
 
 
 
 
 
 
 
504
  }
505
+ echo '</div>';
506
+ }
507
+ break;
508
+
509
+ case 'seopress_insights' :
510
+ if ( is_plugin_active( 'wp-seopress-insights/seopress-insights.php' ) ) {
511
+ foreach( seopress_insights_query_all_rankings() as $key => $value ) {
512
+ if( !empty( $value ) && $value['url'] == get_the_permalink( $post_id ) ) {
513
+ $rankings[$value['ts']][] = [
514
+ 'keyword' => get_the_title(),
515
+ 'p' => $value['p'],
516
+ 'url' => $value['url'],
517
+ 'search_volume' => $value['search_volume'],
518
+ 'cpc' => $value['cpc'],
519
+ 'competition' => $value['competition'],
520
+ 'date' => date('Y/m/d',$value['ts']),
521
+ ];
522
+ }
523
+ }
524
 
525
+ if ( !empty( $rankings ) ) {
526
+
527
+ foreach( $rankings as $key => $value ) {
528
+ $avg_pos[] = $value[0]['p'];
529
+ $kws[] = $value[0]['keyword'];
530
+ }
531
+
532
+ echo '<div class="wrap-insights-post">';
533
+
534
+ echo '<p><span class="dashicons dashicons-chart-line"></span>';
535
+
536
+ if ( !empty( $kws ) ) {
537
+
538
+ $kws = array_unique($kws);
539
+
540
+ $html = '<ul>';
541
+ foreach( $kws as $kw ) {
542
+ $html .= '<li><span class="dashicons dashicons-minus"></span>' . $kw . '</li>';
543
+ }
544
+ $html .= '</ul>';
545
+
546
+ echo seopress_tooltip( __( 'Insights from these keywords:', 'wp-seopress-insights' ), sprintf( '%s', $html ), '' );
547
  }
548
+
549
+ echo '</p>';
550
+
551
+ //Average position
552
+ echo '<p class="widget-insights-title">'. __( 'Average position: ', 'wp-seopress-insights' ) . '</p>';
553
+
554
+ if ( !empty($avg_pos ) ) {
555
+ echo '<p>';
556
 
557
+ echo '<span>' . round( array_sum( $avg_pos ) / count( $avg_pos ), 2 ) . '</span>';
558
+
559
+ //Variation
560
+ if ( isset( $avg_pos[0]) && $avg_pos[1] ) {
561
+ $p_variation = $avg_pos[0] - $avg_pos[1];
562
+
563
+ if ($avg_pos[0] < $avg_pos[1]) {
564
+ $p_variation_rel = '<span class="up"><span class="dashicons dashicons-arrow-up-alt"></span> '. abs( $p_variation ) . '</span>';
565
+ } elseif ($avg_pos[0] == $avg_pos[1]) {
566
+ $p_variation_rel = '<span class="stable">=</span>';
567
+ } else {
568
+ $p_variation_rel = '<span class="down"><span class="dashicons dashicons-arrow-up-alt"></span> ' . abs( $p_variation ) . '</span>';
569
  }
570
+
571
+ echo $p_variation_rel;
 
572
  }
573
+
574
  echo '</p>';
575
+ }
576
+
577
+ //Latest position
578
+ echo '<p class="widget-insights-title">'. __( 'Latest position: ', 'wp-seopress-insights' ) .'</p>';
579
+
580
+ $p = array_key_first($rankings);
581
+ echo '<p><span>' . $rankings[$p][0]['p'] . '</span></p>';
582
+ echo '</div>';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
583
  }
584
+ }
585
+ break;
586
+
587
+ default :
588
+ break;
589
  }
590
  }
591
 
592
+
593
 
594
  //Sortable columns
595
  foreach (seopress_get_post_types() as $key => $value) {
readme.txt CHANGED
@@ -2,11 +2,11 @@
2
  Authors: rainbowgeek
3
  Contributors: rainbowgeek, juliobox, maigret, mgris, gmulti
4
  Donate link: https://www.seopress.org/
5
- Tags: SEO, XML sitemap, meta title, open graph, content analysis, knowledge graph, redirection, breadcrumbs, google analytics, rich snippets, broken link checker, Schema.org
6
  Requires at least: 4.7+
7
  Tested up to: 5.5
8
  Requires PHP: 5.6
9
- Stable tag: 3.9
10
  License: GPLv2 or later
11
  License URI: https://www.gnu.org/licenses/gpl-2.0.html
12
 
@@ -21,49 +21,59 @@ SEOPress is a powerful WordPress SEO plugin to optimize your SEO, boost your tra
21
  ✔ <strong>Import your post and term metadatas from other plugins in 1 click</strong>
22
  ✔ <strong>Trusted by 100,000 WordPress websites since 2017.</strong>
23
 
24
- <a href="https://www.seopress.org/seopress-pro?utm_source=w.org&utm_campaign=seopress&utm_medium=readme" target="_blank"><strong>Buy SEOPress PRO: only $39 / year / unlimited sites</strong></a>
25
 
26
  [youtube https://www.youtube.com/watch?v=FwaJA5MY6sc]
27
 
 
 
 
 
 
 
 
 
 
 
 
28
  <h3>SEOPress Free Features</h3>
29
 
30
  <ul>
31
- <li>Installation wizard to quickly setup your site</li>
32
- <li>Titles (with dynamic variables: custom fields, terms taxonomie...)</li>
33
- <li>Meta descriptions (with dynamic variables too)</li>
34
- <li>Open Graph and Twitter Cards to improve social media sharing (Facebook, LinkedIn, Instagram, Twitter, Pinterest, WhatsApp...)</li>
35
- <li>Google Knowledge Graph</li>
36
- <li><strong>Google Analytics</strong> and <strong>Matomo</strong> with downloads tracking, custom dimensions, ip anonymization, remarketing, demographics and interest reporting, cross-domain tracking...(<a href="https://www.seopress.org/features/seopress-white-label/" target="_blank">GDPR compatibility</a>)</li>
37
- <li>Canonical URL</li>
38
- <li>Meta robots (noindex, nofollow, noodp, noimageindex, noarchive, nosnippet)</li>
39
- <li>Build your custom XML Sitemap to improve search indexing</li>
40
- <li>Image XML Sitemaps to improve search indexing for Google Images</li>
41
- <li>Build your custom HTML Sitemap to enhanced navigation for visitors and improve search indexing</li>
 
 
 
42
  <li>Link your social media accounts to your site</li>
43
- <li>Redirections in post, pages, custom post types</li>
44
  <li>Remove /category/ in URLs</li>
45
  <li>Remove ?replytocom to avoid duplicate content</li>
46
  <li>Redirect attachment pages to post parent</li>
47
  <li>Redirect attachment pages to their file URL</li>
48
- <li>Image SEO: Automatically set the image title / alt / caption / description</li>
49
  <li>Import / Export settings from site to site.</li>
50
  <li>Import posts and terms metadata from Yoast SEO, All In One SEO, SEO Framework, Rank Math, SEO Ultimate, WP Meta SEO, Premium SEO Pack and Squirrly</li>
51
- <li>W3C check</li>
52
- <li>Content analysis to help you write optimized content for search engines</li>
53
- <li>Mobile / Desktop Google Preview</li>
54
- <li>Facebook Preview</li>
55
- <li>Twitter Preview</li>
56
  <li>...</li>
57
  </ul>
58
 
 
 
59
  <h3>SEOPress PRO: to go further with your SEO</h3>
60
 
61
  <ul>
62
- <li>Import metadata (titles, open graph, robots...) from CSV file</li>
63
- <li>Export metadata (titles, open graph, robots...) to a CSV file</li>
64
- <li>Video XML Sitemap to improve rankings in video search results</li>
65
- <li>Google Suggestions in Content Analysis</li>
66
- <li><a href="https://www.seopress.org/features/google-structured-data-types/" target="_blank">Google Structured Data types (schema.org)</a>:
67
  <ol>
68
  <li>article schema</li>
69
  <li>local business schema</li>
@@ -80,31 +90,32 @@ SEOPress is a powerful WordPress SEO plugin to optimize your SEO, boost your tra
80
  <li>site navigation element schema</li>
81
  <li>custom schema</li>
82
  </ol>
83
- <li>Automatic Schemas with advanced conditions (AND, OR, Post types, taxonomies)</li>
84
- <li>Breadcrumbs optimized with Schema.org, A11Y ready</li>
85
- <li>Google Analytics Stats in Dashboard</li>
86
- <li>Google Local Business</li>
87
- <li>Broken link checker (SEOPress BOT): scan all your links in content to find errors (eg: 404...)</li>
88
- <li>WooCommerce: Product Global Identifiers type and Product Global Identifiers fields to WooCommerce metabox for product schema (barcode), disable crawling on cart page, checkout page, customer account pages, add OG Price / OG Currency for better sharing and more</li>
89
- <li>Easy Digital Downloads: add OG Price / OG Currency, remove EDD meta generator</li>
90
- <li>Dublin Core meta tags</li>
91
- <li>Custom Breadcrumbs for single post types / term taxonomy</li>
92
- <li>Google Page Speed to analyse your site performances</li>
93
- <li>Google Analytics Events: track external links, downloads (PDF, DOCX...), affiliate links...</li>
94
- <li>Google Enhanced Ecommerce: measure purchases, additions to and removals from shopping carts</li>
95
- <li>Edit your robots.txt file from the admin (multisite / multidomain ready)</li>
96
- <li>Google News Sitemap to get your posts on Google News</li>
97
- <li>404 Monitoring</li>
98
- <li>Redirect 404 to homepage/custom url automatically with custom status code (301, 302, 307, 410 or 451)</li>
99
  <li>Email notifications on 404</li>
100
- <li>301, 302 and 307 Redirections</li>
101
  <li>Import redirections using CSV</li>
102
  <li>Import redirections from Redirections plugin (via a JSON file)</li>
103
- <li>Edit your htaccess file from the admin</li>
104
- <li>Easily customize your RSS feeds</li>
 
105
  </ul>
106
 
107
- <h4><a href="https://www.seopress.org/seopress-pro?utm_source=w.org&utm_campaign=seopress&utm_medium=readme" target="_blank"><strong>Buy SEOPress PRO now!</strong></a></h4>
108
 
109
  <h3>WooCommerce SEO (SEOPress PRO required)</h3>
110
  We support WooCommerce and Easy Digital Downloads for e-commerce sites.
@@ -122,8 +133,14 @@ We support WooCommerce and Easy Digital Downloads for e-commerce sites.
122
  <li>...</li>
123
  </ul>
124
 
125
- <h3>Translations</h3>
 
 
126
 
 
 
 
 
127
  <ul>
128
  <li>🇺🇸 English (UK) (English (UK)) - professional translation</li>
129
  <li>🇫🇷 Français (French (France)) - professional translation</li>
@@ -147,6 +164,8 @@ We support WooCommerce and Easy Digital Downloads for e-commerce sites.
147
  <li>...</li>
148
  </ul>
149
 
 
 
150
  <h3>SEOPress integrates seamlessly with popular e-commerce, translation, performance and analytics tools.</h3>
151
  <ul>
152
  <li>WPML</li>
@@ -165,29 +184,29 @@ We support WooCommerce and Easy Digital Downloads for e-commerce sites.
165
  <li>...</li>
166
  </ul>
167
 
168
- <a href="https://www.seopress.org/integrations/" target="_blank">All our integrations</a>
169
 
170
  <h3>Import your post and term metadata from other SEO plugins in 1-click</h3>
171
  <ul>
172
- <li><a href="https://www.seopress.org/support/guides/import-post-terms-metadatas-yoast-seo-seopress/" target="_blank">Yoast SEO</a></li>
173
- <li><a href="https://www.seopress.org/support/guides/import-post-and-terms-metadatas-from-all-in-one-seo-to-seopress/" target="_blank">All In One SEO</a></li>
174
- <li><a href="https://www.seopress.org/support/guides/import-post-and-terms-metadatas-from-the-seo-framework-to-seopress/" target="_blank">SEO Framework</a></li>
175
- <li><a href="https://www.seopress.org/support/guides/import-post-terms-metadatas-rank-math-seo-seopress/" target="_blank">Rank Math</a></li>
176
- <li><a href="https://www.seopress.org/support/guides/import-post-metadata-from-seo-ultimate-to-seopress/" target="_blank">SEO Ultimate</a></li>
177
- <li><a href="https://www.seopress.org/support/guides/import-post-and-terms-metadata-from-wp-meta-seo-to-seopress/" target="_blank">WP Meta SEO</a></li>
178
- <li><a href="https://www.seopress.org/support/guides/import-post-and-terms-metadata-from-premium-seo-pack-to-seopress/" target="_blank">Premium SEO Pack</a></li>
179
- <li><a href="https://www.seopress.org/support/guides/import-post-metadatas-from-squirrly-to-seopress/" target="_blank">Squirrly</a></li>
180
  </ul>
181
 
182
  <h3>Help and support</h3>
183
  <ul>
184
- <li><a href="https://www.seopress.org/support/" target="_blank">Documentation center</a></li>
185
  <li><a href="https://www.facebook.com/groups/seopress/" target="_blank">Join our SEOPress official community group</a></li>
186
  <li><a href="https://www.youtube.com/seopress" target="_blank">Our SEOPress YouTube Channel</a></li>
187
- <li><a href="https://www.seopress.org/account/your-tickets/" target="_blank">Email (PRO only)</a></li>
188
  </ul>
189
 
190
- <h3>Featured on</h3>
191
  <ul>
192
  <li>WP Beginner</li>
193
  <li>HubSpot</li>
@@ -205,7 +224,7 @@ We support WooCommerce and Easy Digital Downloads for e-commerce sites.
205
  <li>...</li>
206
  </ul>
207
 
208
- <a href="https://www.seopress.org/press/" target="_blank">Complete list on our Press page</a>
209
 
210
  <h3>Our website:</h3>
211
  Any questions? Visit our website <a href="https://www.seopress.org?utm_source=w.org&utm_campaign=seopress&utm_medium=readme" target="_blank">seopress.org</a>
@@ -273,6 +292,8 @@ You're theme is probably using a deprecated function to handle the title. <a hre
273
  7. Installation Wizard
274
 
275
  == Changelog ==
 
 
276
  = 3.9 <a href="https://www.seopress.org/blog/elementor-integration-seopress-3-9/">Read our Blog post update</a> =
277
  * NEW Free Elementor integration (first iteration) 🎉
278
  * NEW Automatically set the image Alt text from target keywords if empty (this setting is retroactive, no need to resave your post content)
2
  Authors: rainbowgeek
3
  Contributors: rainbowgeek, juliobox, maigret, mgris, gmulti
4
  Donate link: https://www.seopress.org/
5
+ Tags: SEO, sitemap, schema, content analysis, redirection
6
  Requires at least: 4.7+
7
  Tested up to: 5.5
8
  Requires PHP: 5.6
9
+ Stable tag: 3.9.1
10
  License: GPLv2 or later
11
  License URI: https://www.gnu.org/licenses/gpl-2.0.html
12
 
21
  ✔ <strong>Import your post and term metadatas from other plugins in 1 click</strong>
22
  ✔ <strong>Trusted by 100,000 WordPress websites since 2017.</strong>
23
 
24
+ <a href="https://www.seopress.org/pricing/?utm_source=w.org&utm_campaign=seopress&utm_medium=readme" target="_blank"><strong>Buy SEOPress PRO: only $39 / year / unlimited sites</strong></a>
25
 
26
  [youtube https://www.youtube.com/watch?v=FwaJA5MY6sc]
27
 
28
+ <a href="https://www.seopress.org/features/?utm_source=w.org&utm_campaign=seopress&utm_medium=readme" target="_blank">Features</a> | <a href="https://www.seopress.org/support/guides/import-post-terms-metadatas-yoast-seo-seopress/?utm_source=w.org&utm_campaign=seopress&utm_medium=readme" target="_blank">Migrate</a> | <a href="https://www.seopress.org/pricing/?utm_source=w.org&utm_campaign=seopress&utm_medium=readme" target="_blank">PRO</a> | <a href="https://www.seopress.org/integrations/?utm_source=w.org&utm_campaign=seopress&utm_medium=readme" target="_blank">Integrations</a> | <a href="https://www.seopress.org/support/?utm_source=w.org&utm_campaign=seopress&utm_medium=readme" target="_blank">Support</a> | <a href="https://www.seopress.org/features/seopress-white-label/?utm_source=w.org&utm_campaign=seopress&utm_medium=readme" target="_blank">White Label</a>
29
+
30
+ <h3>Why SEOPress is the best WordPress SEO plugin?</h3>
31
+
32
+ <ul>
33
+ <li><a href="https://www.seopress.org/seopress-productivity/?utm_source=w.org&utm_campaign=seopress&utm_medium=readme"><strong>Save time</strong></a>: you prefer to work with Excel or Google Spreadsheets? No problem, you can import / export your metadata from CSV files with SEOPress PRO in few clicks!</li>
34
+ <li><a href="https://www.seopress.org/pricing/?utm_source=w.org&utm_campaign=seopress&utm_medium=readme"><strong>Save money</strong></a>: SEOPress PRO is available for just $39 / year. Without any sites limit. Yes, you read that right: 1 site or 100 sites, the total price is still $39 / year!</li>
35
+ <li><a href="https://www.seopress.org/features/?utm_source=w.org&utm_campaign=seopress&utm_medium=readme"><strong>All in one SEO plugin</strong></a>: comes with all the features you need to optimize the SEO of your WordPress site. No need to install additional extensions to manage redirects, schemas, XML sitemaps... You reduce the risk of conflicts and maintenance costs. You don't need a special feature? Deactivate it with one click without losing your configuration. Child's play !</li>
36
+ <li><strong>Easy AND ready to use</strong>: you doesn't need to know SEO or code to use SEOPress. Most of the parameters are automatically set. And thanks to our installation wizard, configuring SEOPress has never been easier. To go further, we provide many <a href="https://www.seopress.org/blog/how-to/?utm_source=w.org&utm_campaign=seopress&utm_medium=readme" target="_blank">free tutorials to learn SEO</a> in order to better understand how to position your content on search engines.</li>
37
+ </ul>
38
+
39
  <h3>SEOPress Free Features</h3>
40
 
41
  <ul>
42
+ <li><strong>Installation wizard</strong> to quickly setup your site</li>
43
+ <li><strong>Content analysis</strong> with unlimited keywords to help you write optimized content for search engines</li>
44
+ <li><strong>Mobile / Desktop Google Preview</strong> to see how your post will looks like in Google search results</li>
45
+ <li><strong>Facebook & Twitter Social Preview</strong> to see how your post will looks like on social media to increase conversions</li>
46
+ <li><strong>Titles</strong> (with <a href="https://www.seopress.org/support/guides/manage-titles-meta-descriptions/?utm_source=w.org&utm_campaign=seopress&utm_medium=readme">dynamic variables</a>: custom fields, terms taxonomie...)</li>
47
+ <li><strong>Meta descriptions</strong> (with dynamic variables too)</li>
48
+ <li><strong>Open Graph and Twitter Cards</strong> to improve social media sharing (Facebook, LinkedIn, Instagram, Twitter, Pinterest, WhatsApp...)</li>
49
+ <li><strong>Google Knowledge Graph</strong></li>
50
+ <li><a href="https://www.seopress.org/features/google-analytics/?utm_source=w.org&utm_campaign=seopress&utm_medium=readme"><strong>Google Analytics</strong> and <strong>Matomo</strong></a> with downloads tracking, custom dimensions, ip anonymization, remarketing, demographics and interest reporting, cross-domain tracking...(<a href="https://www.seopress.org/features/seopress-white-label/?utm_source=w.org&utm_campaign=seopress&utm_medium=readme" target="_blank">GDPR compatibility</a>)</li>
51
+ <li><strong>Custom Canonical URL</strong></li>
52
+ <li><a href="https://www.seopress.org/support/guides/manage-meta-robots/?utm_source=w.org&utm_campaign=seopress&utm_medium=readme"><strong>Meta robots</strong></a> (noindex, nofollow, noodp, noimageindex, noarchive, nosnippet)</li>
53
+ <li>Build your <a href="https://www.seopress.org/features/sitemaps/?utm_source=w.org&utm_campaign=seopress&utm_medium=readme"><strong>custom XML Sitemap</strong></a> to improve search indexing</li>
54
+ <li><strong>Image XML Sitemaps</strong> to improve search indexing for Google Images</li>
55
+ <li>Build your custom <strong>HTML Sitemap</strong> to enhanced navigation for visitors and improve search indexing</li>
56
  <li>Link your social media accounts to your site</li>
57
+ <li><strong>Redirections</strong> in post, pages, custom post types</li>
58
  <li>Remove /category/ in URLs</li>
59
  <li>Remove ?replytocom to avoid duplicate content</li>
60
  <li>Redirect attachment pages to post parent</li>
61
  <li>Redirect attachment pages to their file URL</li>
62
+ <li><strong>Image SEO</strong>: Automatically set the image title / alt / caption / description</li>
63
  <li>Import / Export settings from site to site.</li>
64
  <li>Import posts and terms metadata from Yoast SEO, All In One SEO, SEO Framework, Rank Math, SEO Ultimate, WP Meta SEO, Premium SEO Pack and Squirrly</li>
 
 
 
 
 
65
  <li>...</li>
66
  </ul>
67
 
68
+ <a href="https://www.seopress.org/features/?utm_source=w.org&utm_campaign=seopress&utm_medium=readme" target="_blank">Check out all SEOPress Free features here</a>
69
+
70
  <h3>SEOPress PRO: to go further with your SEO</h3>
71
 
72
  <ul>
73
+ <li><a href="https://www.seopress.org/support/guides/import-metadata-from-a-csv-file-with-seopress-pro/?utm_source=w.org&utm_campaign=seopress&utm_medium=readme"><strong>Import / export metadata</strong></a> (titles, open graph, robots...) from / to CSV file</li>
74
+ <li><a href="https://www.seopress.org/features/sitemaps/?utm_source=w.org&utm_campaign=seopress&utm_medium=readme"><strong>Video XML Sitemap</strong></a> to improve rankings in video search results</li>
75
+ <li><strong>Google Suggestions in Content Analysis</strong> to find the top 10 Google suggestions instantly. This is useful if you want to work with the long tail technique.</li>
76
+ <li><a href="https://www.seopress.org/features/google-structured-data-types/?utm_source=w.org&utm_campaign=seopress&utm_medium=readme" target="_blank"><strong>Google Structured Data types</strong> (schema.org)</a>:
 
77
  <ol>
78
  <li>article schema</li>
79
  <li>local business schema</li>
90
  <li>site navigation element schema</li>
91
  <li>custom schema</li>
92
  </ol>
93
+ <li><strong>Automatic Schemas</strong> with advanced conditions (AND, OR, Post types, taxonomies)</li>
94
+ <li><a href="https://www.seopress.org/support/guides/enable-breadcrumbs/?utm_source=w.org&utm_campaign=seopress&utm_medium=readme"><strong>Breadcrumbs</strong></a> optimized with Schema.org, A11Y ready. Elementor users? <a href="https://www.youtube.com/watch?v=ID4xm1UVikc" target="_blank">Try our custom breadcrumbs widget!</a></li>
95
+ <li><a href="https://www.seopress.org/features/google-analytics/?utm_source=w.org&utm_campaign=seopress&utm_medium=readme"><strong>Google Analytics Stats in Dashboard</strong></a> to quickly see your metrics without leaving your site</li>
96
+ <li><strong>Google Local Business</strong> to boost your local store</li>
97
+ <li><strong>Broken link checker (SEOPress BOT)</strong>: scan all your links in content to find errors (eg: 404...)</li>
98
+ <li><strong>WooCommerce</strong>: Product Global Identifiers type and Product Global Identifiers fields to WooCommerce metabox for product schema (barcode), disable crawling on cart page, checkout page, customer account pages, add OG Price / OG Currency for better sharing and more</li>
99
+ <li><strong>Easy Digital Downloads</strong>: add OG Price / OG Currency, remove EDD meta generator</li>
100
+ <li><strong>Dublin Core</strong> meta tags</li>
101
+ <li><strong>Custom Breadcrumbs</strong> for single post types / term taxonomy</li>
102
+ <li><strong>Google Page Speed Insights</strong> to analyse your site performances</li>
103
+ <li><strong>Google Analytics Events</strong>: track external links, downloads (PDF, DOCX...), affiliate links...</li>
104
+ <li><strong>Google Enhanced Ecommerce</strong>: measure purchases, additions to and removals from shopping carts</li>
105
+ <li>Edit your <strong>robots.txt</strong> file from the admin (multisite / multidomain ready)</li>
106
+ <li><strong>Google News Sitemap</strong> to get your posts on Google News</li>
107
+ <li><strong>404 Monitoring</strong> to improve user experience, performances and increase the crawl budget allocated by Google</li>
108
+ <li><strong>Redirect 404 to homepage/custom url automatically</strong> with custom status code (301, 302, 307, 410 or 451)</li>
109
  <li>Email notifications on 404</li>
110
+ <li><strong>Redirect manager</strong>: create unlmited 301, 302, 307, 410 and 451 redirections. Import / export redirections to CSV or htaccess file.</li>
111
  <li>Import redirections using CSV</li>
112
  <li>Import redirections from Redirections plugin (via a JSON file)</li>
113
+ <li>Edit your <strong>htaccess file</strong> from the admin</li>
114
+ <li>Easily customize your <strong>RSS feeds</strong></li>
115
+ <li>...</li>
116
  </ul>
117
 
118
+ <a href="https://www.seopress.org/pricing/?utm_source=w.org&utm_campaign=seopress&utm_medium=readme" target="_blank"><strong>Buy SEOPress PRO now!</strong></a>
119
 
120
  <h3>WooCommerce SEO (SEOPress PRO required)</h3>
121
  We support WooCommerce and Easy Digital Downloads for e-commerce sites.
133
  <li>...</li>
134
  </ul>
135
 
136
+ <a href="https://www.seopress.org/pricing/?utm_source=w.org&utm_campaign=seopress&utm_medium=readme" target="_blank"><strong>Increase your sales now!</strong></a>
137
+
138
+ <h3>Developers will love SEOPress!</h3>
139
 
140
+ Hundreds of hooks are available to extend SEOPress. <a href="https://www.seopress.org/support/hooks/?utm_source=w.org&utm_campaign=seopress&utm_medium=readme" target="_blank">Browse them all here</a>!
141
+
142
+ <h3>Translations</h3>
143
+ SEOPress is translated into multiple languages including:
144
  <ul>
145
  <li>🇺🇸 English (UK) (English (UK)) - professional translation</li>
146
  <li>🇫🇷 Français (French (France)) - professional translation</li>
164
  <li>...</li>
165
  </ul>
166
 
167
+ Help localize SEOPress even further by adding your locale – visit <a href="https://translate.wordpress.org/projects/wp-plugins/wp-seopress/" target="_blank">translate.wordpress.org</a>.
168
+
169
  <h3>SEOPress integrates seamlessly with popular e-commerce, translation, performance and analytics tools.</h3>
170
  <ul>
171
  <li>WPML</li>
184
  <li>...</li>
185
  </ul>
186
 
187
+ <a href="https://www.seopress.org/integrations/?utm_source=w.org&utm_campaign=seopress&utm_medium=readme" target="_blank">All our integrations</a>
188
 
189
  <h3>Import your post and term metadata from other SEO plugins in 1-click</h3>
190
  <ul>
191
+ <li><a href="https://www.seopress.org/support/guides/import-post-terms-metadatas-yoast-seo-seopress/?utm_source=w.org&utm_campaign=seopress&utm_medium=readme" target="_blank">Yoast SEO</a></li>
192
+ <li><a href="https://www.seopress.org/support/guides/import-post-and-terms-metadatas-from-all-in-one-seo-to-seopress/?utm_source=w.org&utm_campaign=seopress&utm_medium=readme" target="_blank">All In One SEO</a></li>
193
+ <li><a href="https://www.seopress.org/support/guides/import-post-and-terms-metadatas-from-the-seo-framework-to-seopress/?utm_source=w.org&utm_campaign=seopress&utm_medium=readme" target="_blank">SEO Framework</a></li>
194
+ <li><a href="https://www.seopress.org/support/guides/import-post-terms-metadatas-rank-math-seo-seopress/?utm_source=w.org&utm_campaign=seopress&utm_medium=readme" target="_blank">Rank Math</a></li>
195
+ <li><a href="https://www.seopress.org/support/guides/import-post-metadata-from-seo-ultimate-to-seopress/?utm_source=w.org&utm_campaign=seopress&utm_medium=readme" target="_blank">SEO Ultimate</a></li>
196
+ <li><a href="https://www.seopress.org/support/guides/import-post-and-terms-metadata-from-wp-meta-seo-to-seopress/?utm_source=w.org&utm_campaign=seopress&utm_medium=readme" target="_blank">WP Meta SEO</a></li>
197
+ <li><a href="https://www.seopress.org/support/guides/import-post-and-terms-metadata-from-premium-seo-pack-to-seopress/?utm_source=w.org&utm_campaign=seopress&utm_medium=readme" target="_blank">Premium SEO Pack</a></li>
198
+ <li><a href="https://www.seopress.org/support/guides/import-post-metadatas-from-squirrly-to-seopress/?utm_source=w.org&utm_campaign=seopress&utm_medium=readme" target="_blank">Squirrly</a></li>
199
  </ul>
200
 
201
  <h3>Help and support</h3>
202
  <ul>
203
+ <li><a href="https://www.seopress.org/support/?utm_source=w.org&utm_campaign=seopress&utm_medium=readme" target="_blank">Documentation center</a></li>
204
  <li><a href="https://www.facebook.com/groups/seopress/" target="_blank">Join our SEOPress official community group</a></li>
205
  <li><a href="https://www.youtube.com/seopress" target="_blank">Our SEOPress YouTube Channel</a></li>
206
+ <li><a href="https://www.seopress.org/account/your-tickets/?utm_source=w.org&utm_campaign=seopress&utm_medium=readme" target="_blank">Email (PRO only)</a></li>
207
  </ul>
208
 
209
+ <h3>SEOPress featured on</h3>
210
  <ul>
211
  <li>WP Beginner</li>
212
  <li>HubSpot</li>
224
  <li>...</li>
225
  </ul>
226
 
227
+ <a href="https://www.seopress.org/press/?utm_source=w.org&utm_campaign=seopress&utm_medium=readme" target="_blank">Complete list on our Press page</a>
228
 
229
  <h3>Our website:</h3>
230
  Any questions? Visit our website <a href="https://www.seopress.org?utm_source=w.org&utm_campaign=seopress&utm_medium=readme" target="_blank">seopress.org</a>
292
  7. Installation Wizard
293
 
294
  == Changelog ==
295
+ = 3.9.1 =
296
+ * FIX Fatal error: Cannot redeclare seopress_title_columns()
297
  = 3.9 <a href="https://www.seopress.org/blog/elementor-integration-seopress-3-9/">Read our Blog post update</a> =
298
  * NEW Free Elementor integration (first iteration) 🎉
299
  * NEW Automatically set the image Alt text from target keywords if empty (this setting is retroactive, no need to resave your post content)
seopress.php CHANGED
@@ -3,7 +3,7 @@
3
  Plugin Name: SEOPress
4
  Plugin URI: https://www.seopress.org/
5
  Description: One of the best SEO plugins for WordPress.
6
- Version: 3.9
7
  Author: SEOPress
8
  Author URI: https://www.seopress.org/
9
  License: GPLv2
@@ -55,7 +55,7 @@ register_deactivation_hook(__FILE__, 'seopress_deactivation');
55
  ///////////////////////////////////////////////////////////////////////////////////////////////////
56
  //Define
57
  ///////////////////////////////////////////////////////////////////////////////////////////////////
58
- define( 'SEOPRESS_VERSION', '3.9' );
59
  define( 'SEOPRESS_AUTHOR', 'Benjamin Denis' );
60
 
61
  ///////////////////////////////////////////////////////////////////////////////////////////////////
3
  Plugin Name: SEOPress
4
  Plugin URI: https://www.seopress.org/
5
  Description: One of the best SEO plugins for WordPress.
6
+ Version: 3.9.1
7
  Author: SEOPress
8
  Author URI: https://www.seopress.org/
9
  License: GPLv2
55
  ///////////////////////////////////////////////////////////////////////////////////////////////////
56
  //Define
57
  ///////////////////////////////////////////////////////////////////////////////////////////////////
58
+ define( 'SEOPRESS_VERSION', '3.9.1' );
59
  define( 'SEOPRESS_AUTHOR', 'Benjamin Denis' );
60
 
61
  ///////////////////////////////////////////////////////////////////////////////////////////////////