Yasr – Yet Another Stars Rating - Version 2.0.4

Version Description

  • NEW FEATURE: is now possible align to left, center or right if auto insert is used
  • TWEAKED: check tidy version before use it: this will fix some enconding issue if an old version in server is installed
  • TWEAKED: esc_html used instead of htmlspecialchars in the settings page
  • TWEAKED: added a new filter yasr_filter_existing_schema: useful if there is the need to add new rich snippets
  • TWEAKED: minor changes on schema function (thanks to Olivier)
Download this release

Release Info

Developer Dudo
Plugin Icon 128x128 Yasr – Yet Another Stars Rating
Version 2.0.4
Comparing to
See all releases

Code changes from version 2.0.3 to 2.0.4

css/yasr.css CHANGED
@@ -50,8 +50,12 @@
50
}
51
/****** NON ADMIN RULES ******/
52
53
- .yasr_schema{
54
- font-size: small;
55
}
56
57
#yasr-custom-text-before-overall {
50
}
51
/****** NON ADMIN RULES ******/
52
53
+ .yasr-auto-insert-overall {
54
+ margin-top: 10px;
55
+ }
56
+
57
+ .yasr-auto-insert-visitor {
58
+ margin-top: 10px;
59
}
60
61
#yasr-custom-text-before-overall {
img/yasr_settings_stats_disabled.png ADDED
Binary file
img/yasr_settings_stats_enabled.png ADDED
Binary file
lib/admin/settings/yasr-settings-functions-style.php CHANGED
@@ -18,89 +18,95 @@ You should have received a copy of the GNU General Public License
18
along with this program. If not, see <http://www.gnu.org/licenses/>
19
*/
20
21
- if ( ! defined( 'ABSPATH' ) ) exit('You\'re not allowed to see this page'); // Exit if accessed directly
22
23
- add_action( 'admin_init', 'yasr_style_options_init' ); //This is for auto insert options
24
25
function yasr_style_options_init() {
26
27
- register_setting(
28
- 'yasr_style_options_group', // A settings group name. Must exist prior to the register_setting call. This must match the group name in settings_fields()
29
- 'yasr_style_options', //The name of an option to sanitize and save.
30
- 'yasr_style_options_sanitize'
31
- );
32
33
- global $style_options;
34
35
- if (!$style_options || !isset($style_options['scheme_color_multiset']) || !isset($style_options['textarea'])) {
36
37
- $style_options = array();
38
- $style_options['scheme_color_multiset'] = 'light';
39
- $style_options['textarea'] = NULL;
40
41
- }
42
43
- //filter $style_options
44
- $style_options = apply_filters('yasr_filter_style_options', $style_options);
45
-
46
- add_settings_section( 'yasr_style_options_section_id', __('Style Options', 'yet-another-stars-rating'), 'yasr_style_section_callback', 'yasr_style_tab' );
47
- do_action('yasr_style_options_add_settings_field', $style_options);
48
- add_settings_field( 'yasr_color_scheme_multiset', __('Which color scheme do you want to use?', 'yet-another-stars-rating') , 'yasr_color_scheme_multiset_callback', 'yasr_style_tab', 'yasr_style_options_section_id', $style_options);
49
- add_settings_field( 'yasr_style_options_textarea', __('Custom CSS Styles', 'yet-another-stars-rating'), 'yasr_style_options_textarea_callback', 'yasr_style_tab', 'yasr_style_options_section_id', $style_options );
50
51
52
53
}
54
55
- function yasr_style_section_callback () {
56
57
}
58
59
60
-
61
function yasr_color_scheme_multiset_callback($style_options) {
62
63
- ?>
64
65
- <input type='radio' name='yasr_style_options[scheme_color_multiset]' value='light' class='yasr-general-options-scheme-color' <?php if ($style_options['scheme_color_multiset']==='light') echo " checked=\"checked\" "; ?> />
66
- <?php _e('Light', 'yet-another-stars-rating')?>
67
68
- &nbsp;&nbsp;&nbsp;
69
70
- <input type='radio' name='yasr_style_options[scheme_color_multiset]' value='dark' class='yasr-general-options-scheme-color' <?php if ($style_options['scheme_color_multiset']==='dark') echo " checked=\"checked\" "; ?> />
71
- <?php _e('Dark', 'yet-another-stars-rating')?>
72
- <br />
73
74
- <br />
75
76
- <a href="#" id="yasr-color-scheme-preview-link"><?php _e("Preview", 'yet-another-stars-rating') ?></a>
77
78
- <div id="yasr-color-scheme-preview" style="display:none">
79
- <?php
80
81
- _e("Light theme", 'yet-another-stars-rating');
82
- echo "<br /><br /><img src=" . YASR_IMG_DIR . "yasr-multi-set.png>";
83
84
- echo "<br /> <br />";
85
86
- _e("Dark theme", 'yet-another-stars-rating');
87
- echo "<br /><br /><img src=" . YASR_IMG_DIR . "dark-multi-set.png>";
88
- ?>
89
- </div>
90
91
- <p>
92
93
- <?php
94
}
95
96
- function yasr_style_options_textarea_callback ($style_options) {
97
98
- _e("Please use text area below to write your own CSS styles to override the default ones.", 'yet-another-stars-rating');
99
- echo "<br /><strong>";
100
- _e("Leave it blank if you don't know what you're doing.", 'yet-another-stars-rating');
101
- echo "</strong><p>";
102
103
- echo ("
104
<textarea rows=\"17\" cols=\"40\" name=\"yasr_style_options[textarea]\" id=\"yasr_style_options_textarea\">$style_options[textarea]</textarea>
105
");
106
@@ -108,18 +114,18 @@ function yasr_style_options_textarea_callback ($style_options) {
108
}
109
110
//sanitize
111
- function yasr_style_options_sanitize ($style_options) {
112
113
- $style_options = apply_filters('yasr_sanitize_style_options', $style_options);
114
115
- foreach ($style_options as $key => $value) {
116
- $output[$key] = strip_tags(stripslashes($style_options[$key]));
117
118
- //Always use htmlspecialchars
119
- $output[$key] = htmlspecialchars($output[$key]);
120
- }
121
122
- return $output;
123
124
}
125
18
along with this program. If not, see <http://www.gnu.org/licenses/>
19
*/
20
21
+ if (!defined('ABSPATH')) {
22
+ exit('You\'re not allowed to see this page');
23
+ } // Exit if accessed directly
24
25
+ add_action('admin_init', 'yasr_style_options_init'); //This is for auto insert options
26
27
function yasr_style_options_init() {
28
29
+ register_setting(
30
+ 'yasr_style_options_group', // A settings group name. Must exist prior to the register_setting call. This must match the group name in settings_fields()
31
+ 'yasr_style_options', //The name of an option to sanitize and save.
32
+ 'yasr_style_options_sanitize'
33
+ );
34
35
+ global $style_options;
36
37
+ if (!$style_options || !isset($style_options['scheme_color_multiset']) || !isset($style_options['textarea'])) {
38
39
+ $style_options = array();
40
+ $style_options['scheme_color_multiset'] = 'light';
41
+ $style_options['textarea'] = null;
42
43
+ }
44
45
+ //filter $style_options
46
+ $style_options = apply_filters('yasr_filter_style_options', $style_options);
47
48
+ add_settings_section('yasr_style_options_section_id', __('Style Options', 'yet-another-stars-rating'), 'yasr_style_section_callback', 'yasr_style_tab');
49
+ do_action('yasr_style_options_add_settings_field', $style_options);
50
+ add_settings_field('yasr_color_scheme_multiset', __('Which color scheme do you want to use?', 'yet-another-stars-rating'), 'yasr_color_scheme_multiset_callback', 'yasr_style_tab', 'yasr_style_options_section_id', $style_options);
51
+ add_settings_field('yasr_style_options_textarea', __('Custom CSS Styles', 'yet-another-stars-rating'), 'yasr_style_options_textarea_callback', 'yasr_style_tab', 'yasr_style_options_section_id', $style_options);
52
53
54
}
55
56
+ function yasr_style_section_callback() {
57
58
}
59
60
61
function yasr_color_scheme_multiset_callback($style_options) {
62
63
+ ?>
64
65
+ <input type='radio' name='yasr_style_options[scheme_color_multiset]' value='light'
66
+ class='yasr-general-options-scheme-color' <?php if ($style_options['scheme_color_multiset'] === 'light') {
67
+ echo " checked=\"checked\" ";
68
+ } ?> />
69
+ <?php _e('Light', 'yet-another-stars-rating') ?>
70
71
+ &nbsp;&nbsp;&nbsp;
72
73
+ <input type='radio' name='yasr_style_options[scheme_color_multiset]' value='dark'
74
+ class='yasr-general-options-scheme-color' <?php if ($style_options['scheme_color_multiset'] === 'dark') {
75
+ echo " checked=\"checked\" ";
76
+ } ?> />
77
+ <?php _e('Dark', 'yet-another-stars-rating') ?>
78
+ <br/>
79
80
+ <br/>
81
82
+ <a href="#" id="yasr-color-scheme-preview-link"><?php _e("Preview", 'yet-another-stars-rating') ?></a>
83
84
+ <div id="yasr-color-scheme-preview" style="display:none">
85
+ <?php
86
87
+ _e("Light theme", 'yet-another-stars-rating');
88
+ echo "<br /><br /><img src=" . YASR_IMG_DIR . "yasr-multi-set.png>";
89
90
+ echo "<br /> <br />";
91
92
+ _e("Dark theme", 'yet-another-stars-rating');
93
+ echo "<br /><br /><img src=" . YASR_IMG_DIR . "dark-multi-set.png>";
94
+ ?>
95
+ </div>
96
97
+ <p>
98
99
+ <?php
100
}
101
102
+ function yasr_style_options_textarea_callback($style_options) {
103
104
+ _e("Please use text area below to write your own CSS styles to override the default ones.", 'yet-another-stars-rating');
105
+ echo "<br /><strong>";
106
+ _e("Leave it blank if you don't know what you're doing.", 'yet-another-stars-rating');
107
+ echo "</strong><p>";
108
109
+ echo("
110
<textarea rows=\"17\" cols=\"40\" name=\"yasr_style_options[textarea]\" id=\"yasr_style_options_textarea\">$style_options[textarea]</textarea>
111
");
112
114
}
115
116
//sanitize
117
+ function yasr_style_options_sanitize($style_options) {
118
119
+ $style_options = apply_filters('yasr_sanitize_style_options', $style_options);
120
121
+ foreach ($style_options as $key => $value) {
122
+ $output[$key] = strip_tags(stripslashes($style_options[$key]));
123
124
+ //Always use esc_html
125
+ $output[$key] = esc_html($output[$key]);
126
+ }
127
128
+ return $output;
129
130
}
131
lib/admin/settings/yasr-settings-functions.php CHANGED
@@ -40,6 +40,7 @@ function yasr_general_options_init() {
40
if ($option && $option['auto_insert_enabled'] == 0) {
41
$option['auto_insert_what'] = 'visitor_rating';
42
$option['auto_insert_where'] = 'bottom';
43
$option['auto_insert_exclude_pages'] = 'yes';
44
$option['auto_insert_size'] = 'large';
45
$option['auto_insert_custom_post_only'] = 'no';
@@ -157,6 +158,45 @@ function yasr_auto_insert_callback($option) {
157
158
<p>&nbsp;</p>
159
160
<div>
161
<strong><?php _e('Size', 'yet-another-stars-rating'); ?></strong>
162
@@ -192,7 +232,6 @@ function yasr_auto_insert_callback($option) {
192
</div>
193
194
<p>&nbsp;</p>
195
-
196
<strong><?php _e('Exclude Pages?', 'yet-another-stars-rating'); ?></strong>
197
198
<div class="yasr-indented-answer">
@@ -258,7 +297,7 @@ function yasr_auto_insert_callback($option) {
258
?>
259
260
<?php
261
- submit_button(__('Save Settings'));
262
?>
263
264
</div>
@@ -271,11 +310,11 @@ function yasr_auto_insert_callback($option) {
271
272
function yasr_custom_text_callback($option) {
273
274
- $text_before_overall = htmlspecialchars_decode("$option[text_before_overall]");
275
- $text_before_visitor_rating = htmlspecialchars_decode("$option[text_before_visitor_rating]");
276
- $text_after_visitor_rating = htmlspecialchars_decode("$option[text_after_visitor_rating]");
277
- $custom_text_user_votes = htmlspecialchars_decode("$option[custom_text_user_voted]");
278
- $custom_text_must_sign_in = htmlspecialchars_decode("$option[custom_text_must_sign_in]");
279
280
?>
281
@@ -351,7 +390,7 @@ function yasr_custom_text_callback($option) {
351
echo '<br /><br/>';
352
353
_e('You can use these html tags:', 'yet-another-stars-rating');
354
- echo ' <strong>' . htmlspecialchars('<strong>, <p>') . '.</strong>';
355
356
?>
357
@@ -360,7 +399,7 @@ function yasr_custom_text_callback($option) {
360
<p>&nbsp;</p>
361
362
<?php
363
- submit_button(__('Save Settings'));
364
echo '<hr />';
365
366
}
@@ -386,7 +425,6 @@ function yasr_show_overall_in_loop_callback($option) {
386
387
<p>&nbsp;</p>
388
389
-
390
<?php
391
392
}
@@ -412,6 +450,10 @@ function yasr_show_visitor_votes_in_loop_callback($option) {
412
413
<p>&nbsp;</p>
414
415
<br/>
416
417
<hr>
@@ -521,22 +563,24 @@ function yasr_enable_ip_callback($option) {
521
<br/>
522
523
<?php
524
525
- $string = sprintf(
526
- __('Please note that to comply with the %s EU law, you %s MUST %s warn your users that you\'re storing their ip. %s
527
- If in doubt, leave no.',
528
- 'yet-another-stars-rating'
529
- ),
530
- '<a href="https://en.wikipedia.org/wiki/General_Data_Protection_Regulation">GDPR</a>',
531
- '<strong>', '</strong>', '<br />'
532
- );
533
534
- echo $string;
535
536
?>
537
538
- <br/>
539
-
540
<hr>
541
542
<?php
@@ -678,7 +722,12 @@ function yasr_general_options_sanitize($option) {
678
$tidy_installed = false;
679
680
if (extension_loaded('tidy')) {
681
- $tidy_installed = true;
682
}
683
684
// Loop through each of the incoming options
@@ -711,8 +760,8 @@ function yasr_general_options_sanitize($option) {
711
$output[$key] = strip_tags(stripslashes($option[$key]), $allowed_tags);
712
}
713
714
- //Always use htmlspecialchars
715
- $output[$key] = htmlspecialchars($output[$key]);
716
717
if ($key == 'blogposting_organization_logo') {
718
//if is not a valid url get_site_icon_url instead
@@ -734,7 +783,6 @@ function yasr_general_options_sanitize($option) {
734
$output['auto_insert_enabled'] = 1;
735
}
736
737
-
738
//Same as above but for [show_overall_in_loop] key
739
if (!array_key_exists('show_overall_in_loop', $output)) {
740
$output['show_overall_in_loop'] = 'disabled';
@@ -744,7 +792,6 @@ function yasr_general_options_sanitize($option) {
744
$output['show_overall_in_loop'] = 'enabled';
745
}
746
747
-
748
//Same as above but for [show_visitor_votes_in_loop] key
749
if (!array_key_exists('show_visitor_votes_in_loop', $output)) {
750
$output['show_visitor_votes_in_loop'] = 'disabled';
40
if ($option && $option['auto_insert_enabled'] == 0) {
41
$option['auto_insert_what'] = 'visitor_rating';
42
$option['auto_insert_where'] = 'bottom';
43
+ $option['auto_insert_align'] = 'center';
44
$option['auto_insert_exclude_pages'] = 'yes';
45
$option['auto_insert_size'] = 'large';
46
$option['auto_insert_custom_post_only'] = 'no';
158
159
<p>&nbsp;</p>
160
161
+ <div>
162
+ <strong><?php _e('Align', 'yet-another-stars-rating'); ?></strong>
163
+
164
+ <div class="yasr-indented-answer">
165
+
166
+ <div class="yasr-option-align">
167
+ <input type="radio" name="yasr_general_options[auto_insert_align]" value="left"
168
+ class="yasr-auto-insert-options-class" <?php if ($option['auto_insert_align'] === 'left') {
169
+ echo " checked=\"checked\" ";
170
+ } ?> >
171
+ <span class="yasr-text-options-size">
172
+ <?php _e('Left', 'yet-another-stars-rating') ?>
173
+ </span>
174
+ </div>
175
+
176
+ <div class="yasr-option-align">
177
+ <input type="radio" name="yasr_general_options[auto_insert_align]" value="center"
178
+ class="yasr-auto-insert-options-class" <?php if ($option['auto_insert_align'] === 'center') {
179
+ echo " checked=\"checked\" ";
180
+ } ?> >
181
+ <span class="yasr-text-options-size">
182
+ <?php _e('Center', 'yet-another-stars-rating') ?>
183
+ </span>
184
+ </div>
185
+
186
+ <div class="yasr-option-align">
187
+ <input type="radio" name="yasr_general_options[auto_insert_align]" value="right"
188
+ class="yasr-auto-insert-options-class" <?php if ($option['auto_insert_align'] === 'right') {
189
+ echo " checked=\"checked\" ";
190
+ } ?> >
191
+ <span class="yasr-text-options-size">
192
+ <?php _e('Right', 'yet-another-stars-rating') ?>
193
+ </span>
194
+ </div>
195
+ </div>
196
+ </div>
197
+
198
+ <p>&nbsp;</p>
199
+
200
<div>
201
<strong><?php _e('Size', 'yet-another-stars-rating'); ?></strong>
202
232
</div>
233
234
<p>&nbsp;</p>
235
<strong><?php _e('Exclude Pages?', 'yet-another-stars-rating'); ?></strong>
236
237
<div class="yasr-indented-answer">
297
?>
298
299
<?php
300
+ submit_button(SAVE_All_SETTINGS_TEXT);
301
?>
302
303
</div>
310
311
function yasr_custom_text_callback($option) {
312
313
+ $text_before_overall = $option['text_before_overall'];
314
+ $text_before_visitor_rating = $option['text_before_visitor_rating'];
315
+ $text_after_visitor_rating = $option['text_after_visitor_rating'];
316
+ $custom_text_user_votes = $option['custom_text_user_voted'];
317
+ $custom_text_must_sign_in = $option['custom_text_must_sign_in'];
318
319
?>
320
390
echo '<br /><br/>';
391
392
_e('You can use these html tags:', 'yet-another-stars-rating');
393
+ echo ' <strong>' . esc_html('<strong>, <p>') . '.</strong>';
394
395
?>
396
399
<p>&nbsp;</p>
400
401
<?php
402
+ submit_button(SAVE_All_SETTINGS_TEXT);
403
echo '<hr />';
404
405
}
425
426
<p>&nbsp;</p>
427
428
<?php
429
430
}
450
451
<p>&nbsp;</p>
452
453
+ <?php
454
+ submit_button(SAVE_All_SETTINGS_TEXT);
455
+ ?>
456
+
457
<br/>
458
459
<hr>
563
<br/>
564
565
<?php
566
+ $string = sprintf(
567
+ __('Please note that to comply with the %s EU law, you %s MUST %s warn your users that you\'re storing their ip. %s
568
+ If in doubt, leave no.',
569
+ 'yet-another-stars-rating'
570
+ ),
571
+ '<a href="https://en.wikipedia.org/wiki/General_Data_Protection_Regulation">GDPR</a>',
572
+ '<strong>', '</strong>', '<br />'
573
+ );
574
+ echo $string;
575
576
+ ?>
577
578
+ <br/><p>&nbsp;</p>
579
580
+ <?php
581
+ submit_button(SAVE_All_SETTINGS_TEXT);
582
?>
583
584
<hr>
585
586
<?php
722
$tidy_installed = false;
723
724
if (extension_loaded('tidy')) {
725
+ $tidy_release_date = strtotime(tidy_get_release());
726
+ $tidy_working_release_date = strtotime('2017/11/25');
727
+
728
+ if ($tidy_release_date >= $tidy_working_release_date) {
729
+ $tidy_installed = true;
730
+ }
731
}
732
733
// Loop through each of the incoming options
760
$output[$key] = strip_tags(stripslashes($option[$key]), $allowed_tags);
761
}
762
763
+ //Always use esc_html
764
+ $output[$key] = esc_html($output[$key]);
765
766
if ($key == 'blogposting_organization_logo') {
767
//if is not a valid url get_site_icon_url instead
783
$output['auto_insert_enabled'] = 1;
784
}
785
786
//Same as above but for [show_overall_in_loop] key
787
if (!array_key_exists('show_overall_in_loop', $output)) {
788
$output['show_overall_in_loop'] = 'disabled';
792
$output['show_overall_in_loop'] = 'enabled';
793
}
794
795
//Same as above but for [show_visitor_votes_in_loop] key
796
if (!array_key_exists('show_visitor_votes_in_loop', $output)) {
797
$output['show_visitor_votes_in_loop'] = 'disabled';
lib/yasr-db-functions.php CHANGED
@@ -48,6 +48,7 @@ function yasr_on_activation_install($network_wide) {
48
$option['auto_insert_what'] = 'visitor_rating';
49
$option['auto_insert_where'] = 'bottom';
50
$option['auto_insert_size'] = 'large';
51
$option['auto_insert_exclude_pages'] = 'yes';
52
$option['auto_insert_custom_post_only'] = 'no';
53
$option['show_overall_in_loop'] = 'disabled';
48
$option['auto_insert_what'] = 'visitor_rating';
49
$option['auto_insert_where'] = 'bottom';
50
$option['auto_insert_size'] = 'large';
51
+ $option['auto_insert_align'] = 'center';
52
$option['auto_insert_exclude_pages'] = 'yes';
53
$option['auto_insert_custom_post_only'] = 'no';
54
$option['show_overall_in_loop'] = 'disabled';
lib/yasr-functions.php CHANGED
@@ -227,7 +227,7 @@ function yasr_add_pages() {
227
'yasr_stats_page_callback'
228
);
229
230
- if (yasr_fs()->is_free_plan()) {
231
global $submenu;
232
$permalink = '#';
233
$contact_us_string = sprintf(
@@ -281,9 +281,20 @@ if (YASR_AUTO_INSERT_ENABLED == 1) {
281
return $content;
282
}
283
284
$auto_insert_shortcode = null; //To avoid undefined variable notice outside the loop (if (is_singular) )
285
- $overall_rating_code = '[yasr_overall_rating size="' . YASR_AUTO_INSERT_SIZE . '"]';
286
- $visitor_votes_code = '[yasr_visitor_votes size="' . YASR_AUTO_INSERT_SIZE . '"]';
287
288
if (YASR_AUTO_INSERT_WHAT === 'overall_rating') {
289
switch (YASR_AUTO_INSERT_WHERE) {
@@ -359,7 +370,7 @@ function yasr_add_schema($content) {
359
360
//Add buddypress compatibility
361
if (function_exists('bp_is_active')) {
362
- //If this is a page, return $content withous adding schema.
363
//If I try to return $content after if (YASR_SNIPPET == 'overall_rating')
364
//or (YASR_SNIPPET == 'visitor_rating') $content will have only wp content, losing the buddypress one
365
if (is_page()) {
@@ -367,7 +378,7 @@ function yasr_add_schema($content) {
367
}
368
}
369
370
- if (!is_singular() && is_main_query() || is_404()) {
371
return $content;
372
}
373
@@ -386,7 +397,6 @@ function yasr_add_schema($content) {
386
387
$rich_snippet["@context"] = "http://schema.org/";
388
389
-
390
$author = get_the_author();
391
$review_name = wp_strip_all_tags(get_the_title());
392
@@ -403,9 +413,7 @@ function yasr_add_schema($content) {
403
$logo_image_url_absolute = $_SERVER['DOCUMENT_ROOT'] . parse_url(YASR_BLOGPOSTING_ORGANIZATION_LOGO, PHP_URL_PATH);
404
405
$post_image_size = @getimagesize($logo_image_url_absolute); //the @ should be useless, just to be safe
406
-
407
$logo_image_size = @getimagesize($logo_image_url_absolute); //the @ should be useless, just to be safe
408
-
409
} else {
410
$post_image_size[0] = 0;
411
$post_image_size[1] = 0;
@@ -421,55 +429,44 @@ function yasr_add_schema($content) {
421
$post_image_size = @getimagesize($post_image_url_absolute); //the @ should be useless, just to be safe
422
}
423
424
425
if ($review_choosen === "Product") {
426
-
427
$rich_snippet["@type"] = "Product";
428
-
429
- } elseif ($review_choosen === "Recipe") {
430
-
431
$rich_snippet["@type"] = "Recipe";
432
-
433
$rich_snippet["image"] = array(
434
"@type" => "ImageObject",
435
"url" => $post_image_url,
436
"width" => $post_image_size[0],
437
"height" => $post_image_size[1]
438
);
439
-
440
- } elseif ($review_choosen == "Place") {
441
-
442
$rich_snippet["@type"] = "LocalBusiness";
443
-
444
- } elseif ($review_choosen == "Other") {
445
-
446
$rich_snippet["@type"] = "BlogPosting";
447
-
448
$rich_snippet["datePublished"] = $date;
449
-
450
$rich_snippet["headline"] = $review_name;
451
-
452
$rich_snippet["mainEntityOfPage"] = array(
453
"@type" => "WebPage",
454
"@id" => get_permalink()
455
);
456
457
-
458
- $rich_snippet["author"] = array(
459
- "@type" => "Person",
460
- "name" => "$author"
461
- );
462
-
463
$rich_snippet["publisher"] = array(
464
"@type" => "Organization",
465
- "name" => wp_strip_all_tags(YASR_BLOGPOSTING_ORGANIZATION_NAME), //already sanitex in the settings, just to be safe
466
"logo" => array(
467
"@type" => "ImageObject",
468
"url" => $logo_image_url,
469
"width" => $logo_image_size[0],
470
"height" => $logo_image_size[1]
471
)
472
-
473
);
474
475
$rich_snippet["dateModified"] = $date_modified;
@@ -511,9 +508,7 @@ function yasr_add_schema($content) {
511
} //END id if $overall_rating != '-1'
512
513
else {
514
-
515
return $content;
516
-
517
}
518
519
} //end if ($choosen_snippet['snippet'] == 'overall_rating')
@@ -523,27 +518,21 @@ function yasr_add_schema($content) {
523
$visitor_votes = yasr_get_visitor_votes(false, false);
524
525
if ($visitor_votes) {
526
-
527
foreach ($visitor_votes as $rating) {
528
$visitor_rating['votes_number'] = $rating->number_of_votes;
529
$visitor_rating['sum'] = $rating->sum_votes;
530
}
531
-
532
} else {
533
-
534
return $content;
535
-
536
}
537
538
if ($visitor_rating['sum'] != 0 && $visitor_rating['votes_number'] != 0) {
539
540
$average_rating = $visitor_rating['sum'] / $visitor_rating['votes_number'];
541
-
542
$average_rating = round($average_rating, 1);
543
544
//name
545
$rich_snippet["name"] = $review_name;
546
-
547
$rich_snippet["aggregateRating"] = array(
548
"@type" => "AggregateRating",
549
"ratingValue" => "$average_rating",
@@ -551,13 +540,18 @@ function yasr_add_schema($content) {
551
);
552
553
} else {
554
-
555
return $content;
556
-
557
}
558
559
}
560
561
if (is_singular() && is_main_query() && !is_404()) {
562
return $content . $script_type . json_encode($rich_snippet) . $end_script_type;
563
} else {
227
'yasr_stats_page_callback'
228
);
229
230
+ if (yasr_fs()->is_free_plan() && !yasr_fs()->is_trial()) {
231
global $submenu;
232
$permalink = '#';
233
$contact_us_string = sprintf(
281
return $content;
282
}
283
284
+ $shortcode_align = YASR_AUTO_INSERT_ALIGN;
285
+
286
+ //if it is not left, or right, default is center
287
+ if ($shortcode_align !== 'left' && $shortcode_align !== 'right') {
288
+ $shortcode_align = 'center';
289
+ }
290
+
291
+ $container_div_overall='<div style="text-align:'.$shortcode_align.'" class="yasr-auto-insert-overall">';
292
+ $container_div_visitor='<div style="text-align:'.$shortcode_align.'" class="yasr-auto-insert-visitor">';
293
+ $closing_div = '</div>';
294
+
295
$auto_insert_shortcode = null; //To avoid undefined variable notice outside the loop (if (is_singular) )
296
+ $overall_rating_code = $container_div_overall. '[yasr_overall_rating size="' . YASR_AUTO_INSERT_SIZE . '"]' . $closing_div;
297
+ $visitor_votes_code = $container_div_visitor. '[yasr_visitor_votes size="' . YASR_AUTO_INSERT_SIZE . '"]' . $closing_div;
298
299
if (YASR_AUTO_INSERT_WHAT === 'overall_rating') {
300
switch (YASR_AUTO_INSERT_WHERE) {
370
371
//Add buddypress compatibility
372
if (function_exists('bp_is_active')) {
373
+ //If this is a page, return $content without adding schema.
374
//If I try to return $content after if (YASR_SNIPPET == 'overall_rating')
375
//or (YASR_SNIPPET == 'visitor_rating') $content will have only wp content, losing the buddypress one
376
if (is_page()) {
378
}
379
}
380
381
+ if (!is_singular() && is_main_query() || is_404() || did_action('get_footer')) {
382
return $content;
383
}
384
397
398
$rich_snippet["@context"] = "http://schema.org/";
399
400
$author = get_the_author();
401
$review_name = wp_strip_all_tags(get_the_title());
402
413
$logo_image_url_absolute = $_SERVER['DOCUMENT_ROOT'] . parse_url(YASR_BLOGPOSTING_ORGANIZATION_LOGO, PHP_URL_PATH);
414
415
$post_image_size = @getimagesize($logo_image_url_absolute); //the @ should be useless, just to be safe
416
$logo_image_size = @getimagesize($logo_image_url_absolute); //the @ should be useless, just to be safe
417
} else {
418
$post_image_size[0] = 0;
419
$post_image_size[1] = 0;
429
$post_image_size = @getimagesize($post_image_url_absolute); //the @ should be useless, just to be safe
430
}
431
432
+ $rich_snippet["author"] = array(
433
+ "@type" => "Person",
434
+ "name" => "$author"
435
+ );
436
437
if ($review_choosen === "Product") {
438
$rich_snippet["@type"] = "Product";
439
+ }
440
+ elseif ($review_choosen === "Recipe") {
441
$rich_snippet["@type"] = "Recipe";
442
$rich_snippet["image"] = array(
443
"@type" => "ImageObject",
444
"url" => $post_image_url,
445
"width" => $post_image_size[0],
446
"height" => $post_image_size[1]
447
);
448
+ }
449
+ elseif ($review_choosen == "Place") {
450
$rich_snippet["@type"] = "LocalBusiness";
451
+ }
452
+ elseif ($review_choosen == "Other") {
453
$rich_snippet["@type"] = "BlogPosting";
454
$rich_snippet["datePublished"] = $date;
455
$rich_snippet["headline"] = $review_name;
456
$rich_snippet["mainEntityOfPage"] = array(
457
"@type" => "WebPage",
458
"@id" => get_permalink()
459
);
460
461
$rich_snippet["publisher"] = array(
462
"@type" => "Organization",
463
+ "name" => wp_strip_all_tags(YASR_BLOGPOSTING_ORGANIZATION_NAME), //already sanitized in the settings, just to be safe
464
"logo" => array(
465
"@type" => "ImageObject",
466
"url" => $logo_image_url,
467
"width" => $logo_image_size[0],
468
"height" => $logo_image_size[1]
469
)
470
);
471
472
$rich_snippet["dateModified"] = $date_modified;
508
} //END id if $overall_rating != '-1'
509
510
else {
511
return $content;
512
}
513
514
} //end if ($choosen_snippet['snippet'] == 'overall_rating')
518
$visitor_votes = yasr_get_visitor_votes(false, false);
519
520
if ($visitor_votes) {
521
foreach ($visitor_votes as $rating) {
522
$visitor_rating['votes_number'] = $rating->number_of_votes;
523
$visitor_rating['sum'] = $rating->sum_votes;
524
}
525
} else {
526
return $content;
527
}
528
529
if ($visitor_rating['sum'] != 0 && $visitor_rating['votes_number'] != 0) {
530
531
$average_rating = $visitor_rating['sum'] / $visitor_rating['votes_number'];
532
$average_rating = round($average_rating, 1);
533
534
//name
535
$rich_snippet["name"] = $review_name;
536
$rich_snippet["aggregateRating"] = array(
537
"@type" => "AggregateRating",
538
"ratingValue" => "$average_rating",
540
);
541
542
} else {
543
return $content;
544
}
545
546
}
547
548
+ //if doesn't exists a filter for yasr_filter_existing_schema, false is assigned to $more_rich_snippet
549
+ $more_rich_snippet = apply_filters('yasr_filter_existing_schema', $review_choosen);
550
+
551
+ if ($more_rich_snippet !== false) {
552
+ $rich_snippet = array_merge($rich_snippet, $more_rich_snippet);
553
+ }
554
+
555
if (is_singular() && is_main_query() && !is_404()) {
556
return $content . $script_type . json_encode($rich_snippet) . $end_script_type;
557
} else {
readme.txt CHANGED
@@ -5,7 +5,7 @@ Requires at least: 4.3.0
5
Contributors: Dudo
6
Tested up to: 5.2.2
7
Requires PHP: 5.3
8
- Stable tag: 2.0.3
9
License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
11
Boost the way people interact with your website, e-commerce or blog with an easy and intuitive WordPress rating system!
@@ -133,6 +133,14 @@ If doesn't, it's suggested to ask in a SEO oriented forum.
133
134
The full changelog can be found in the plugin's directory. Recent entries:
135
136
= 2.0.3 =
137
* TWEAKED: some changes in settings page
138
* TWEAKED: new default values for new installations.
@@ -172,3 +180,11 @@ The full changelog can be found in the plugin's directory. Recent entries:
172
* TWEAKED: settings redesigned
173
* TWEAKED: code cleanup
174
5
Contributors: Dudo
6
Tested up to: 5.2.2
7
Requires PHP: 5.3
8
+ Stable tag: 2.0.4
9
License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
11
Boost the way people interact with your website, e-commerce or blog with an easy and intuitive WordPress rating system!
133
134
The full changelog can be found in the plugin's directory. Recent entries:
135
136
+ = 2.0.4 =
137
+ * NEW FEATURE: is now possible align to left, center or right if auto insert is used
138
+ * TWEAKED: check tidy version before use it: this will fix some enconding issue if an old version in server is installed
139
+ * TWEAKED: esc_html used instead of htmlspecialchars in the settings page
140
+ * TWEAKED: added a new filter yasr_filter_existing_schema: useful if there is the need to add new rich snippets
141
+ * TWEAKED: minor changes on schema function (thanks to Olivier)
142
+
143
+
144
= 2.0.3 =
145
* TWEAKED: some changes in settings page
146
* TWEAKED: new default values for new installations.
180
* TWEAKED: settings redesigned
181
* TWEAKED: code cleanup
182
183
+
184
+ = Additional Info =
185
+ External Libraries: [Rater](https://github.com/fredolss/rater-js)
186
+ [tippy](https://atomiks.github.io/tippyjs/)
187
+
188
+ Flat star icon made by[Freepik](http://www.freepik.com)
189
+ from [www.flaticon.com](https://www.flaticon.com/) is licensed by [CC 3.0 BY](http://creativecommons.org/licenses/by/3.0/)
190
+
yasr-settings-page.php CHANGED
@@ -53,7 +53,7 @@ $n_multi_set = null; //Evoid undefined variable when printed outside multiset ta
53
<?php
54
settings_fields('yasr_general_options_group');
55
do_settings_sections('yasr_general_settings_tab');
56
- submit_button(__('Save Settings'));
57
?>
58
</form>
59
</div>
@@ -71,18 +71,13 @@ $n_multi_set = null; //Evoid undefined variable when printed outside multiset ta
71
72
73
if ($active_tab === 'manage_multi') {
74
-
75
include (YASR_ABSOLUTE_PATH . '/lib/admin/settings/yasr-settings-functions-multiset-page.php');
76
-
77
yasr_right_settings_panel();
78
-
79
} //End if ($active_tab=='manage_multi')
80
81
82
if ($active_tab === 'style_options') {
83
-
84
?>
85
-
86
<?php do_action('yasr_add_content_top_style_options_tab', $active_tab); ?>
87
88
<div class="yasr-settingsdiv">
@@ -90,7 +85,7 @@ $n_multi_set = null; //Evoid undefined variable when printed outside multiset ta
90
<?php
91
settings_fields('yasr_style_options_group');
92
do_settings_sections('yasr_style_tab');
93
- submit_button(__('Save'));
94
?>
95
</form>
96
</div>
@@ -128,7 +123,6 @@ $n_multi_set = null; //Evoid undefined variable when printed outside multiset ta
128
129
} //End tab migration
130
131
-
132
do_action('yasr_settings_check_active_tab', $active_tab);
133
134
yasr_right_settings_panel('bottom');
53
<?php
54
settings_fields('yasr_general_options_group');
55
do_settings_sections('yasr_general_settings_tab');
56
+ submit_button(SAVE_All_SETTINGS_TEXT);
57
?>
58
</form>
59
</div>
71
72
73
if ($active_tab === 'manage_multi') {
74
include (YASR_ABSOLUTE_PATH . '/lib/admin/settings/yasr-settings-functions-multiset-page.php');
75
yasr_right_settings_panel();
76
} //End if ($active_tab=='manage_multi')
77
78
79
if ($active_tab === 'style_options') {
80
?>
81
<?php do_action('yasr_add_content_top_style_options_tab', $active_tab); ?>
82
83
<div class="yasr-settingsdiv">
85
<?php
86
settings_fields('yasr_style_options_group');
87
do_settings_sections('yasr_style_tab');
88
+ submit_button(SAVE_All_SETTINGS_TEXT);
89
?>
90
</form>
91
</div>
123
124
} //End tab migration
125
126
do_action('yasr_settings_check_active_tab', $active_tab);
127
128
yasr_right_settings_panel('bottom');
yet-another-stars-rating.php CHANGED
@@ -4,7 +4,7 @@
4
* Plugin Name: Yet Another Stars Rating
5
* Plugin URI: http://wordpress.org/plugins/yet-another-stars-rating/
6
* Description: Yasr - Yet Another Stars Rating is a powerful way to add SEO-friendly user-generated reviews and testimonials to your website posts, pages and CPT, without affecting its speed.
7
- * Version: 2.0.3
8
* Author: Dario Curvino
9
* Author URI: https://dariocurvino.it/
10
* Text Domain: yet-another-stars-rating
@@ -56,7 +56,7 @@ if ( !function_exists( 'yasr_fs' ) ) {
56
'has_paid_plans' => true,
57
'trial' => array(
58
'days' => 14,
59
- 'is_require_payment' => false,
60
),
61
'menu' => array(
62
'slug' => 'yasr_settings_page',
@@ -76,7 +76,7 @@ if ( !function_exists( 'yasr_fs' ) ) {
76
yasr_fs();
77
// Signal that SDK was initiated.
78
do_action( 'yasr_fs_loaded' );
79
- define( 'YASR_VERSION_NUM', '2.0.3' );
80
//Plugin relative path
81
define( "YASR_ABSOLUTE_PATH", dirname( __FILE__ ) );
82
//Plugin RELATIVE PATH without slashes (just the directory's name)
@@ -99,12 +99,14 @@ if ( !function_exists( 'yasr_fs' ) ) {
99
if ( YASR_AUTO_INSERT_ENABLED == 1 ) {
100
define( "YASR_AUTO_INSERT_WHAT", $yasr_stored_options['auto_insert_what'] );
101
define( "YASR_AUTO_INSERT_WHERE", $yasr_stored_options['auto_insert_where'] );
102
define( "YASR_AUTO_INSERT_SIZE", $yasr_stored_options['auto_insert_size'] );
103
define( "YASR_AUTO_INSERT_EXCLUDE_PAGES", $yasr_stored_options['auto_insert_exclude_pages'] );
104
define( "YASR_AUTO_INSERT_CUSTOM_POST_ONLY", $yasr_stored_options['auto_insert_custom_post_only'] );
105
} else {
106
define( "YASR_AUTO_INSERT_WHAT", null );
107
define( "YASR_AUTO_INSERT_WHERE", null );
108
define( "YASR_AUTO_INSERT_SIZE", null );
109
define( "YASR_AUTO_INSERT_EXCLUDE_PAGES", null );
110
define( "YASR_AUTO_INSERT_CUSTOM_POST_ONLY", null );
@@ -205,6 +207,9 @@ if ( !function_exists( 'yasr_fs' ) ) {
205
define( "YASR_MULTI_SET_VALUES_TABLE", $wpdb->prefix . 'yasr_multi_values' );
206
define( "YASR_LOG_TABLE", $wpdb->prefix . 'yasr_log' );
207
define( "YASR_LOADER_IMAGE", YASR_IMG_DIR . "/loader.gif" );
208
$yasr_version_installed = get_option( 'yasr-version' );
209
global $yasr_version_installed ;
210
$yasr_plugin_imported = get_option( 'yasr_plugin_imported' );
@@ -239,6 +244,12 @@ if ( !function_exists( 'yasr_fs' ) ) {
239
global $wpdb ;
240
global $yasr_version_installed ;
241
global $yasr_stored_options ;
242
if ( $yasr_version_installed && $yasr_version_installed < '1.7.3' ) {
243
$wpdb->query( "ALTER TABLE " . YASR_MULTI_SET_FIELDS_TABLE . " CHANGE field_name field_name varchar(40) \n COLLATE 'utf8_unicode_ci' NOT NULL \n AFTER parent_set_id;\n " );
244
}
4
* Plugin Name: Yet Another Stars Rating
5
* Plugin URI: http://wordpress.org/plugins/yet-another-stars-rating/
6
* Description: Yasr - Yet Another Stars Rating is a powerful way to add SEO-friendly user-generated reviews and testimonials to your website posts, pages and CPT, without affecting its speed.
7
+ * Version: 2.0.4
8
* Author: Dario Curvino
9
* Author URI: https://dariocurvino.it/
10
* Text Domain: yet-another-stars-rating
56
'has_paid_plans' => true,
57
'trial' => array(
58
'days' => 14,
59
+ 'is_require_payment' => true,
60
),
61
'menu' => array(
62
'slug' => 'yasr_settings_page',
76
yasr_fs();
77
// Signal that SDK was initiated.
78
do_action( 'yasr_fs_loaded' );
79
+ define( 'YASR_VERSION_NUM', '2.0.4' );
80
//Plugin relative path
81
define( "YASR_ABSOLUTE_PATH", dirname( __FILE__ ) );
82
//Plugin RELATIVE PATH without slashes (just the directory's name)
99
if ( YASR_AUTO_INSERT_ENABLED == 1 ) {
100
define( "YASR_AUTO_INSERT_WHAT", $yasr_stored_options['auto_insert_what'] );
101
define( "YASR_AUTO_INSERT_WHERE", $yasr_stored_options['auto_insert_where'] );
102
+ define( "YASR_AUTO_INSERT_ALIGN", $yasr_stored_options['auto_insert_align'] );
103
define( "YASR_AUTO_INSERT_SIZE", $yasr_stored_options['auto_insert_size'] );
104
define( "YASR_AUTO_INSERT_EXCLUDE_PAGES", $yasr_stored_options['auto_insert_exclude_pages'] );
105
define( "YASR_AUTO_INSERT_CUSTOM_POST_ONLY", $yasr_stored_options['auto_insert_custom_post_only'] );
106
} else {
107
define( "YASR_AUTO_INSERT_WHAT", null );
108
define( "YASR_AUTO_INSERT_WHERE", null );
109
+ define( "YASR_AUTO_INSERT_ALIGN", null );
110
define( "YASR_AUTO_INSERT_SIZE", null );
111
define( "YASR_AUTO_INSERT_EXCLUDE_PAGES", null );
112
define( "YASR_AUTO_INSERT_CUSTOM_POST_ONLY", null );
207
define( "YASR_MULTI_SET_VALUES_TABLE", $wpdb->prefix . 'yasr_multi_values' );
208
define( "YASR_LOG_TABLE", $wpdb->prefix . 'yasr_log' );
209
define( "YASR_LOADER_IMAGE", YASR_IMG_DIR . "/loader.gif" );
210
+ //Text for button in settings pages
211
+ $save_settings_text = __( 'Save All Settings', 'yet-another-stars-rating' );
212
+ define( "SAVE_All_SETTINGS_TEXT", $save_settings_text );
213
$yasr_version_installed = get_option( 'yasr-version' );
214
global $yasr_version_installed ;
215
$yasr_plugin_imported = get_option( 'yasr_plugin_imported' );
244
global $wpdb ;
245
global $yasr_version_installed ;
246
global $yasr_stored_options ;
247
+
248
+ if ( $yasr_version_installed && $yasr_version_installed < '2.0.4' ) {
249
+ $yasr_stored_options['auto_insert_align'] = 'left';
250
+ update_option( 'yasr_general_options', $yasr_stored_options );
251
+ }
252
+
253
if ( $yasr_version_installed && $yasr_version_installed < '1.7.3' ) {
254
$wpdb->query( "ALTER TABLE " . YASR_MULTI_SET_FIELDS_TABLE . " CHANGE field_name field_name varchar(40) \n COLLATE 'utf8_unicode_ci' NOT NULL \n AFTER parent_set_id;\n " );
255
}