SEOPress - Version 0.4

Version Description

  • NEW Add article:published_time, article:modified_time, og:updated_time metadata
  • INFO Add website link
  • INFO Improve UI in Google Snippet Preview with live preview
  • INFO Improve Canonical URL field
  • FIX CSS Google Snippet preview
  • FIX Title tag in Google Snipet Preview
Download this release

Release Info

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

Code changes from version 0.3 to 0.4

assets/css/seopress.css CHANGED
@@ -68,39 +68,44 @@
68
  width: 49%;
69
  margin-left: 1%;
70
  }
71
- #seopress_cpt .google-snippet-preview .snippet-title {
72
- color: rgb(26, 13, 171);
73
  font-family: arial,sans-serif;
 
 
 
74
  font-size: 18px;
75
  font-weight: 400;
76
  line-height: 21.6px;
77
- text-decoration: underline;
78
  }
79
  #seopress_cpt .google-snippet-preview .snippet-permalink {
80
  color: rgb(0, 102, 33);
81
- font-family: arial,sans-serif;
82
  font-size: 14px;
83
  font-style: normal;
84
  font-weight: 400;
85
  line-height: 16px;
86
  }
87
- #seopress_cpt .google-snippet-preview .snippet-description {
88
- color: rgb(84, 84, 84);
89
- font-family: arial,sans-serif;
90
  font-size: 13px;
91
  font-weight: 400;
92
  line-height: 18.2px;
 
 
 
 
 
93
  }
94
  #seopress_cpt .wrap-seopress-counters {
95
  text-align: right;
96
  background: rgb(238, 238, 238) none repeat scroll 0% 0%;
97
  padding: 5px;
 
98
  }
99
- #seopress_cpt #seopress_titles_desc_counters {
100
  display: inline;
101
  margin-right: 5px;
102
  }
103
- #seopress_cpt #seopress_titles_desc_counters_val {
104
  display: inline;
105
  font-weight: bold;
106
  }
68
  width: 49%;
69
  margin-left: 1%;
70
  }
71
+ #seopress_cpt .google-snippet-preview {
 
72
  font-family: arial,sans-serif;
73
+ }
74
+ #seopress_cpt .google-snippet-preview .snippet-title, #seopress_cpt .google-snippet-preview .snippet-title-custom, #seopress_cpt .google-snippet-preview .snippet-title-default {
75
+ color: rgb(26, 13, 171);
76
  font-size: 18px;
77
  font-weight: 400;
78
  line-height: 21.6px;
 
79
  }
80
  #seopress_cpt .google-snippet-preview .snippet-permalink {
81
  color: rgb(0, 102, 33);
 
82
  font-size: 14px;
83
  font-style: normal;
84
  font-weight: 400;
85
  line-height: 16px;
86
  }
87
+ #seopress_cpt .google-snippet-preview .snippet-description, #seopress_cpt .google-snippet-preview .snippet-description-custom, #seopress_cpt .google-snippet-preview .snippet-description-default {
88
+ color: #545454;
 
89
  font-size: 13px;
90
  font-weight: 400;
91
  line-height: 18.2px;
92
+ display: inline;
93
+ }
94
+ #seopress_cpt .google-snippet-preview .snippet-date {
95
+ color: #808080;
96
+ display: inline;
97
  }
98
  #seopress_cpt .wrap-seopress-counters {
99
  text-align: right;
100
  background: rgb(238, 238, 238) none repeat scroll 0% 0%;
101
  padding: 5px;
102
+ box-shadow: 0 1px 1px rgba(0,0,0,.2);
103
  }
104
+ #seopress_cpt #seopress_titles_title_counters, #seopress_cpt #seopress_titles_desc_counters {
105
  display: inline;
106
  margin-right: 5px;
107
  }
108
+ #seopress_cpt #seopress_titles_title_counters_val, #seopress_cpt #seopress_titles_desc_counters_val {
109
  display: inline;
110
  font-weight: bold;
111
  }
assets/js/seopress-counters.js CHANGED
@@ -1,10 +1,51 @@
 
1
  jQuery(document).ready(function(){
2
- jQuery("#seopress_titles_desc_counters").after("<div id=\"seopress_titles_desc_counters_val\">/ 160</div>");
3
- jQuery("#seopress_titles_desc_counters").text(jQuery("#seopress_titles_desc_meta").val().length);
4
- jQuery("#seopress_titles_desc_meta").keyup( function() {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5
  if(jQuery(this).val().length > 160){
6
- jQuery('#seopress_titles_desc_counters_val').css('color', 'red');
7
  }
8
  jQuery("#seopress_titles_desc_counters").text(jQuery("#seopress_titles_desc_meta").val().length);
9
- });
10
- });
 
 
 
 
 
 
 
 
 
 
1
+ //Title tag counters / live preview
2
  jQuery(document).ready(function(){
3
+ jQuery("#seopress_titles_title_counters").after("<div id=\"seopress_titles_title_counters_val\">/ 60</div>");
4
+ jQuery("#seopress_titles_title_counters").text(jQuery("#seopress_titles_title_meta").val().length);
5
+ if(jQuery('#seopress_titles_title_meta').val().length > 60){
6
+ jQuery('#seopress_titles_title_counters').css('color', 'red');
7
+ }
8
+ jQuery("#seopress_titles_title_meta").keyup(function(event) {
9
+ jQuery('#seopress_titles_title_counters').css('color', 'inherit');
10
+ if(jQuery(this).val().length > 60){
11
+ jQuery('#seopress_titles_title_counters').css('color', 'red');
12
+ }
13
+ jQuery("#seopress_titles_title_counters").text(jQuery("#seopress_titles_title_meta").val().length);
14
+ if(jQuery(this).val().length > 0){
15
+ jQuery(".snippet-title-custom").text(event.target.value);
16
+ jQuery(".snippet-title").css('display', 'none');
17
+ jQuery(".snippet-title-custom").css('display', 'block');
18
+ jQuery(".snippet-title-default").css('display', 'none');
19
+ } else if(jQuery(this).val().length == 0) {
20
+ jQuery(".snippet-title-default").css('display', 'block');
21
+ jQuery(".snippet-title-custom").css('display', 'none');
22
+ jQuery(".snippet-title").css('display', 'none');
23
+ };
24
+ });
25
+ });
26
+
27
+ //Meta description counters / live preview
28
+ jQuery(document).ready(function(){
29
+ jQuery("#seopress_titles_desc_counters").after("<div id=\"seopress_titles_desc_counters_val\">/ 160</div>");
30
+ jQuery("#seopress_titles_desc_counters").text(jQuery("#seopress_titles_desc_meta").val().length);
31
+ if(jQuery('#seopress_titles_desc_meta').val().length > 160){
32
+ jQuery('#seopress_titles_desc_counters').css('color', 'red');
33
+ }
34
+ jQuery("#seopress_titles_desc_meta").keyup(function(event) {
35
+ jQuery('#seopress_titles_desc_counters').css('color', 'inherit');
36
  if(jQuery(this).val().length > 160){
37
+ jQuery('#seopress_titles_desc_counters').css('color', 'red');
38
  }
39
  jQuery("#seopress_titles_desc_counters").text(jQuery("#seopress_titles_desc_meta").val().length);
40
+ if(jQuery(this).val().length > 0){
41
+ jQuery(".snippet-description-custom").text(event.target.value);
42
+ jQuery(".snippet-description").css('display', 'none');
43
+ jQuery(".snippet-description-custom").css('display', 'inline');
44
+ jQuery(".snippet-description-default").css('display', 'none');
45
+ } else if(jQuery(this).val().length == 0) {
46
+ jQuery(".snippet-description-default").css('display', 'inline');
47
+ jQuery(".snippet-description-custom").css('display', 'none');
48
+ jQuery(".snippet-description").css('display', 'none');
49
+ };
50
+ });
51
+ });
inc/admin/admin-metaboxes.php CHANGED
@@ -32,7 +32,7 @@ function seopress_cpt($post){
32
  if ($seopress_titles_title !='') {
33
  return $seopress_titles_title;
34
  } else {
35
- return get_the_title();
36
  }
37
  }
38
 
@@ -45,6 +45,26 @@ function seopress_cpt($post){
45
  }
46
  }
47
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
48
  echo '<div id="seopress-tabs">
49
  <ul>
50
  <li><a href="#tabs-1"><span class="dashicons dashicons-editor-table"></span>'. __( 'Titles settings', 'wp-seopress' ) .'</a></li>
@@ -58,6 +78,10 @@ function seopress_cpt($post){
58
  <label for="seopress_titles_title_meta">'. __( 'Title', 'wp-seopress' ) .'</label>
59
  <input id="seopress_titles_title_meta" type="text" name="seopress_titles_title" placeholder="'.__('Enter your title','wp-seopress').'" value="'.$seopress_titles_title.'" />
60
  </p>
 
 
 
 
61
  <p>
62
  <label for="seopress_titles_desc_meta">'. __( 'Meta description', 'wp-seopress' ) .'</label>
63
  <textarea id="seopress_titles_desc_meta" style="width:100%" name="seopress_titles_desc" placeholder="'.__('Enter your meta description','wp-seopress').'" value="'.$seopress_titles_desc.'">'.$seopress_titles_desc.'</textarea>
@@ -72,8 +96,13 @@ function seopress_cpt($post){
72
  <h3>'.__('Google Snippet Preview','wp-seopress').'</h3>
73
  <p>'. __('This is what your page will look like in Google search results','wp-seopress').'</p>
74
  <div class="snippet-title">'.seopress_titles_title($seopress_titles_title).'</div>
75
- <div class="snippet-permalink">'.get_permalink().'</div>
76
- <div class="snippet-desc">'.seopress_titles_desc($seopress_titles_desc).'...</div>
 
 
 
 
 
77
  </div>
78
  </div>
79
  </div>
@@ -116,7 +145,7 @@ function seopress_cpt($post){
116
  </p>
117
  <p>
118
  <label for="seopress_robots_canonical_meta">'. __( 'Canonical URL', 'wp-seopress' ) .'</label>
119
- <input id="seopress_robots_canonical_meta" type="text" name="seopress_robots_canonical" placeholder="'.__('Enter your Canonical URL','wp-seopress').'" value="'.$seopress_robots_canonical.'" />
120
  </p>
121
  </div>
122
  <div id="tabs-3">
32
  if ($seopress_titles_title !='') {
33
  return $seopress_titles_title;
34
  } else {
35
+ return get_the_title().' - '.get_bloginfo('name');
36
  }
37
  }
38
 
45
  }
46
  }
47
 
48
+ function seopress_titles_single_cpt_date_option() {
49
+ global $post;
50
+ $seopress_get_current_cpt = get_post_type($post);
51
+
52
+ $seopress_titles_single_cpt_date_option = get_option("seopress_titles_option_name");
53
+ if ( ! empty ( $seopress_titles_single_cpt_date_option ) ) {
54
+ foreach ($seopress_titles_single_cpt_date_option as $key => $seopress_titles_single_cpt_date_value)
55
+ $options[$key] = $seopress_titles_single_cpt_date_value;
56
+ if (isset($seopress_titles_single_cpt_date_option['seopress_titles_single_titles'][$seopress_get_current_cpt]['date'])) {
57
+ return $seopress_titles_single_cpt_date_option['seopress_titles_single_titles'][$seopress_get_current_cpt]['date'];
58
+ }
59
+ }
60
+ };
61
+
62
+ function seopress_display_date_snippet() {
63
+ if (seopress_titles_single_cpt_date_option()) {
64
+ return '<div class="snippet-date">'.get_the_date('M j, Y').' - </div>';
65
+ }
66
+ }
67
+
68
  echo '<div id="seopress-tabs">
69
  <ul>
70
  <li><a href="#tabs-1"><span class="dashicons dashicons-editor-table"></span>'. __( 'Titles settings', 'wp-seopress' ) .'</a></li>
78
  <label for="seopress_titles_title_meta">'. __( 'Title', 'wp-seopress' ) .'</label>
79
  <input id="seopress_titles_title_meta" type="text" name="seopress_titles_title" placeholder="'.__('Enter your title','wp-seopress').'" value="'.$seopress_titles_title.'" />
80
  </p>
81
+ <div class="wrap-seopress-counters">
82
+ <div id="seopress_titles_title_counters"></div>
83
+ '.__('(maximum recommended limit)','wp-seopress').'
84
+ </div>
85
  <p>
86
  <label for="seopress_titles_desc_meta">'. __( 'Meta description', 'wp-seopress' ) .'</label>
87
  <textarea id="seopress_titles_desc_meta" style="width:100%" name="seopress_titles_desc" placeholder="'.__('Enter your meta description','wp-seopress').'" value="'.$seopress_titles_desc.'">'.$seopress_titles_desc.'</textarea>
96
  <h3>'.__('Google Snippet Preview','wp-seopress').'</h3>
97
  <p>'. __('This is what your page will look like in Google search results','wp-seopress').'</p>
98
  <div class="snippet-title">'.seopress_titles_title($seopress_titles_title).'</div>
99
+ <div class="snippet-title-custom" style="display:none"></div>
100
+ <div class="snippet-title-default" style="display:none">'.get_the_title().' - '.get_bloginfo('name').'</div>
101
+ <div class="snippet-permalink">'.get_permalink().'</div>';
102
+ echo seopress_display_date_snippet();
103
+ echo '<div class="snippet-description">'.seopress_titles_desc($seopress_titles_desc).'...</div>
104
+ <div class="snippet-description-custom" style="display:none"></div>
105
+ <div class="snippet-description-default" style="display:none">'.substr(wp_strip_all_tags($post->post_content, true), 0, 160).'</div>
106
  </div>
107
  </div>
108
  </div>
145
  </p>
146
  <p>
147
  <label for="seopress_robots_canonical_meta">'. __( 'Canonical URL', 'wp-seopress' ) .'</label>
148
+ <input id="seopress_robots_canonical_meta" type="text" name="seopress_robots_canonical" placeholder="'.__('Default value: ','wp-seopress').get_permalink().'" value="'.$seopress_robots_canonical.'" />
149
  </p>
150
  </div>
151
  <div id="tabs-3">
inc/admin/admin.php CHANGED
@@ -1011,6 +1011,25 @@ class seopress_options
1011
  }
1012
 
1013
  echo '</div>';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1014
  }
1015
  }
1016
 
1011
  }
1012
 
1013
  echo '</div>';
1014
+
1015
+ //Single Published / modified date CPT
1016
+ echo '<div class="seopress_wrap_single_cpt">';
1017
+
1018
+ $options = get_option( 'seopress_titles_option_name' );
1019
+
1020
+ $check = isset($options['seopress_titles_single_titles'][$seopress_cpt_value]['date']);
1021
+
1022
+ echo '<input id="seopress_titles_single_cpt_date['.$seopress_cpt_value.']" name="seopress_titles_option_name[seopress_titles_single_titles]['.$seopress_cpt_value.'][date]" type="checkbox"';
1023
+ if ('1' == $check) echo 'checked="yes"';
1024
+ echo ' value="1"/>';
1025
+
1026
+ echo '<label for="seopress_titles_single_cpt_date['.$seopress_cpt_value.']">'. __( 'Display date in Google search results?', 'wp-seopress' ) .'</label>';
1027
+
1028
+ if (isset($this->options['seopress_titles_single_titles'][$seopress_cpt_value]['date'])) {
1029
+ esc_attr( $this->options['seopress_titles_single_titles'][$seopress_cpt_value]['date']);
1030
+ }
1031
+
1032
+ echo '</div>';
1033
  }
1034
  }
1035
 
inc/functions/options-titles-metas.php CHANGED
@@ -341,6 +341,7 @@ if (get_option('blog_public') =='1') {
341
  }
342
  };
343
 
 
344
  function seopress_titles_noindex_post_option() {
345
  $_seopress_robots_index = get_post_meta(get_the_ID(),'_seopress_robots_index',true);
346
  if ($_seopress_robots_index == 'yes') {
@@ -421,6 +422,35 @@ if (get_option('blog_public') =='1') {
421
  }
422
  };
423
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
424
  //noodp
425
  function seopress_titles_noodp_option() {
426
  $seopress_titles_noodp_option = get_option("seopress_titles_option_name");
341
  }
342
  };
343
 
344
+ //noindex single CPT
345
  function seopress_titles_noindex_post_option() {
346
  $_seopress_robots_index = get_post_meta(get_the_ID(),'_seopress_robots_index',true);
347
  if ($_seopress_robots_index == 'yes') {
422
  }
423
  };
424
 
425
+ //date in SERPs
426
+ function seopress_titles_single_cpt_date_option() {
427
+ global $post;
428
+ $seopress_get_current_cpt = get_post_type($post);
429
+
430
+ $seopress_titles_single_cpt_date_option = get_option("seopress_titles_option_name");
431
+ if ( ! empty ( $seopress_titles_single_cpt_date_option ) ) {
432
+ foreach ($seopress_titles_single_cpt_date_option as $key => $seopress_titles_single_cpt_date_value)
433
+ $options[$key] = $seopress_titles_single_cpt_date_value;
434
+ if (isset($seopress_titles_single_cpt_date_option['seopress_titles_single_titles'][$seopress_get_current_cpt]['date'])) {
435
+ return $seopress_titles_single_cpt_date_option['seopress_titles_single_titles'][$seopress_get_current_cpt]['date'];
436
+ }
437
+ }
438
+ };
439
+
440
+ function seopress_titles_single_cpt_date_hook() {
441
+ if (is_singular() && seopress_titles_single_cpt_date_option() =='1') {
442
+ $seopress_get_current_pub_post_date = get_the_date('c');
443
+ $seopress_get_current_up_post_date = get_the_modified_date('c');
444
+ echo '<meta property="article:published_time" content="'.$seopress_get_current_pub_post_date.'" />';
445
+ echo "\n";
446
+ echo '<meta property="article:modified_time" content="'.$seopress_get_current_up_post_date.'" />';
447
+ echo "\n";
448
+ echo '<meta property="og:updated_time" content="'.$seopress_get_current_up_post_date.'" />';
449
+ echo "\n";
450
+ }
451
+ }
452
+ add_action( 'wp_head', 'seopress_titles_single_cpt_date_hook', 1 );
453
+
454
  //noodp
455
  function seopress_titles_noodp_option() {
456
  $seopress_titles_noodp_option = get_option("seopress_titles_option_name");
readme.txt CHANGED
@@ -4,7 +4,7 @@ Donate link: https://seopress.org/
4
  Tags: seo, search engine optimization, meta, title, description, keywords, serp, knowledge grah, schema.org, url, redirection, 301, xml sitemap, breadcrumbs, ranking
5
  Requires at least: 4.4+
6
  Tested up to: 4.6
7
- Stable tag: 0.3
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
@@ -47,6 +47,13 @@ Soon :)
47
  7. SEOPRESS Metaboxe: Social settings
48
 
49
  == Changelog ==
 
 
 
 
 
 
 
50
  = 0.3 =
51
  * INFO Add placeholders
52
  * INFO Improve sanitization
4
  Tags: seo, search engine optimization, meta, title, description, keywords, serp, knowledge grah, schema.org, url, redirection, 301, xml sitemap, breadcrumbs, ranking
5
  Requires at least: 4.4+
6
  Tested up to: 4.6
7
+ Stable tag: 0.4
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
47
  7. SEOPRESS Metaboxe: Social settings
48
 
49
  == Changelog ==
50
+ = 0.4 =
51
+ * NEW Add article:published_time, article:modified_time, og:updated_time metadata
52
+ * INFO Add website link
53
+ * INFO Improve UI in Google Snippet Preview with live preview
54
+ * INFO Improve Canonical URL field
55
+ * FIX CSS Google Snippet preview
56
+ * FIX Title tag in Google Snipet Preview
57
  = 0.3 =
58
  * INFO Add placeholders
59
  * INFO Improve sanitization
seopress.php CHANGED
@@ -4,7 +4,7 @@
4
  Plugin Name: SEOPress
5
  Plugin URI: http://seopress.org/
6
  Description: The best SEO plugin.
7
- Version: 0.3
8
  Author: Benjamin DENIS
9
  Author URI: http://seopress.org/
10
  License: GPLv2
@@ -52,7 +52,7 @@ register_deactivation_hook(__FILE__, 'seopress_deactivation');
52
  //Define
53
  ///////////////////////////////////////////////////////////////////////////////////////////////////
54
 
55
- define( 'SEOPRESS_VERSION', '0.3' );
56
  define( 'SEOPRESS_AUTHOR', 'Benjamin Denis' );
57
 
58
  ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -128,7 +128,8 @@ function seopress_plugin_action_links($links, $file) {
128
 
129
  if ($file == $this_plugin) {
130
  $settings_link = '<a href="' . get_bloginfo('wpurl') . '/wp-admin/admin.php?page=seopress-option">'.__("Settings","wp-seopress").'</a>';
131
- array_unshift($links, $settings_link);
 
132
  }
133
 
134
  return $links;
4
  Plugin Name: SEOPress
5
  Plugin URI: http://seopress.org/
6
  Description: The best SEO plugin.
7
+ Version: 0.4
8
  Author: Benjamin DENIS
9
  Author URI: http://seopress.org/
10
  License: GPLv2
52
  //Define
53
  ///////////////////////////////////////////////////////////////////////////////////////////////////
54
 
55
+ define( 'SEOPRESS_VERSION', '0.4' );
56
  define( 'SEOPRESS_AUTHOR', 'Benjamin Denis' );
57
 
58
  ///////////////////////////////////////////////////////////////////////////////////////////////////
128
 
129
  if ($file == $this_plugin) {
130
  $settings_link = '<a href="' . get_bloginfo('wpurl') . '/wp-admin/admin.php?page=seopress-option">'.__("Settings","wp-seopress").'</a>';
131
+ $website_link = '<a href="http://seopress.org/" target="_blank">'.__("SEOPress.org","wp-seopress").'</a>';
132
+ array_unshift($links, $settings_link, $website_link);
133
  }
134
 
135
  return $links;