Version Description
- New schema ( COVID 19 )
=
Download this release
Release Info
Developer | kcseopro |
Plugin | WP SEO Structured Data Schema |
Version | 2.6.13 |
Comparing to | |
See all releases |
Code changes from version 2.6.12 to 2.6.13
- README.txt +5 -2
- assets/css/admin.css +36 -0
- assets/js/admin.js +64 -0
- languages/wp-seo-structured-data-schema.pot +67 -67
- lib/classes/KcSeoHelper.php +13 -0
- lib/classes/KcSeoMetaData.php +31 -1
- lib/functions/KcSeoOptions.php +204 -38
- lib/models/KcSeoSchemaModel.php +75 -0
- wp-seo-structured-data-schema.php +1 -1
README.txt
CHANGED
@@ -3,8 +3,8 @@ Contributors: kcseopro
|
|
3 |
Donate link:
|
4 |
Tags: seo, schema, structured data, rich snippets, microdata, json-ld, search engine optimization, local seo, google, sitelinks, schema.org, microformat, serp
|
5 |
Requires at least: 4.5
|
6 |
-
Tested up to: 5.
|
7 |
-
Stable tag: 2.6.
|
8 |
License: GPLv3
|
9 |
License URI: http://www.gnu.org/licenses/gpl-3.0.html
|
10 |
|
@@ -114,6 +114,9 @@ You'll find the [FAQ on WPSEMPlugins.com](https://wpsemplugins.com/wordpress-seo
|
|
114 |
|
115 |
== Changelog ==
|
116 |
|
|
|
|
|
|
|
117 |
== 2.6.12 =
|
118 |
* Php bug fix
|
119 |
|
3 |
Donate link:
|
4 |
Tags: seo, schema, structured data, rich snippets, microdata, json-ld, search engine optimization, local seo, google, sitelinks, schema.org, microformat, serp
|
5 |
Requires at least: 4.5
|
6 |
+
Tested up to: 5.4
|
7 |
+
Stable tag: 2.6.13
|
8 |
License: GPLv3
|
9 |
License URI: http://www.gnu.org/licenses/gpl-3.0.html
|
10 |
|
114 |
|
115 |
== Changelog ==
|
116 |
|
117 |
+
== 2.6.13 =
|
118 |
+
* New schema ( COVID 19 )
|
119 |
+
|
120 |
== 2.6.12 =
|
121 |
* Php bug fix
|
122 |
|
assets/css/admin.css
CHANGED
@@ -336,6 +336,42 @@ p.description .required,
|
|
336 |
}
|
337 |
|
338 |
/* End heading container */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
339 |
.schema-holder .ui-tabs .ui-tabs-nav .ui-tabs-anchor {
|
340 |
padding: .5em 0.6em;
|
341 |
font-size: 14px;
|
336 |
}
|
337 |
|
338 |
/* End heading container */
|
339 |
+
/* ============== 2nd Level START ============== */
|
340 |
+
.kcseo-group-item {
|
341 |
+
padding: 20px;
|
342 |
+
border: 1px dashed #777;
|
343 |
+
}
|
344 |
+
|
345 |
+
.kc-multiple-schema-tool {
|
346 |
+
padding: 5px;
|
347 |
+
text-align: right;
|
348 |
+
margin-bottom: 15px;
|
349 |
+
}
|
350 |
+
|
351 |
+
.kcseo-group-item .kc-top-toolbar {
|
352 |
+
text-align: right;
|
353 |
+
}
|
354 |
+
|
355 |
+
span.kc-remove-schema,
|
356 |
+
span.kcseo-remove-group {
|
357 |
+
cursor: pointer;
|
358 |
+
color: red;
|
359 |
+
font-weight: bold;
|
360 |
+
}
|
361 |
+
|
362 |
+
.kc-btn-danger {
|
363 |
+
background: red;
|
364 |
+
border-color: red;
|
365 |
+
color: #ffffff;
|
366 |
+
}
|
367 |
+
|
368 |
+
.multiple-schema-item {
|
369 |
+
border: 2px solid #9ce646;
|
370 |
+
padding: 10px 20px;
|
371 |
+
margin-bottom: 25px;
|
372 |
+
}
|
373 |
+
|
374 |
+
/* ============== 2nd END ================ */
|
375 |
.schema-holder .ui-tabs .ui-tabs-nav .ui-tabs-anchor {
|
376 |
padding: .5em 0.6em;
|
377 |
font-size: 14px;
|
assets/js/admin.js
CHANGED
@@ -1,6 +1,70 @@
|
|
1 |
(function ($) {
|
2 |
'use strict';
|
3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4 |
wpSeoShowHideType();
|
5 |
$("#site_type, #_schema_aggregate_rating_schema_type").change(function () {
|
6 |
wpSeoShowHideType();
|
1 |
(function ($) {
|
2 |
'use strict';
|
3 |
|
4 |
+
$(document).on('click', '.kcseo-group-duplicate', function () {
|
5 |
+
var self = $(this),
|
6 |
+
wrapper = self.parents('.kcseo-group-wrapper'),
|
7 |
+
target = self.parents(".kcseo-group-item"),
|
8 |
+
group_id = wrapper.attr('data-group-id'),
|
9 |
+
group_index = target.attr('data-index'),
|
10 |
+
count = wrapper.find(".kcseo-group-item").length,
|
11 |
+
post_fix = "_" + count,
|
12 |
+
html = $("<div class='kcseo-group-item' data-index='" + count + "' />");
|
13 |
+
html.append('<div class="kc-top-toolbar"><span class="kcseo-remove-group"><span class="dashicons dashicons-trash"></span>Remove</span></div>');
|
14 |
+
html.hide();
|
15 |
+
target.find("> .field-container ").each(function () {
|
16 |
+
var item = $(this).clone(),
|
17 |
+
field = item.find(".field-content").find("input, select, textarea") || '',
|
18 |
+
name = field.attr("name") || '',
|
19 |
+
field_container = item.find(".field-content"),
|
20 |
+
label = item.find("label.field-label"),
|
21 |
+
label_for = label.attr("for") + post_fix;
|
22 |
+
item.attr("id", item.attr("id") + post_fix);
|
23 |
+
label.attr("for", label_for);
|
24 |
+
field_container.attr("id", field_container.attr("id") + post_fix);
|
25 |
+
if (name) {
|
26 |
+
field.attr("id", label_for);
|
27 |
+
field.attr("name", name.replace(group_id + "[" + group_index + "]", group_id + "[" + count + "]"));
|
28 |
+
}
|
29 |
+
html.append(item);
|
30 |
+
});
|
31 |
+
if (wrapper.data('duplicate') === 1) {
|
32 |
+
html.append('<div class="kc-bottom-toolbar"><span class="button button-primary kcseo-group-duplicate">Duplicate Item</span></div>');
|
33 |
+
}
|
34 |
+
wrapper.append(html);
|
35 |
+
html.slideDown(500);
|
36 |
+
});
|
37 |
+
|
38 |
+
$(document).on('click', 'span.kcseo-remove-group', function () {
|
39 |
+
var self = $(this),
|
40 |
+
wrapper = self.parents('.kcseo-group-wrapper'),
|
41 |
+
target = self.parents(".kcseo-group-item"),
|
42 |
+
group_id = wrapper.attr('data-group-id');
|
43 |
+
target.slideUp(500, function () {
|
44 |
+
$(this).remove();
|
45 |
+
wrapper.find("> .kcseo-group-item ").each(function (count, v) {
|
46 |
+
var group_index = $(this).attr('data-index'),
|
47 |
+
post_fix = "_" + count;
|
48 |
+
$(this).attr('data-index', count);
|
49 |
+
$(this).find("> .field-container ").each(function () {
|
50 |
+
var item = $(this),
|
51 |
+
field = item.find(".field-content").find("input, select, textarea") || '',
|
52 |
+
name = field.attr("name") || '',
|
53 |
+
field_container = item.find(".field-content"),
|
54 |
+
label = item.find("label.field-label"),
|
55 |
+
label_for = label.attr("for") + post_fix;
|
56 |
+
item.attr("id", item.attr("id") + post_fix);
|
57 |
+
label.attr("for", label_for);
|
58 |
+
field_container.attr("id", field_container.attr("id") + post_fix);
|
59 |
+
if (name) {
|
60 |
+
field.attr("id", label_for);
|
61 |
+
field.attr("name", name.replace(group_id + "[" + group_index + "]", group_id + "[" + count + "]"));
|
62 |
+
}
|
63 |
+
});
|
64 |
+
});
|
65 |
+
});
|
66 |
+
});
|
67 |
+
|
68 |
wpSeoShowHideType();
|
69 |
$("#site_type, #_schema_aggregate_rating_schema_type").change(function () {
|
70 |
wpSeoShowHideType();
|
languages/wp-seo-structured-data-schema.pot
CHANGED
@@ -13,63 +13,63 @@ msgstr ""
|
|
13 |
"X-Poedit-SourceCharset: UTF-8\n"
|
14 |
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
15 |
|
16 |
-
#: ../lib/classes/KcSeoHelper.php:
|
17 |
msgid "Pro Version Features"
|
18 |
msgstr ""
|
19 |
|
20 |
-
#: ../lib/classes/KcSeoHelper.php:
|
21 |
msgid "Includes Auto-fill function <---Popular"
|
22 |
msgstr ""
|
23 |
|
24 |
-
#: ../lib/classes/KcSeoHelper.php:
|
25 |
msgid "Supports Custom Post Types beyond default page and posts"
|
26 |
msgstr ""
|
27 |
|
28 |
-
#: ../lib/classes/KcSeoHelper.php:
|
29 |
msgid "Supports WordPress Multisite"
|
30 |
msgstr ""
|
31 |
|
32 |
-
#: ../lib/classes/KcSeoHelper.php:
|
33 |
msgid "Supports more schema types:"
|
34 |
msgstr ""
|
35 |
|
36 |
-
#: ../lib/classes/KcSeoHelper.php:
|
37 |
msgid "Books"
|
38 |
msgstr ""
|
39 |
|
40 |
-
#: ../lib/classes/KcSeoHelper.php:
|
41 |
msgid "Courses"
|
42 |
msgstr ""
|
43 |
|
44 |
-
#: ../lib/classes/KcSeoHelper.php:
|
45 |
msgid "Job Postings"
|
46 |
msgstr ""
|
47 |
|
48 |
-
#: ../lib/classes/KcSeoHelper.php:
|
49 |
msgid "Movies"
|
50 |
msgstr ""
|
51 |
|
52 |
-
#: ../lib/classes/KcSeoHelper.php:
|
53 |
msgid "Music"
|
54 |
msgstr ""
|
55 |
|
56 |
-
#: ../lib/classes/KcSeoHelper.php:
|
57 |
msgid "Recipe"
|
58 |
msgstr ""
|
59 |
|
60 |
-
#: ../lib/classes/KcSeoHelper.php:
|
61 |
msgid "TV Episode"
|
62 |
msgstr ""
|
63 |
|
64 |
-
#: ../lib/classes/KcSeoHelper.php:
|
65 |
msgid "QAPage"
|
66 |
msgstr ""
|
67 |
|
68 |
-
#: ../lib/classes/KcSeoHelper.php:
|
69 |
msgid "Item List"
|
70 |
msgstr ""
|
71 |
|
72 |
-
#: ../lib/classes/KcSeoHelper.php:
|
73 |
msgid "Get the Pro Version"
|
74 |
msgstr ""
|
75 |
|
@@ -145,8 +145,8 @@ msgstr ""
|
|
145 |
msgid "Published date"
|
146 |
msgstr ""
|
147 |
|
148 |
-
#: ../lib/functions/KcSeoOptions.php:44, ../lib/functions/KcSeoOptions.php:51, ../lib/functions/KcSeoOptions.php:117, ../lib/functions/KcSeoOptions.php:124, ../lib/functions/KcSeoOptions.php:186, ../lib/functions/KcSeoOptions.php:194, ../lib/functions/KcSeoOptions.php:344, ../lib/functions/KcSeoOptions.php:579, ../lib/functions/KcSeoOptions.php:701, ../lib/functions/KcSeoOptions.php:
|
149 |
-
msgid "Like this: 2015-12-25
|
150 |
msgstr ""
|
151 |
|
152 |
#: ../lib/functions/KcSeoOptions.php:47, ../lib/functions/KcSeoOptions.php:121, ../lib/functions/KcSeoOptions.php:190
|
@@ -169,7 +169,7 @@ msgstr ""
|
|
169 |
msgid "Logos should have a wide aspect ratio, not a square icon.<br>Logos should be no wider than 600px, and no taller than 60px.<br>Always retain the original aspect ratio of the logo when resizing. Ideally, logos are exactly 60px tall with width <= 600px. If maintaining a height of 60px would cause the width to exceed 600px, downscale the logo to exactly 600px wide and reduce the height accordingly below 60px to maintain the original aspect ratio.<br>"
|
170 |
msgstr ""
|
171 |
|
172 |
-
#: ../lib/functions/KcSeoOptions.php:66, ../lib/functions/KcSeoOptions.php:140, ../lib/functions/KcSeoOptions.php:209, ../lib/functions/KcSeoOptions.php:260, ../lib/functions/KcSeoOptions.php:385, ../lib/functions/KcSeoOptions.php:535, ../lib/functions/KcSeoOptions.php:775, ../lib/functions/KcSeoOptions.php:
|
173 |
msgid "Description"
|
174 |
msgstr ""
|
175 |
|
@@ -217,11 +217,11 @@ msgstr ""
|
|
217 |
msgid "News Article"
|
218 |
msgstr ""
|
219 |
|
220 |
-
#: ../lib/functions/KcSeoOptions.php:171, ../lib/functions/KcSeoOptions.php:323, ../lib/functions/KcSeoOptions.php:691, ../lib/functions/KcSeoOptions.php:
|
221 |
msgid "Author"
|
222 |
msgstr ""
|
223 |
|
224 |
-
#: ../lib/functions/KcSeoOptions.php:177, ../lib/functions/KcSeoOptions.php:380, ../lib/functions/KcSeoOptions.php:
|
225 |
msgid "Image"
|
226 |
msgstr ""
|
227 |
|
@@ -233,7 +233,7 @@ msgstr ""
|
|
233 |
msgid "Event"
|
234 |
msgstr ""
|
235 |
|
236 |
-
#: ../lib/functions/KcSeoOptions.php:228, ../lib/functions/KcSeoOptions.php:374, ../lib/functions/KcSeoOptions.php:529, ../lib/functions/KcSeoOptions.php:591, ../lib/functions/KcSeoOptions.php:
|
237 |
msgid "Name"
|
238 |
msgstr ""
|
239 |
|
@@ -317,55 +317,55 @@ msgstr ""
|
|
317 |
msgid "A link to the event's details page. <span class='required'>Not required but (Recommended)</span>"
|
318 |
msgstr ""
|
319 |
|
320 |
-
#: ../lib/functions/KcSeoOptions.php:315, ../lib/functions/KcSeoOptions.php:662, ../lib/functions/KcSeoOptions.php:
|
321 |
msgid "Review"
|
322 |
msgstr ""
|
323 |
|
324 |
-
#: ../lib/functions/KcSeoOptions.php:317, ../lib/functions/KcSeoOptions.php:
|
325 |
msgid "To add review schema for this type, complete fields below and enable, others live blank."
|
326 |
msgstr ""
|
327 |
|
328 |
-
#: ../lib/functions/KcSeoOptions.php:328, ../lib/functions/KcSeoOptions.php:
|
329 |
msgid "Author Same As profile link"
|
330 |
msgstr ""
|
331 |
|
332 |
-
#: ../lib/functions/KcSeoOptions.php:332, ../lib/functions/KcSeoOptions.php:
|
333 |
msgid "A reference page that unambiguously indicates the item's identity; for example, the URL of the item's Wikipedia page, Freebase page, or official website.<br> Enter new line for every entry"
|
334 |
msgstr ""
|
335 |
|
336 |
-
#: ../lib/functions/KcSeoOptions.php:335, ../lib/functions/KcSeoOptions.php:679, ../lib/functions/KcSeoOptions.php:
|
337 |
msgid "Review body"
|
338 |
msgstr ""
|
339 |
|
340 |
-
#: ../lib/functions/KcSeoOptions.php:338, ../lib/functions/KcSeoOptions.php:682, ../lib/functions/KcSeoOptions.php:
|
341 |
msgid "The actual body of the review."
|
342 |
msgstr ""
|
343 |
|
344 |
-
#: ../lib/functions/KcSeoOptions.php:341, ../lib/functions/KcSeoOptions.php:698, ../lib/functions/KcSeoOptions.php:
|
345 |
msgid "Date of Published"
|
346 |
msgstr ""
|
347 |
|
348 |
-
#: ../lib/functions/KcSeoOptions.php:347, ../lib/functions/KcSeoOptions.php:453, ../lib/functions/KcSeoOptions.php:704, ../lib/functions/KcSeoOptions.php:
|
349 |
msgid "Rating value"
|
350 |
msgstr ""
|
351 |
|
352 |
-
#: ../lib/functions/KcSeoOptions.php:350, ../lib/functions/KcSeoOptions.php:707, ../lib/functions/KcSeoOptions.php:798, ../lib/functions/KcSeoOptions.php:
|
353 |
msgid "A numerical quality rating for the item."
|
354 |
msgstr ""
|
355 |
|
356 |
-
#: ../lib/functions/KcSeoOptions.php:353, ../lib/functions/KcSeoOptions.php:710, ../lib/functions/KcSeoOptions.php:
|
357 |
msgid "Best rating"
|
358 |
msgstr ""
|
359 |
|
360 |
-
#: ../lib/functions/KcSeoOptions.php:356, ../lib/functions/KcSeoOptions.php:713, ../lib/functions/KcSeoOptions.php:
|
361 |
msgid "The highest value allowed in this rating system."
|
362 |
msgstr ""
|
363 |
|
364 |
-
#: ../lib/functions/KcSeoOptions.php:359, ../lib/functions/KcSeoOptions.php:716, ../lib/functions/KcSeoOptions.php:
|
365 |
msgid "Worst rating"
|
366 |
msgstr ""
|
367 |
|
368 |
-
#: ../lib/functions/KcSeoOptions.php:362, ../lib/functions/KcSeoOptions.php:719, ../lib/functions/KcSeoOptions.php:
|
369 |
msgid "The lowest value allowed in this rating system. * Required if the rating system is not on a 5-point scale. If worstRating is omitted, 1 is assumed."
|
370 |
msgstr ""
|
371 |
|
@@ -660,7 +660,7 @@ msgstr ""
|
|
660 |
msgid "The item that is being rated."
|
661 |
msgstr ""
|
662 |
|
663 |
-
#: ../lib/functions/KcSeoOptions.php:760, ../lib/functions/KcSeoOptions.php:
|
664 |
msgid "The price range of the business, for example $$$."
|
665 |
msgstr ""
|
666 |
|
@@ -684,131 +684,131 @@ msgstr ""
|
|
684 |
msgid "Specifies the number of people who provided a review with or without an accompanying rating. At least one of ratingCount or reviewCount is required."
|
685 |
msgstr ""
|
686 |
|
687 |
-
#: ../lib/functions/KcSeoOptions.php:794
|
688 |
msgid "Rating Value"
|
689 |
msgstr ""
|
690 |
|
691 |
-
#: ../lib/functions/KcSeoOptions.php:
|
692 |
msgid "Best Rating"
|
693 |
msgstr ""
|
694 |
|
695 |
-
#: ../lib/functions/KcSeoOptions.php:
|
696 |
msgid "The highest value allowed in this rating system. <span class='required'>* Required if the rating system is not a 5-point scale.</span> If bestRating is omitted, 5 is assumed."
|
697 |
msgstr ""
|
698 |
|
699 |
-
#: ../lib/functions/KcSeoOptions.php:
|
700 |
msgid "Worst Rating"
|
701 |
msgstr ""
|
702 |
|
703 |
-
#: ../lib/functions/KcSeoOptions.php:
|
704 |
msgid "The lowest value allowed in this rating system. <span class='required'>* Required if the rating system is not a 5-point scale.</span> If worstRating is omitted, 1 is assumed."
|
705 |
msgstr ""
|
706 |
|
707 |
-
#: ../lib/functions/KcSeoOptions.php:
|
708 |
msgid "Restaurant"
|
709 |
msgstr ""
|
710 |
|
711 |
-
#: ../lib/functions/KcSeoOptions.php:
|
712 |
msgid "Name of the Restaurant"
|
713 |
msgstr ""
|
714 |
|
715 |
-
#: ../lib/functions/KcSeoOptions.php:
|
716 |
msgid "Description of the Restaurant"
|
717 |
msgstr ""
|
718 |
|
719 |
-
#: ../lib/functions/KcSeoOptions.php:
|
720 |
msgid "Opening Hours"
|
721 |
msgstr ""
|
722 |
|
723 |
-
#: ../lib/functions/KcSeoOptions.php:
|
724 |
msgid "Mo,Tu,We,Th,Fr,Sa,Su 11:30-23:00"
|
725 |
msgstr ""
|
726 |
|
727 |
-
#: ../lib/functions/KcSeoOptions.php:
|
728 |
msgid "Telephone"
|
729 |
msgstr ""
|
730 |
|
731 |
-
#: ../lib/functions/KcSeoOptions.php:
|
732 |
msgid "+155501003333"
|
733 |
msgstr ""
|
734 |
|
735 |
-
#: ../lib/functions/KcSeoOptions.php:
|
736 |
msgid "Menu"
|
737 |
msgstr ""
|
738 |
|
739 |
-
#: ../lib/functions/KcSeoOptions.php:
|
740 |
msgid "http://example.com/menu"
|
741 |
msgstr ""
|
742 |
|
743 |
-
#: ../lib/functions/KcSeoOptions.php:
|
744 |
msgid "Address"
|
745 |
msgstr ""
|
746 |
|
747 |
-
#: ../lib/functions/KcSeoOptions.php:
|
748 |
msgid "Price Range"
|
749 |
msgstr ""
|
750 |
|
751 |
-
#: ../lib/functions/KcSeoOptions.php:
|
752 |
msgid "The price range of the business, for example $$$"
|
753 |
msgstr ""
|
754 |
|
755 |
-
#: ../lib/functions/KcSeoOptions.php:
|
756 |
msgid "Serves Cuisine"
|
757 |
msgstr ""
|
758 |
|
759 |
-
#: ../lib/functions/KcSeoOptions.php:
|
760 |
msgid "The cuisine of the restaurant."
|
761 |
msgstr ""
|
762 |
|
763 |
-
#: ../lib/functions/KcSeoOptions.php:
|
764 |
msgid "Local Business"
|
765 |
msgstr ""
|
766 |
|
767 |
-
#: ../lib/functions/KcSeoOptions.php:
|
768 |
msgid "Business Logo"
|
769 |
msgstr ""
|
770 |
|
771 |
-
#: ../lib/functions/KcSeoOptions.php:
|
772 |
msgid "Address locality"
|
773 |
msgstr ""
|
774 |
|
775 |
-
#: ../lib/functions/KcSeoOptions.php:
|
776 |
msgid "City (i.e Kansas city)"
|
777 |
msgstr ""
|
778 |
|
779 |
-
#: ../lib/functions/KcSeoOptions.php:
|
780 |
msgid "Address region"
|
781 |
msgstr ""
|
782 |
|
783 |
-
#: ../lib/functions/KcSeoOptions.php:
|
784 |
msgid "State (i.e. MO)"
|
785 |
msgstr ""
|
786 |
|
787 |
-
#: ../lib/functions/KcSeoOptions.php:
|
788 |
msgid "Postal code"
|
789 |
msgstr ""
|
790 |
|
791 |
-
#: ../lib/functions/KcSeoOptions.php:
|
792 |
msgid "Street address"
|
793 |
msgstr ""
|
794 |
|
795 |
-
#: ../lib/functions/KcSeoOptions.php:
|
796 |
msgid "Book"
|
797 |
msgstr ""
|
798 |
|
799 |
-
#: ../lib/functions/KcSeoOptions.php:
|
800 |
msgid "Course"
|
801 |
msgstr ""
|
802 |
|
803 |
-
#: ../lib/functions/KcSeoOptions.php:
|
804 |
msgid "Job Posting"
|
805 |
msgstr ""
|
806 |
|
807 |
-
#: ../lib/functions/KcSeoOptions.php:
|
808 |
msgid "Movie"
|
809 |
msgstr ""
|
810 |
|
811 |
-
#: ../lib/functions/KcSeoOptions.php:
|
812 |
msgid "TVEpisode"
|
813 |
msgstr ""
|
814 |
|
13 |
"X-Poedit-SourceCharset: UTF-8\n"
|
14 |
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
15 |
|
16 |
+
#: ../lib/classes/KcSeoHelper.php:220
|
17 |
msgid "Pro Version Features"
|
18 |
msgstr ""
|
19 |
|
20 |
+
#: ../lib/classes/KcSeoHelper.php:222
|
21 |
msgid "Includes Auto-fill function <---Popular"
|
22 |
msgstr ""
|
23 |
|
24 |
+
#: ../lib/classes/KcSeoHelper.php:223
|
25 |
msgid "Supports Custom Post Types beyond default page and posts"
|
26 |
msgstr ""
|
27 |
|
28 |
+
#: ../lib/classes/KcSeoHelper.php:224
|
29 |
msgid "Supports WordPress Multisite"
|
30 |
msgstr ""
|
31 |
|
32 |
+
#: ../lib/classes/KcSeoHelper.php:225
|
33 |
msgid "Supports more schema types:"
|
34 |
msgstr ""
|
35 |
|
36 |
+
#: ../lib/classes/KcSeoHelper.php:227
|
37 |
msgid "Books"
|
38 |
msgstr ""
|
39 |
|
40 |
+
#: ../lib/classes/KcSeoHelper.php:228
|
41 |
msgid "Courses"
|
42 |
msgstr ""
|
43 |
|
44 |
+
#: ../lib/classes/KcSeoHelper.php:229
|
45 |
msgid "Job Postings"
|
46 |
msgstr ""
|
47 |
|
48 |
+
#: ../lib/classes/KcSeoHelper.php:230
|
49 |
msgid "Movies"
|
50 |
msgstr ""
|
51 |
|
52 |
+
#: ../lib/classes/KcSeoHelper.php:231, ../lib/functions/KcSeoOptions.php:988
|
53 |
msgid "Music"
|
54 |
msgstr ""
|
55 |
|
56 |
+
#: ../lib/classes/KcSeoHelper.php:232, ../lib/functions/KcSeoOptions.php:992
|
57 |
msgid "Recipe"
|
58 |
msgstr ""
|
59 |
|
60 |
+
#: ../lib/classes/KcSeoHelper.php:233
|
61 |
msgid "TV Episode"
|
62 |
msgstr ""
|
63 |
|
64 |
+
#: ../lib/classes/KcSeoHelper.php:234, ../lib/functions/KcSeoOptions.php:1000
|
65 |
msgid "QAPage"
|
66 |
msgstr ""
|
67 |
|
68 |
+
#: ../lib/classes/KcSeoHelper.php:235, ../lib/functions/KcSeoOptions.php:1004
|
69 |
msgid "Item List"
|
70 |
msgstr ""
|
71 |
|
72 |
+
#: ../lib/classes/KcSeoHelper.php:241
|
73 |
msgid "Get the Pro Version"
|
74 |
msgstr ""
|
75 |
|
145 |
msgid "Published date"
|
146 |
msgstr ""
|
147 |
|
148 |
+
#: ../lib/functions/KcSeoOptions.php:44, ../lib/functions/KcSeoOptions.php:51, ../lib/functions/KcSeoOptions.php:117, ../lib/functions/KcSeoOptions.php:124, ../lib/functions/KcSeoOptions.php:186, ../lib/functions/KcSeoOptions.php:194, ../lib/functions/KcSeoOptions.php:344, ../lib/functions/KcSeoOptions.php:579, ../lib/functions/KcSeoOptions.php:701, ../lib/functions/KcSeoOptions.php:948
|
149 |
+
msgid "Like this: 2015-12-25 14:20:00"
|
150 |
msgstr ""
|
151 |
|
152 |
#: ../lib/functions/KcSeoOptions.php:47, ../lib/functions/KcSeoOptions.php:121, ../lib/functions/KcSeoOptions.php:190
|
169 |
msgid "Logos should have a wide aspect ratio, not a square icon.<br>Logos should be no wider than 600px, and no taller than 60px.<br>Always retain the original aspect ratio of the logo when resizing. Ideally, logos are exactly 60px tall with width <= 600px. If maintaining a height of 60px would cause the width to exceed 600px, downscale the logo to exactly 600px wide and reduce the height accordingly below 60px to maintain the original aspect ratio.<br>"
|
170 |
msgstr ""
|
171 |
|
172 |
+
#: ../lib/functions/KcSeoOptions.php:66, ../lib/functions/KcSeoOptions.php:140, ../lib/functions/KcSeoOptions.php:209, ../lib/functions/KcSeoOptions.php:260, ../lib/functions/KcSeoOptions.php:385, ../lib/functions/KcSeoOptions.php:535, ../lib/functions/KcSeoOptions.php:775, ../lib/functions/KcSeoOptions.php:881, ../lib/views/schema-options.php:170, ../lib/views/schema-options.php:255
|
173 |
msgid "Description"
|
174 |
msgstr ""
|
175 |
|
217 |
msgid "News Article"
|
218 |
msgstr ""
|
219 |
|
220 |
+
#: ../lib/functions/KcSeoOptions.php:171, ../lib/functions/KcSeoOptions.php:323, ../lib/functions/KcSeoOptions.php:691, ../lib/functions/KcSeoOptions.php:927
|
221 |
msgid "Author"
|
222 |
msgstr ""
|
223 |
|
224 |
+
#: ../lib/functions/KcSeoOptions.php:177, ../lib/functions/KcSeoOptions.php:380, ../lib/functions/KcSeoOptions.php:848, ../lib/views/schema-options.php:247
|
225 |
msgid "Image"
|
226 |
msgstr ""
|
227 |
|
233 |
msgid "Event"
|
234 |
msgstr ""
|
235 |
|
236 |
+
#: ../lib/functions/KcSeoOptions.php:228, ../lib/functions/KcSeoOptions.php:374, ../lib/functions/KcSeoOptions.php:529, ../lib/functions/KcSeoOptions.php:591, ../lib/functions/KcSeoOptions.php:876, ../lib/views/schema-options.php:224
|
237 |
msgid "Name"
|
238 |
msgstr ""
|
239 |
|
317 |
msgid "A link to the event's details page. <span class='required'>Not required but (Recommended)</span>"
|
318 |
msgstr ""
|
319 |
|
320 |
+
#: ../lib/functions/KcSeoOptions.php:315, ../lib/functions/KcSeoOptions.php:662, ../lib/functions/KcSeoOptions.php:919
|
321 |
msgid "Review"
|
322 |
msgstr ""
|
323 |
|
324 |
+
#: ../lib/functions/KcSeoOptions.php:317, ../lib/functions/KcSeoOptions.php:921
|
325 |
msgid "To add review schema for this type, complete fields below and enable, others live blank."
|
326 |
msgstr ""
|
327 |
|
328 |
+
#: ../lib/functions/KcSeoOptions.php:328, ../lib/functions/KcSeoOptions.php:932
|
329 |
msgid "Author Same As profile link"
|
330 |
msgstr ""
|
331 |
|
332 |
+
#: ../lib/functions/KcSeoOptions.php:332, ../lib/functions/KcSeoOptions.php:936
|
333 |
msgid "A reference page that unambiguously indicates the item's identity; for example, the URL of the item's Wikipedia page, Freebase page, or official website.<br> Enter new line for every entry"
|
334 |
msgstr ""
|
335 |
|
336 |
+
#: ../lib/functions/KcSeoOptions.php:335, ../lib/functions/KcSeoOptions.php:679, ../lib/functions/KcSeoOptions.php:939
|
337 |
msgid "Review body"
|
338 |
msgstr ""
|
339 |
|
340 |
+
#: ../lib/functions/KcSeoOptions.php:338, ../lib/functions/KcSeoOptions.php:682, ../lib/functions/KcSeoOptions.php:942
|
341 |
msgid "The actual body of the review."
|
342 |
msgstr ""
|
343 |
|
344 |
+
#: ../lib/functions/KcSeoOptions.php:341, ../lib/functions/KcSeoOptions.php:698, ../lib/functions/KcSeoOptions.php:945
|
345 |
msgid "Date of Published"
|
346 |
msgstr ""
|
347 |
|
348 |
+
#: ../lib/functions/KcSeoOptions.php:347, ../lib/functions/KcSeoOptions.php:453, ../lib/functions/KcSeoOptions.php:704, ../lib/functions/KcSeoOptions.php:951
|
349 |
msgid "Rating value"
|
350 |
msgstr ""
|
351 |
|
352 |
+
#: ../lib/functions/KcSeoOptions.php:350, ../lib/functions/KcSeoOptions.php:707, ../lib/functions/KcSeoOptions.php:798, ../lib/functions/KcSeoOptions.php:954
|
353 |
msgid "A numerical quality rating for the item."
|
354 |
msgstr ""
|
355 |
|
356 |
+
#: ../lib/functions/KcSeoOptions.php:353, ../lib/functions/KcSeoOptions.php:710, ../lib/functions/KcSeoOptions.php:957
|
357 |
msgid "Best rating"
|
358 |
msgstr ""
|
359 |
|
360 |
+
#: ../lib/functions/KcSeoOptions.php:356, ../lib/functions/KcSeoOptions.php:713, ../lib/functions/KcSeoOptions.php:960
|
361 |
msgid "The highest value allowed in this rating system."
|
362 |
msgstr ""
|
363 |
|
364 |
+
#: ../lib/functions/KcSeoOptions.php:359, ../lib/functions/KcSeoOptions.php:716, ../lib/functions/KcSeoOptions.php:963
|
365 |
msgid "Worst rating"
|
366 |
msgstr ""
|
367 |
|
368 |
+
#: ../lib/functions/KcSeoOptions.php:362, ../lib/functions/KcSeoOptions.php:719, ../lib/functions/KcSeoOptions.php:966
|
369 |
msgid "The lowest value allowed in this rating system. * Required if the rating system is not on a 5-point scale. If worstRating is omitted, 1 is assumed."
|
370 |
msgstr ""
|
371 |
|
660 |
msgid "The item that is being rated."
|
661 |
msgstr ""
|
662 |
|
663 |
+
#: ../lib/functions/KcSeoOptions.php:760, ../lib/functions/KcSeoOptions.php:893, ../lib/views/schema-options.php:118
|
664 |
msgid "The price range of the business, for example $$$."
|
665 |
msgstr ""
|
666 |
|
684 |
msgid "Specifies the number of people who provided a review with or without an accompanying rating. At least one of ratingCount or reviewCount is required."
|
685 |
msgstr ""
|
686 |
|
687 |
+
#: ../lib/functions/KcSeoOptions.php:794
|
688 |
msgid "Rating Value"
|
689 |
msgstr ""
|
690 |
|
691 |
+
#: ../lib/functions/KcSeoOptions.php:801
|
692 |
msgid "Best Rating"
|
693 |
msgstr ""
|
694 |
|
695 |
+
#: ../lib/functions/KcSeoOptions.php:805
|
696 |
msgid "The highest value allowed in this rating system. <span class='required'>* Required if the rating system is not a 5-point scale.</span> If bestRating is omitted, 5 is assumed."
|
697 |
msgstr ""
|
698 |
|
699 |
+
#: ../lib/functions/KcSeoOptions.php:808
|
700 |
msgid "Worst Rating"
|
701 |
msgstr ""
|
702 |
|
703 |
+
#: ../lib/functions/KcSeoOptions.php:812
|
704 |
msgid "The lowest value allowed in this rating system. <span class='required'>* Required if the rating system is not a 5-point scale.</span> If worstRating is omitted, 1 is assumed."
|
705 |
msgstr ""
|
706 |
|
707 |
+
#: ../lib/functions/KcSeoOptions.php:818
|
708 |
msgid "Restaurant"
|
709 |
msgstr ""
|
710 |
|
711 |
+
#: ../lib/functions/KcSeoOptions.php:824
|
712 |
msgid "Name of the Restaurant"
|
713 |
msgstr ""
|
714 |
|
715 |
+
#: ../lib/functions/KcSeoOptions.php:829
|
716 |
msgid "Description of the Restaurant"
|
717 |
msgstr ""
|
718 |
|
719 |
+
#: ../lib/functions/KcSeoOptions.php:833
|
720 |
msgid "Opening Hours"
|
721 |
msgstr ""
|
722 |
|
723 |
+
#: ../lib/functions/KcSeoOptions.php:835
|
724 |
msgid "Mo,Tu,We,Th,Fr,Sa,Su 11:30-23:00"
|
725 |
msgstr ""
|
726 |
|
727 |
+
#: ../lib/functions/KcSeoOptions.php:838, ../lib/functions/KcSeoOptions.php:914
|
728 |
msgid "Telephone"
|
729 |
msgstr ""
|
730 |
|
731 |
+
#: ../lib/functions/KcSeoOptions.php:840
|
732 |
msgid "+155501003333"
|
733 |
msgstr ""
|
734 |
|
735 |
+
#: ../lib/functions/KcSeoOptions.php:843
|
736 |
msgid "Menu"
|
737 |
msgstr ""
|
738 |
|
739 |
+
#: ../lib/functions/KcSeoOptions.php:845
|
740 |
msgid "http://example.com/menu"
|
741 |
msgstr ""
|
742 |
|
743 |
+
#: ../lib/functions/KcSeoOptions.php:853, ../lib/views/schema-options.php:270
|
744 |
msgid "Address"
|
745 |
msgstr ""
|
746 |
|
747 |
+
#: ../lib/functions/KcSeoOptions.php:857, ../lib/functions/KcSeoOptions.php:890, ../lib/views/schema-options.php:113
|
748 |
msgid "Price Range"
|
749 |
msgstr ""
|
750 |
|
751 |
+
#: ../lib/functions/KcSeoOptions.php:859
|
752 |
msgid "The price range of the business, for example $$$"
|
753 |
msgstr ""
|
754 |
|
755 |
+
#: ../lib/functions/KcSeoOptions.php:862
|
756 |
msgid "Serves Cuisine"
|
757 |
msgstr ""
|
758 |
|
759 |
+
#: ../lib/functions/KcSeoOptions.php:864, ../lib/views/schema-options.php:159
|
760 |
msgid "The cuisine of the restaurant."
|
761 |
msgstr ""
|
762 |
|
763 |
+
#: ../lib/functions/KcSeoOptions.php:870
|
764 |
msgid "Local Business"
|
765 |
msgstr ""
|
766 |
|
767 |
+
#: ../lib/functions/KcSeoOptions.php:885
|
768 |
msgid "Business Logo"
|
769 |
msgstr ""
|
770 |
|
771 |
+
#: ../lib/functions/KcSeoOptions.php:896
|
772 |
msgid "Address locality"
|
773 |
msgstr ""
|
774 |
|
775 |
+
#: ../lib/functions/KcSeoOptions.php:898
|
776 |
msgid "City (i.e Kansas city)"
|
777 |
msgstr ""
|
778 |
|
779 |
+
#: ../lib/functions/KcSeoOptions.php:901
|
780 |
msgid "Address region"
|
781 |
msgstr ""
|
782 |
|
783 |
+
#: ../lib/functions/KcSeoOptions.php:903
|
784 |
msgid "State (i.e. MO)"
|
785 |
msgstr ""
|
786 |
|
787 |
+
#: ../lib/functions/KcSeoOptions.php:906
|
788 |
msgid "Postal code"
|
789 |
msgstr ""
|
790 |
|
791 |
+
#: ../lib/functions/KcSeoOptions.php:910
|
792 |
msgid "Street address"
|
793 |
msgstr ""
|
794 |
|
795 |
+
#: ../lib/functions/KcSeoOptions.php:972
|
796 |
msgid "Book"
|
797 |
msgstr ""
|
798 |
|
799 |
+
#: ../lib/functions/KcSeoOptions.php:976
|
800 |
msgid "Course"
|
801 |
msgstr ""
|
802 |
|
803 |
+
#: ../lib/functions/KcSeoOptions.php:980
|
804 |
msgid "Job Posting"
|
805 |
msgstr ""
|
806 |
|
807 |
+
#: ../lib/functions/KcSeoOptions.php:984
|
808 |
msgid "Movie"
|
809 |
msgstr ""
|
810 |
|
811 |
+
#: ../lib/functions/KcSeoOptions.php:996
|
812 |
msgid "TVEpisode"
|
813 |
msgstr ""
|
814 |
|
lib/classes/KcSeoHelper.php
CHANGED
@@ -85,6 +85,19 @@ if (!class_exists('KcSeoSettings')):
|
|
85 |
$newValue = esc_url($value);
|
86 |
} else if ($type == 'textarea') {
|
87 |
$newValue = wp_kses($value, array());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
88 |
} else {
|
89 |
$newValue = sanitize_text_field($value);
|
90 |
}
|
85 |
$newValue = esc_url($value);
|
86 |
} else if ($type == 'textarea') {
|
87 |
$newValue = wp_kses($value, array());
|
88 |
+
} else if ($field['type'] == 'group' && !empty($field['fields'])) {
|
89 |
+
$newGValue = array();
|
90 |
+
$groupValue = !empty($value) && is_array($value) ? $value : array();
|
91 |
+
foreach ($groupValue as $gId => $gValue) {
|
92 |
+
$newVItem = array();
|
93 |
+
foreach ($field['fields'] as $gFid => $fieldItem) {
|
94 |
+
if (isset($gValue[$gFid])) {
|
95 |
+
$newVItem[$gFid] = $this->sanitize($fieldItem, $gValue[$gFid]);
|
96 |
+
}
|
97 |
+
}
|
98 |
+
array_push($newGValue, $newVItem);
|
99 |
+
}
|
100 |
+
$newValue = $newGValue;
|
101 |
} else {
|
102 |
$newValue = sanitize_text_field($value);
|
103 |
}
|
lib/classes/KcSeoMetaData.php
CHANGED
@@ -84,7 +84,37 @@ if ( ! class_exists( 'KcSeoMetaData' ) ):
|
|
84 |
$data['id'] = $tabId . "_" . $fieldId;
|
85 |
$data['name'] = $tabId . "[{$fieldId}]";
|
86 |
$data['value'] = ( ! empty( $metaData[ $fieldId ] ) ? $metaData[ $fieldId ] : null );
|
87 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
88 |
}
|
89 |
}
|
90 |
if ( ! empty( $schema['pro'] ) && $schema['pro'] ) {
|
84 |
$data['id'] = $tabId . "_" . $fieldId;
|
85 |
$data['name'] = $tabId . "[{$fieldId}]";
|
86 |
$data['value'] = ( ! empty( $metaData[ $fieldId ] ) ? $metaData[ $fieldId ] : null );
|
87 |
+
if ($data['type'] === 'group' && !empty($data['fields'])) {
|
88 |
+
$groupMetaData = isset($metaData[$fieldId]) && !empty($metaData[$fieldId]) ? $metaData[$fieldId] : array(array());
|
89 |
+
$html_g = null;
|
90 |
+
$i = 0;
|
91 |
+
foreach ($groupMetaData as $imDataId => $mData) {
|
92 |
+
$html_gItem = null;
|
93 |
+
foreach ($data['fields'] as $gFid => $field) {
|
94 |
+
$field['fieldId'] = $fieldId . '-' . $gFid;
|
95 |
+
$field['id'] = $tabId . "_" . $fieldId . '_' . $gFid;
|
96 |
+
$field['name'] = $tabId . "[$fieldId]" . "[$imDataId][$gFid]";
|
97 |
+
$field['value'] = (!empty($mData[$gFid]) ? $mData[$gFid] : null);
|
98 |
+
$html_gItem .= $schemas->get_field($field);
|
99 |
+
}
|
100 |
+
$html_g .= sprintf('<div class="kcseo-group-item" data-index="%d" id="%s">%s%s%s</div>',
|
101 |
+
$imDataId,
|
102 |
+
$tabId . "_" . $fieldId . "_group_item_" . $imDataId,
|
103 |
+
isset($data['duplicate']) && $imDataId > 0 ? '<div class="kc-top-toolbar"><span class="kcseo-remove-group"><span class="dashicons dashicons-trash"></span>Remove</span></div>' : null,
|
104 |
+
$html_gItem,
|
105 |
+
isset($data['duplicate']) ? '<div class="kc-bottom-toolbar"><span class="button button-primary kcseo-group-duplicate">Duplicate item</span></div>' : null
|
106 |
+
);
|
107 |
+
}
|
108 |
+
$htmlCont .= sprintf('<div class="field-container kcseo-group-wrapper" data-duplicate="%d" data-group-id="%s" id="%s">%s</div>',
|
109 |
+
isset($data['duplicate']) ? true : false,
|
110 |
+
$tabId . "[$fieldId]",
|
111 |
+
$tabId . "_" . $fieldId . "_group_wrapper",
|
112 |
+
$html_g
|
113 |
+
);
|
114 |
+
|
115 |
+
}else {
|
116 |
+
$htmlCont .= $schemas->get_field($data);
|
117 |
+
}
|
118 |
}
|
119 |
}
|
120 |
if ( ! empty( $schema['pro'] ) && $schema['pro'] ) {
|
lib/functions/KcSeoOptions.php
CHANGED
@@ -5,7 +5,7 @@ class KcSeoOptions
|
|
5 |
|
6 |
static function getSchemaTypes() {
|
7 |
$schemas = array(
|
8 |
-
'article'
|
9 |
'pro' => false,
|
10 |
'title' => __("Article", "wp-seo-structured-data-schema"),
|
11 |
'fields' => array(
|
@@ -41,14 +41,14 @@ class KcSeoOptions
|
|
41 |
'type' => 'text',
|
42 |
'class' => 'kcseo-date',
|
43 |
'required' => true,
|
44 |
-
'desc' => __('Like this: 2015-12-25
|
45 |
),
|
46 |
'dateModified' => array(
|
47 |
'title' => __('Modified date', "wp-seo-structured-data-schema"),
|
48 |
'type' => 'text',
|
49 |
'class' => 'kcseo-date',
|
50 |
'required' => true,
|
51 |
-
'desc' => __('Like this: 2015-12-25
|
52 |
),
|
53 |
'publisher' => array(
|
54 |
'title' => __('Publisher', "wp-seo-structured-data-schema"),
|
@@ -79,7 +79,7 @@ class KcSeoOptions
|
|
79 |
),
|
80 |
)
|
81 |
),
|
82 |
-
'blog_posting'
|
83 |
'pro' => false,
|
84 |
'title' => __('Blog Posting', "wp-seo-structured-data-schema"),
|
85 |
'fields' => array(
|
@@ -114,14 +114,14 @@ class KcSeoOptions
|
|
114 |
'title' => __('Published date', "wp-seo-structured-data-schema"),
|
115 |
'type' => 'text',
|
116 |
'class' => 'kcseo-date',
|
117 |
-
'desc' => __('Like this: 2015-12-25
|
118 |
'required' => true
|
119 |
),
|
120 |
'dateModified' => array(
|
121 |
'title' => __('Modified date', "wp-seo-structured-data-schema"),
|
122 |
'type' => 'text',
|
123 |
'class' => 'kcseo-date',
|
124 |
-
'desc' => __('Like this: 2015-12-25
|
125 |
'required' => true
|
126 |
),
|
127 |
'publisher' => array(
|
@@ -148,7 +148,7 @@ class KcSeoOptions
|
|
148 |
)
|
149 |
)
|
150 |
),
|
151 |
-
'news_article'
|
152 |
'pro' => false,
|
153 |
'title' => __('News Article', "wp-seo-structured-data-schema"),
|
154 |
'fields' => array(
|
@@ -183,7 +183,7 @@ class KcSeoOptions
|
|
183 |
'title' => __('Published date', "wp-seo-structured-data-schema"),
|
184 |
'type' => 'text',
|
185 |
'class' => 'kcseo-date',
|
186 |
-
'desc' => __('Like this: 2015-12-25
|
187 |
'required' => true
|
188 |
),
|
189 |
'dateModified' => array(
|
@@ -191,7 +191,7 @@ class KcSeoOptions
|
|
191 |
'type' => 'text',
|
192 |
'class' => 'kcseo-date',
|
193 |
'required' => true,
|
194 |
-
'desc' => __('Like this: 2015-12-25
|
195 |
),
|
196 |
'publisher' => array(
|
197 |
'title' => __('Publisher', "wp-seo-structured-data-schema"),
|
@@ -217,7 +217,7 @@ class KcSeoOptions
|
|
217 |
)
|
218 |
)
|
219 |
),
|
220 |
-
'event'
|
221 |
'pro' => false,
|
222 |
'title' => __('Event', "wp-seo-structured-data-schema"),
|
223 |
'fields' => array(
|
@@ -341,7 +341,7 @@ class KcSeoOptions
|
|
341 |
'title' => __('Date of Published', "wp-seo-structured-data-schema"),
|
342 |
'type' => 'text',
|
343 |
'class' => 'kcseo-date',
|
344 |
-
'desc' => __("Like this: 2015-12-25
|
345 |
),
|
346 |
'review_ratingValue' => array(
|
347 |
'title' => __('Rating value', "wp-seo-structured-data-schema"),
|
@@ -363,7 +363,7 @@ class KcSeoOptions
|
|
363 |
)
|
364 |
)
|
365 |
),
|
366 |
-
'product'
|
367 |
'pro' => false,
|
368 |
'title' => __('Product', "wp-seo-structured-data-schema"),
|
369 |
'fields' => array(
|
@@ -518,7 +518,7 @@ class KcSeoOptions
|
|
518 |
),
|
519 |
)
|
520 |
),
|
521 |
-
'video'
|
522 |
'pro' => false,
|
523 |
'title' => __('Video', "wp-seo-structured-data-schema"),
|
524 |
'fields' => array(
|
@@ -576,11 +576,11 @@ class KcSeoOptions
|
|
576 |
'title' => __('Expires', "wp-seo-structured-data-schema"),
|
577 |
'type' => 'text',
|
578 |
'class' => 'kcseo-date',
|
579 |
-
'desc' => __("Like this: 2015-12-25
|
580 |
),
|
581 |
)
|
582 |
),
|
583 |
-
'service'
|
584 |
'pro' => false,
|
585 |
'title' => __('Service', "wp-seo-structured-data-schema"),
|
586 |
'fields' => array(
|
@@ -657,7 +657,7 @@ class KcSeoOptions
|
|
657 |
),
|
658 |
)
|
659 |
),
|
660 |
-
'review'
|
661 |
'pro' => false,
|
662 |
'title' => __('Review', "wp-seo-structured-data-schema"),
|
663 |
'fields' => array(
|
@@ -698,7 +698,7 @@ class KcSeoOptions
|
|
698 |
'title' => __('Date of Published', "wp-seo-structured-data-schema"),
|
699 |
'type' => 'text',
|
700 |
'class' => 'kcseo-date',
|
701 |
-
'desc' => __("Like this: 2015-12-25
|
702 |
),
|
703 |
'ratingValue' => array(
|
704 |
'title' => __('Rating value', "wp-seo-structured-data-schema"),
|
@@ -725,7 +725,7 @@ class KcSeoOptions
|
|
725 |
)
|
726 |
)
|
727 |
),
|
728 |
-
'aggregate_rating'
|
729 |
'pro' => false,
|
730 |
'title' => __('Aggregate Ratings', "wp-seo-structured-data-schema"),
|
731 |
'fields' => array(
|
@@ -790,13 +790,6 @@ class KcSeoOptions
|
|
790 |
'required' => true,
|
791 |
'desc' => __("Specifies the number of people who provided a review with or without an accompanying rating. At least one of ratingCount or reviewCount is required.", "wp-seo-structured-data-schema")
|
792 |
),
|
793 |
-
'ratingValue' => array(
|
794 |
-
'title' => __('Rating Value', "wp-seo-structured-data-schema"),
|
795 |
-
'type' => 'number',
|
796 |
-
'attr' => 'step="any"',
|
797 |
-
'required' => true,
|
798 |
-
'desc' => __("A numerical quality rating for the item.", "wp-seo-structured-data-schema")
|
799 |
-
),
|
800 |
'ratingValue' => array(
|
801 |
'title' => __('Rating Value', "wp-seo-structured-data-schema"),
|
802 |
'attr' => 'step="any"',
|
@@ -820,7 +813,7 @@ class KcSeoOptions
|
|
820 |
)
|
821 |
)
|
822 |
),
|
823 |
-
'restaurant'
|
824 |
'pro' => false,
|
825 |
'title' => __('Restaurant', "wp-seo-structured-data-schema"),
|
826 |
'fields' => array(
|
@@ -872,7 +865,7 @@ class KcSeoOptions
|
|
872 |
)
|
873 |
)
|
874 |
),
|
875 |
-
'localBusiness'
|
876 |
'pro' => false,
|
877 |
'title' => __('Local Business', "wp-seo-structured-data-schema"),
|
878 |
'fields' => array(
|
@@ -952,7 +945,7 @@ class KcSeoOptions
|
|
952 |
'title' => __('Date of Published', "wp-seo-structured-data-schema"),
|
953 |
'type' => 'text',
|
954 |
'class' => 'kcseo-date',
|
955 |
-
'desc' => __("Like this: 2015-12-25
|
956 |
),
|
957 |
'review_ratingValue' => array(
|
958 |
'title' => __('Rating value', "wp-seo-structured-data-schema"),
|
@@ -974,42 +967,161 @@ class KcSeoOptions
|
|
974 |
)
|
975 |
)
|
976 |
),
|
977 |
-
'book'
|
978 |
'pro' => true,
|
979 |
'title' => __("Book", "wp-seo-structured-data-schema"),
|
980 |
),
|
981 |
-
'course'
|
982 |
'pro' => true,
|
983 |
'title' => __("Course", "wp-seo-structured-data-schema"),
|
984 |
),
|
985 |
-
'JobPosting'
|
986 |
'pro' => true,
|
987 |
'title' => __("Job Posting", "wp-seo-structured-data-schema"),
|
988 |
),
|
989 |
-
'movie'
|
990 |
'pro' => true,
|
991 |
'title' => __("Movie", "wp-seo-structured-data-schema"),
|
992 |
),
|
993 |
-
'music'
|
994 |
'pro' => true,
|
995 |
'title' => __("Music", "wp-seo-structured-data-schema"),
|
996 |
),
|
997 |
-
'recipe'
|
998 |
'pro' => true,
|
999 |
'title' => __("Recipe", "wp-seo-structured-data-schema"),
|
1000 |
),
|
1001 |
-
'TVEpisode'
|
1002 |
'pro' => true,
|
1003 |
'title' => __("TVEpisode", "wp-seo-structured-data-schema"),
|
1004 |
),
|
1005 |
-
'question'
|
1006 |
'pro' => true,
|
1007 |
'title' => __("QAPage", "wp-seo-structured-data-schema"),
|
1008 |
),
|
1009 |
-
'itemList'
|
1010 |
'pro' => true,
|
1011 |
'title' => __("Item List", "wp-seo-structured-data-schema"),
|
1012 |
-
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1013 |
);
|
1014 |
|
1015 |
return apply_filters('kcseo_schema_types', $schemas);
|
@@ -1576,6 +1688,60 @@ class KcSeoOptions
|
|
1576 |
return apply_filters('kcseo_social_list', $socialList);
|
1577 |
}
|
1578 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1579 |
static function getReviewNotice() {
|
1580 |
$html = null;
|
1581 |
$html = '<span>As of September, Google made a major change to review snippet schema and structure data markup. Google no longer support "self-serving" independent markup tied to the general types and has narrow support to specific types.</span><br><br>
|
5 |
|
6 |
static function getSchemaTypes() {
|
7 |
$schemas = array(
|
8 |
+
'article' => array(
|
9 |
'pro' => false,
|
10 |
'title' => __("Article", "wp-seo-structured-data-schema"),
|
11 |
'fields' => array(
|
41 |
'type' => 'text',
|
42 |
'class' => 'kcseo-date',
|
43 |
'required' => true,
|
44 |
+
'desc' => __('Like this: 2015-12-25 14:20:00', "wp-seo-structured-data-schema")
|
45 |
),
|
46 |
'dateModified' => array(
|
47 |
'title' => __('Modified date', "wp-seo-structured-data-schema"),
|
48 |
'type' => 'text',
|
49 |
'class' => 'kcseo-date',
|
50 |
'required' => true,
|
51 |
+
'desc' => __('Like this: 2015-12-25 14:20:00', "wp-seo-structured-data-schema")
|
52 |
),
|
53 |
'publisher' => array(
|
54 |
'title' => __('Publisher', "wp-seo-structured-data-schema"),
|
79 |
),
|
80 |
)
|
81 |
),
|
82 |
+
'blog_posting' => array(
|
83 |
'pro' => false,
|
84 |
'title' => __('Blog Posting', "wp-seo-structured-data-schema"),
|
85 |
'fields' => array(
|
114 |
'title' => __('Published date', "wp-seo-structured-data-schema"),
|
115 |
'type' => 'text',
|
116 |
'class' => 'kcseo-date',
|
117 |
+
'desc' => __('Like this: 2015-12-25 14:20:00', "wp-seo-structured-data-schema"),
|
118 |
'required' => true
|
119 |
),
|
120 |
'dateModified' => array(
|
121 |
'title' => __('Modified date', "wp-seo-structured-data-schema"),
|
122 |
'type' => 'text',
|
123 |
'class' => 'kcseo-date',
|
124 |
+
'desc' => __('Like this: 2015-12-25 14:20:00', "wp-seo-structured-data-schema"),
|
125 |
'required' => true
|
126 |
),
|
127 |
'publisher' => array(
|
148 |
)
|
149 |
)
|
150 |
),
|
151 |
+
'news_article' => array(
|
152 |
'pro' => false,
|
153 |
'title' => __('News Article', "wp-seo-structured-data-schema"),
|
154 |
'fields' => array(
|
183 |
'title' => __('Published date', "wp-seo-structured-data-schema"),
|
184 |
'type' => 'text',
|
185 |
'class' => 'kcseo-date',
|
186 |
+
'desc' => __('Like this: 2015-12-25 14:20:00', "wp-seo-structured-data-schema"),
|
187 |
'required' => true
|
188 |
),
|
189 |
'dateModified' => array(
|
191 |
'type' => 'text',
|
192 |
'class' => 'kcseo-date',
|
193 |
'required' => true,
|
194 |
+
'desc' => __('Like this: 2015-12-25 14:20:00', "wp-seo-structured-data-schema")
|
195 |
),
|
196 |
'publisher' => array(
|
197 |
'title' => __('Publisher', "wp-seo-structured-data-schema"),
|
217 |
)
|
218 |
)
|
219 |
),
|
220 |
+
'event' => array(
|
221 |
'pro' => false,
|
222 |
'title' => __('Event', "wp-seo-structured-data-schema"),
|
223 |
'fields' => array(
|
341 |
'title' => __('Date of Published', "wp-seo-structured-data-schema"),
|
342 |
'type' => 'text',
|
343 |
'class' => 'kcseo-date',
|
344 |
+
'desc' => __("Like this: 2015-12-25 14:20:00", "wp-seo-structured-data-schema")
|
345 |
),
|
346 |
'review_ratingValue' => array(
|
347 |
'title' => __('Rating value', "wp-seo-structured-data-schema"),
|
363 |
)
|
364 |
)
|
365 |
),
|
366 |
+
'product' => array(
|
367 |
'pro' => false,
|
368 |
'title' => __('Product', "wp-seo-structured-data-schema"),
|
369 |
'fields' => array(
|
518 |
),
|
519 |
)
|
520 |
),
|
521 |
+
'video' => array(
|
522 |
'pro' => false,
|
523 |
'title' => __('Video', "wp-seo-structured-data-schema"),
|
524 |
'fields' => array(
|
576 |
'title' => __('Expires', "wp-seo-structured-data-schema"),
|
577 |
'type' => 'text',
|
578 |
'class' => 'kcseo-date',
|
579 |
+
'desc' => __("Like this: 2015-12-25 14:20:00", "wp-seo-structured-data-schema")
|
580 |
),
|
581 |
)
|
582 |
),
|
583 |
+
'service' => array(
|
584 |
'pro' => false,
|
585 |
'title' => __('Service', "wp-seo-structured-data-schema"),
|
586 |
'fields' => array(
|
657 |
),
|
658 |
)
|
659 |
),
|
660 |
+
'review' => array(
|
661 |
'pro' => false,
|
662 |
'title' => __('Review', "wp-seo-structured-data-schema"),
|
663 |
'fields' => array(
|
698 |
'title' => __('Date of Published', "wp-seo-structured-data-schema"),
|
699 |
'type' => 'text',
|
700 |
'class' => 'kcseo-date',
|
701 |
+
'desc' => __("Like this: 2015-12-25 14:20:00", "wp-seo-structured-data-schema")
|
702 |
),
|
703 |
'ratingValue' => array(
|
704 |
'title' => __('Rating value', "wp-seo-structured-data-schema"),
|
725 |
)
|
726 |
)
|
727 |
),
|
728 |
+
'aggregate_rating' => array(
|
729 |
'pro' => false,
|
730 |
'title' => __('Aggregate Ratings', "wp-seo-structured-data-schema"),
|
731 |
'fields' => array(
|
790 |
'required' => true,
|
791 |
'desc' => __("Specifies the number of people who provided a review with or without an accompanying rating. At least one of ratingCount or reviewCount is required.", "wp-seo-structured-data-schema")
|
792 |
),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
793 |
'ratingValue' => array(
|
794 |
'title' => __('Rating Value', "wp-seo-structured-data-schema"),
|
795 |
'attr' => 'step="any"',
|
813 |
)
|
814 |
)
|
815 |
),
|
816 |
+
'restaurant' => array(
|
817 |
'pro' => false,
|
818 |
'title' => __('Restaurant', "wp-seo-structured-data-schema"),
|
819 |
'fields' => array(
|
865 |
)
|
866 |
)
|
867 |
),
|
868 |
+
'localBusiness' => array(
|
869 |
'pro' => false,
|
870 |
'title' => __('Local Business', "wp-seo-structured-data-schema"),
|
871 |
'fields' => array(
|
945 |
'title' => __('Date of Published', "wp-seo-structured-data-schema"),
|
946 |
'type' => 'text',
|
947 |
'class' => 'kcseo-date',
|
948 |
+
'desc' => __("Like this: 2015-12-25 14:20:00", "wp-seo-structured-data-schema")
|
949 |
),
|
950 |
'review_ratingValue' => array(
|
951 |
'title' => __('Rating value', "wp-seo-structured-data-schema"),
|
967 |
)
|
968 |
)
|
969 |
),
|
970 |
+
'book' => array(
|
971 |
'pro' => true,
|
972 |
'title' => __("Book", "wp-seo-structured-data-schema"),
|
973 |
),
|
974 |
+
'course' => array(
|
975 |
'pro' => true,
|
976 |
'title' => __("Course", "wp-seo-structured-data-schema"),
|
977 |
),
|
978 |
+
'JobPosting' => array(
|
979 |
'pro' => true,
|
980 |
'title' => __("Job Posting", "wp-seo-structured-data-schema"),
|
981 |
),
|
982 |
+
'movie' => array(
|
983 |
'pro' => true,
|
984 |
'title' => __("Movie", "wp-seo-structured-data-schema"),
|
985 |
),
|
986 |
+
'music' => array(
|
987 |
'pro' => true,
|
988 |
'title' => __("Music", "wp-seo-structured-data-schema"),
|
989 |
),
|
990 |
+
'recipe' => array(
|
991 |
'pro' => true,
|
992 |
'title' => __("Recipe", "wp-seo-structured-data-schema"),
|
993 |
),
|
994 |
+
'TVEpisode' => array(
|
995 |
'pro' => true,
|
996 |
'title' => __("TVEpisode", "wp-seo-structured-data-schema"),
|
997 |
),
|
998 |
+
'question' => array(
|
999 |
'pro' => true,
|
1000 |
'title' => __("QAPage", "wp-seo-structured-data-schema"),
|
1001 |
),
|
1002 |
+
'itemList' => array(
|
1003 |
'pro' => true,
|
1004 |
'title' => __("Item List", "wp-seo-structured-data-schema"),
|
1005 |
+
),
|
1006 |
+
'specialAnnouncement' => [
|
1007 |
+
'title' => __('Special Announcement', "wp-seo-structured-data-schema-pro"),
|
1008 |
+
'fields' => [
|
1009 |
+
'active' => [
|
1010 |
+
'type' => 'checkbox'
|
1011 |
+
],
|
1012 |
+
'name' => [
|
1013 |
+
'title' => __('Name', "wp-seo-structured-data-schema-pro"),
|
1014 |
+
'type' => 'text',
|
1015 |
+
'desc' => __('SpecialAnnouncement.name: Name of the announcement. This text should be present on the underlying page.', "wp-seo-structured-data-schema-pro"),
|
1016 |
+
'required' => true
|
1017 |
+
],
|
1018 |
+
'url' => [
|
1019 |
+
'title' => __('Page URL', "wp-seo-structured-data-schema-pro"),
|
1020 |
+
'type' => 'url',
|
1021 |
+
'desc' => __('SpecialAnnouncement.url: URL of the page containing the announcements. If present, this must match the URL of the page containing the information.', "wp-seo-structured-data-schema-pro"),
|
1022 |
+
'required' => true
|
1023 |
+
],
|
1024 |
+
'datePublished' => [
|
1025 |
+
'title' => __('Published date', "wp-seo-structured-data-schema-pro"),
|
1026 |
+
'type' => 'text',
|
1027 |
+
'class' => 'kcseo-date',
|
1028 |
+
'desc' => __('Like this: 2015-12-25 14:20:00', "wp-seo-structured-data-schema-pro"),
|
1029 |
+
'required' => true
|
1030 |
+
],
|
1031 |
+
'expires' => [
|
1032 |
+
'title' => __('Expires date', "wp-seo-structured-data-schema-pro"),
|
1033 |
+
'type' => 'text',
|
1034 |
+
'class' => 'kcseo-date',
|
1035 |
+
'desc' => __('Like this: 2015-12-25 14:20:00', "wp-seo-structured-data-schema-pro"),
|
1036 |
+
'recommended' => true,
|
1037 |
+
],
|
1038 |
+
'text' => [
|
1039 |
+
'title' => __('Text', "wp-seo-structured-data-schema-pro"),
|
1040 |
+
'type' => 'textarea',
|
1041 |
+
'desc' => __('SpecialAnnouncement.text: Text of the announcements.', "wp-seo-structured-data-schema-pro"),
|
1042 |
+
'required' => true
|
1043 |
+
],
|
1044 |
+
'locations' => [
|
1045 |
+
'title' => __('Announcement Locations', "wp-seo-structured-data-schema-pro"),
|
1046 |
+
'type' => 'group',
|
1047 |
+
'duplicate' => true,
|
1048 |
+
'fields' => [
|
1049 |
+
'location_heading' => [
|
1050 |
+
'type' => 'heading',
|
1051 |
+
'title' => __('Announcement Location', "wp-seo-structured-data-schema-pro")
|
1052 |
+
],
|
1053 |
+
'type' => [
|
1054 |
+
'title' => __('Type', "wp-seo-structured-data-schema-pro"),
|
1055 |
+
'type' => 'select',
|
1056 |
+
'options' => self::announcementLocationTypes(),
|
1057 |
+
'required' => true
|
1058 |
+
],
|
1059 |
+
'name' => [
|
1060 |
+
'title' => __('Name', "wp-seo-structured-data-schema-pro"),
|
1061 |
+
'type' => 'text',
|
1062 |
+
'desc' => __("SpecialAnnouncement.announcementLocation.name: ", "wp-seo-structured-data-schema-pro"),
|
1063 |
+
'recommended' => true,
|
1064 |
+
],
|
1065 |
+
'url' => [
|
1066 |
+
'title' => __('URL', "wp-seo-structured-data-schema-pro"),
|
1067 |
+
'type' => 'url',
|
1068 |
+
'recommended' => true,
|
1069 |
+
'desc' => __("SpecialAnnouncement.announcementLocation.url: URL", "wp-seo-structured-data-schema-pro")
|
1070 |
+
],
|
1071 |
+
'address_street' => [
|
1072 |
+
'title' => __('Address: Street', "wp-seo-structured-data-schema-pro"),
|
1073 |
+
'type' => 'text',
|
1074 |
+
'desc' => __('SpecialAnnouncement.announcementLocation.address.streetAddress: The street address. For example, 1600 Amphitheatre Pkwy.', "wp-seo-structured-data-schema-pro"),
|
1075 |
+
'recommended' => true,
|
1076 |
+
],
|
1077 |
+
'address_locality' => [
|
1078 |
+
'title' => __('Address: Locality', "wp-seo-structured-data-schema-pro"),
|
1079 |
+
'type' => 'text',
|
1080 |
+
'desc' => __('SpecialAnnouncement.announcementLocation.address.addressLocality: The locality in which the street address is, and which is in the region. For example, Mountain View.', "wp-seo-structured-data-schema-pro"),
|
1081 |
+
'recommended' => true,
|
1082 |
+
],
|
1083 |
+
'address_post_code' => [
|
1084 |
+
'title' => __('Address: Post Code', "wp-seo-structured-data-schema-pro"),
|
1085 |
+
'type' => 'text',
|
1086 |
+
'desc' => __('SpecialAnnouncement.announcementLocation.address.postalCode: The postal code. For example, 94043.', "wp-seo-structured-data-schema-pro"),
|
1087 |
+
'recommended' => true,
|
1088 |
+
],
|
1089 |
+
'address_region' => [
|
1090 |
+
'title' => __('Address: Region', "wp-seo-structured-data-schema-pro"),
|
1091 |
+
'type' => 'text',
|
1092 |
+
'desc' => __('SpecialAnnouncement.announcementLocation.address.addressRegion: The region in which the locality is, and which is in the country. For example, California.', "wp-seo-structured-data-schema-pro"),
|
1093 |
+
'recommended' => true,
|
1094 |
+
],
|
1095 |
+
'address_country' => [
|
1096 |
+
'title' => __('Address: Country', "wp-seo-structured-data-schema-pro"),
|
1097 |
+
'type' => 'text',
|
1098 |
+
'desc' => __('SpecialAnnouncement.announcementLocation.address.addressCountry: The country. For example, USA. You can also provide the two-letter ISO 3166-1 alpha-2 country code.', "wp-seo-structured-data-schema-pro"),
|
1099 |
+
'recommended' => true,
|
1100 |
+
],
|
1101 |
+
'id' => [
|
1102 |
+
'title' => __('ID', "wp-seo-structured-data-schema-pro"),
|
1103 |
+
'type' => 'text',
|
1104 |
+
'desc' => __('SpecialAnnouncement.announcementLocation.@id: An optional unique identifier so that you can reference pre-existing structured data for this location.', "wp-seo-structured-data-schema-pro"),
|
1105 |
+
],
|
1106 |
+
'image' => array(
|
1107 |
+
'title' => __('Image', "wp-seo-structured-data-schema-pro"),
|
1108 |
+
'type' => 'image'
|
1109 |
+
),
|
1110 |
+
'priceRange' => array(
|
1111 |
+
'title' => 'Price Range (Recommended)',
|
1112 |
+
'type' => 'text',
|
1113 |
+
'recommended' => true,
|
1114 |
+
'desc' => __("The price range of the business, for example $$$.", "wp-seo-structured-data-schema-pro")
|
1115 |
+
),
|
1116 |
+
'telephone' => array(
|
1117 |
+
'title' => 'Telephone (Recommended)',
|
1118 |
+
'type' => 'text',
|
1119 |
+
'recommended' => true
|
1120 |
+
)
|
1121 |
+
]
|
1122 |
+
],
|
1123 |
+
]
|
1124 |
+
]
|
1125 |
);
|
1126 |
|
1127 |
return apply_filters('kcseo_schema_types', $schemas);
|
1688 |
return apply_filters('kcseo_social_list', $socialList);
|
1689 |
}
|
1690 |
|
1691 |
+
|
1692 |
+
static function announcementLocationTypes() {
|
1693 |
+
return apply_filters('kcseo_announcement_location_types', [
|
1694 |
+
'Airport',
|
1695 |
+
'Aquarium',
|
1696 |
+
'Beach',
|
1697 |
+
'Bridge',
|
1698 |
+
'BuddhistTemple',
|
1699 |
+
'BusStation',
|
1700 |
+
'BusStop',
|
1701 |
+
'Campground',
|
1702 |
+
'CatholicChurch',
|
1703 |
+
'Cemetery',
|
1704 |
+
'Church',
|
1705 |
+
'CivicStructure',
|
1706 |
+
'CityHall',
|
1707 |
+
'CollegeOrUniversity',
|
1708 |
+
'Courthouse',
|
1709 |
+
'CovidTestingFacility',
|
1710 |
+
'Crematorium',
|
1711 |
+
'DefenceEstablishment',
|
1712 |
+
'EducationalOrganization',
|
1713 |
+
'ElementarySchool',
|
1714 |
+
'Embassy',
|
1715 |
+
'EventVenue',
|
1716 |
+
'FireStation',
|
1717 |
+
'GovernmentBuilding',
|
1718 |
+
'HighSchool',
|
1719 |
+
'HinduTemple',
|
1720 |
+
'Hospital',
|
1721 |
+
'LegislativeBuilding',
|
1722 |
+
'MiddleSchool',
|
1723 |
+
'Mosque',
|
1724 |
+
'MovieTheater',
|
1725 |
+
'Museum',
|
1726 |
+
'MusicVenue',
|
1727 |
+
'Park',
|
1728 |
+
'ParkingFacility',
|
1729 |
+
'PerformingArtsTheater',
|
1730 |
+
'PlaceOfWorship',
|
1731 |
+
'Playground',
|
1732 |
+
'PoliceStation',
|
1733 |
+
'Preschool',
|
1734 |
+
'RVPark',
|
1735 |
+
'School',
|
1736 |
+
'StadiumOrArena',
|
1737 |
+
'SubwayStation',
|
1738 |
+
'Synagogue',
|
1739 |
+
'TaxiStand',
|
1740 |
+
'TrainStation',
|
1741 |
+
'Zoo',
|
1742 |
+
]);
|
1743 |
+
}
|
1744 |
+
|
1745 |
static function getReviewNotice() {
|
1746 |
$html = null;
|
1747 |
$html = '<span>As of September, Google made a major change to review snippet schema and structure data markup. Google no longer support "self-serving" independent markup tied to the general types and has narrow support to specific types.</span><br><br>
|
lib/models/KcSeoSchemaModel.php
CHANGED
@@ -668,7 +668,82 @@ if (!class_exists('KcSeoSchemaModel')):
|
|
668 |
$html .= $this->get_jsonEncode(apply_filters('kcseo_snippet_local_business_review', $local_business_review, $metaData));
|
669 |
}
|
670 |
break;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
671 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
672 |
default:
|
673 |
break;
|
674 |
}
|
668 |
$html .= $this->get_jsonEncode(apply_filters('kcseo_snippet_local_business_review', $local_business_review, $metaData));
|
669 |
}
|
670 |
break;
|
671 |
+
case 'specialAnnouncement':
|
672 |
+
$announcement = array(
|
673 |
+
"@context" => "http://schema.org",
|
674 |
+
"@type" => "SpecialAnnouncement",
|
675 |
+
"category" => "https://www.wikidata.org/wiki/Q81068910"
|
676 |
+
);
|
677 |
+
if (!empty($metaData['name'])) {
|
678 |
+
$announcement['name'] = $KcSeoWPSchema->sanitizeOutPut($metaData['name']);
|
679 |
+
}
|
680 |
+
if (!empty($metaData['datePublished'])) {
|
681 |
+
$announcement['datePosted'] = $KcSeoWPSchema->sanitizeOutPut($metaData['datePublished']);
|
682 |
+
}
|
683 |
+
if (!empty($metaData['expires'])) {
|
684 |
+
$announcement['expires'] = $KcSeoWPSchema->sanitizeOutPut($metaData['expires']);
|
685 |
+
}
|
686 |
+
if (!empty($metaData['text'])) {
|
687 |
+
$announcement['text'] = $KcSeoWPSchema->sanitizeOutPut($metaData['text'], 'textarea');
|
688 |
+
}
|
689 |
+
if (!empty($metaData['url'])) {
|
690 |
+
$announcement['url'] = $KcSeoWPSchema->sanitizeOutPut($metaData['url'], 'url');
|
691 |
+
}
|
692 |
+
if (isset($metaData['locations']) && is_array($metaData['locations']) && !empty($metaData['locations'])) {
|
693 |
+
$locations_schema = [];
|
694 |
+
foreach ($metaData['locations'] as $position => $location) {
|
695 |
+
if ($location['type']) {
|
696 |
+
$location_schema = array(
|
697 |
+
"@type" => $KcSeoWPSchema->sanitizeOutPut($location['type']),
|
698 |
+
'name' => !empty($location['name']) ? $KcSeoWPSchema->sanitizeOutPut($location['name']) : "",
|
699 |
+
'url' => !empty($location['url']) ? $KcSeoWPSchema->sanitizeOutPut($location['url'], 'url') : '',
|
700 |
+
"address" => [
|
701 |
+
"@type" => "PostalAddress",
|
702 |
+
]
|
703 |
+
);
|
704 |
+
if (!empty($location['id'])) {
|
705 |
+
$location_schema['@id'] = $KcSeoWPSchema->sanitizeOutPut($location['id']);
|
706 |
+
}
|
707 |
+
if (!empty($location['image'])) {
|
708 |
+
$img = $KcSeoWPSchema->imageInfo(absint($location['image']));
|
709 |
+
$location_schema["image"] = $KcSeoWPSchema->sanitizeOutPut($img['url'], 'url');
|
710 |
+
}
|
711 |
+
if (!empty($location['url'])) {
|
712 |
+
$location_schema['url'] = $KcSeoWPSchema->sanitizeOutPut($location['url'], 'url');
|
713 |
+
}
|
714 |
+
if (!empty($location['address_street'])) {
|
715 |
+
$location_schema['address']['streetAddress'] = $KcSeoWPSchema->sanitizeOutPut($location['address_street']);
|
716 |
+
}
|
717 |
+
if (!empty($location['address_locality'])) {
|
718 |
+
$location_schema['address']['addressLocality'] = $KcSeoWPSchema->sanitizeOutPut($location['address_locality']);
|
719 |
+
}
|
720 |
+
if (!empty($location['address_post_code'])) {
|
721 |
+
$location_schema['address']['postalCode'] = $KcSeoWPSchema->sanitizeOutPut($location['address_post_code']);
|
722 |
+
}
|
723 |
+
if (!empty($location['address_region'])) {
|
724 |
+
$location_schema['address']['addressRegion'] = $KcSeoWPSchema->sanitizeOutPut($location['address_region']);
|
725 |
+
}
|
726 |
+
if (!empty($location['address_country'])) {
|
727 |
+
$location_schema['address']['addressCountry'] = $KcSeoWPSchema->sanitizeOutPut($location['address_country']);
|
728 |
+
}
|
729 |
+
if (!empty($location['priceRange'])) {
|
730 |
+
$location_schema["priceRange"] = $KcSeoWPSchema->sanitizeOutPut($location['priceRange']);
|
731 |
+
}
|
732 |
+
if (!empty($location['telephone'])) {
|
733 |
+
$location_schema["telephone"] = $KcSeoWPSchema->sanitizeOutPut($location['telephone']);
|
734 |
+
}
|
735 |
+
array_push($locations_schema, $location_schema);
|
736 |
+
}
|
737 |
|
738 |
+
}
|
739 |
+
if (count($locations_schema) === 1) {
|
740 |
+
$announcement['announcementLocation'] = $locations_schema[0];
|
741 |
+
} else {
|
742 |
+
$announcement['announcementLocation'] = $locations_schema;
|
743 |
+
}
|
744 |
+
}
|
745 |
+
$html .= $this->get_jsonEncode(apply_filters('kcseo_snippet_item_list', $announcement, $metaData));
|
746 |
+
break;
|
747 |
default:
|
748 |
break;
|
749 |
}
|
wp-seo-structured-data-schema.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
* Plugin Name: WP SEO Structured Data Schema
|
4 |
* Plugin URI: https://wpsemplugins.com/
|
5 |
* Description: Comprehensive JSON-LD based Structured Data solution for WordPress for adding schema for organizations, businesses, blog posts, ratings & more.
|
6 |
-
* Version: 2.6.
|
7 |
* Author: WPSEMPlugins
|
8 |
* Author URI: https://wpsemplugins.com/
|
9 |
* Text Domain: wp-seo-structured-data-schema
|
3 |
* Plugin Name: WP SEO Structured Data Schema
|
4 |
* Plugin URI: https://wpsemplugins.com/
|
5 |
* Description: Comprehensive JSON-LD based Structured Data solution for WordPress for adding schema for organizations, businesses, blog posts, ratings & more.
|
6 |
+
* Version: 2.6.13
|
7 |
* Author: WPSEMPlugins
|
8 |
* Author URI: https://wpsemplugins.com/
|
9 |
* Text Domain: wp-seo-structured-data-schema
|