WP SEO Structured Data Schema - Version 2.6.0

Version Description

  • Update review Schema.

=

Download this release

Release Info

Developer kcseopro
Plugin Icon 128x128 WP SEO Structured Data Schema
Version 2.6.0
Comparing to
See all releases

Code changes from version 2.5.9 to 2.6.0

README.txt CHANGED
@@ -4,7 +4,7 @@ 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.2
7
- Stable tag: 2.5.9
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.5.9 =
118
  * Fix PHP error
119
 
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.2
7
+ Stable tag: 2.6.0
8
  License: GPLv3
9
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
10
 
114
 
115
  == Changelog ==
116
 
117
+ == 2.6.0 =
118
+ * Update review Schema.
119
+
120
  == 2.5.9 =
121
  * Fix PHP error
122
 
assets/css/admin.css CHANGED
@@ -220,9 +220,11 @@ ul.rt-tab-nav li a:focus {
220
  border: 1px solid #e7e7e7;
221
  padding: 20px;
222
  }
 
223
  .rt-tab-container .rt-tab-content:not(.active) {
224
  display: none;
225
  }
 
226
  div#rt-schema-tab-holder:after {
227
  clear: both;
228
  content: ".";
@@ -288,30 +290,52 @@ p.description.kco-telephone > span {
288
  .field-container .field-label span {
289
  margin-left: 5px;
290
  }
 
291
  p.description .required,
292
  .field-container .field-label span.required {
293
  color: red;
294
  }
 
295
  .field-container .field-label span.recommended {
296
  color: #721c24;
297
  }
 
298
  /* tooltip */
299
 
300
- [data-kcseo-tooltip]{
301
  position: relative;
302
  }
303
- [data-kcseo-tooltip]:hover::after{
 
304
  position: absolute;
305
  left: 50%;
306
  bottom: 100%;
307
  content: attr(data-kcseo-tooltip);
308
- background: rgba(0,0,0,.8);
309
  color: #fff;
310
  padding: .5em 1em;
311
  border-radius: 7px;
312
  transform: translateX(-50%);
313
  transition: all ease-in-out 250ms;
314
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
315
  .schema-holder .ui-tabs .ui-tabs-nav .ui-tabs-anchor {
316
  padding: .5em 0.6em;
317
  font-size: 14px;
220
  border: 1px solid #e7e7e7;
221
  padding: 20px;
222
  }
223
+
224
  .rt-tab-container .rt-tab-content:not(.active) {
225
  display: none;
226
  }
227
+
228
  div#rt-schema-tab-holder:after {
229
  clear: both;
230
  content: ".";
290
  .field-container .field-label span {
291
  margin-left: 5px;
292
  }
293
+
294
  p.description .required,
295
  .field-container .field-label span.required {
296
  color: red;
297
  }
298
+
299
  .field-container .field-label span.recommended {
300
  color: #721c24;
301
  }
302
+
303
  /* tooltip */
304
 
305
+ [data-kcseo-tooltip] {
306
  position: relative;
307
  }
308
+
309
+ [data-kcseo-tooltip]:hover::after {
310
  position: absolute;
311
  left: 50%;
312
  bottom: 100%;
313
  content: attr(data-kcseo-tooltip);
314
+ background: rgba(0, 0, 0, .8);
315
  color: #fff;
316
  padding: .5em 1em;
317
  border-radius: 7px;
318
  transform: translateX(-50%);
319
  transition: all ease-in-out 250ms;
320
  }
321
+
322
+ /* heading container */
323
+ .field-container.kcseo-heading-container {
324
+ margin-bottom: 25px;
325
+ }
326
+
327
+ .kcseo-section-title-wrap {
328
+ border-bottom: 1px dashed #888;
329
+ padding-bottom: 5px;
330
+ }
331
+
332
+ .kcseo-section-title-wrap h5 {
333
+ font-size: 16px;
334
+ padding: 0;
335
+ margin: 0 0 5px;
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;
index.html DELETED
File without changes
index.php ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ <?php
2
+
3
+ echo "Keep Silent";
languages/wp-seo-structured-data-schema.pot CHANGED
@@ -1,1241 +1,1131 @@
1
- #, fuzzy
 
2
  msgid ""
3
  msgstr ""
4
- "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
5
  "Project-Id-Version: WP SEO Structured Data Schema\n"
6
- "POT-Creation-Date: 2019-03-08 11:43+0600\n"
7
- "PO-Revision-Date: 2019-03-08 11:43+0600\n"
8
- "Last-Translator: \n"
9
- "Language-Team: \n"
10
  "MIME-Version: 1.0\n"
11
  "Content-Type: text/plain; charset=UTF-8\n"
12
  "Content-Transfer-Encoding: 8bit\n"
13
- "X-Generator: Poedit 1.8.7\n"
14
  "X-Poedit-Basepath: ..\n"
15
- "X-Poedit-WPHeader: wp-seo-structured-data-schema.php\n"
16
- "X-Poedit-SourceCharset: UTF-8\n"
17
- "X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;esc_attr__;"
18
- "esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c;_n_noop:1,2;"
19
- "_nx_noop:3c,1,2;__ngettext_noop:1,2\n"
20
  "X-Poedit-SearchPath-0: .\n"
21
  "X-Poedit-SearchPathExcluded-0: *.js\n"
 
 
22
 
23
- #: lib/classes/KcSeoHelper.php:189
24
  msgid "Pro Version Features"
25
  msgstr ""
26
 
27
- #: lib/classes/KcSeoHelper.php:191
28
  msgid "Includes Auto-fill function <---Popular"
29
  msgstr ""
30
 
31
- #: lib/classes/KcSeoHelper.php:192
32
  msgid "Supports Custom Post Types beyond default page and posts"
33
  msgstr ""
34
 
35
- #: lib/classes/KcSeoHelper.php:193
36
  msgid "Supports WordPress Multisite"
37
  msgstr ""
38
 
39
- #: lib/classes/KcSeoHelper.php:194
40
  msgid "Supports more schema types:"
41
  msgstr ""
42
 
43
- #: lib/classes/KcSeoHelper.php:196
44
  msgid "Books"
45
  msgstr ""
46
 
47
- #: lib/classes/KcSeoHelper.php:197
48
  msgid "Courses"
49
  msgstr ""
50
 
51
- #: lib/classes/KcSeoHelper.php:198
52
  msgid "Job Postings"
53
  msgstr ""
54
 
55
- #: lib/classes/KcSeoHelper.php:199
56
  msgid "Movies"
57
  msgstr ""
58
 
59
- #: lib/classes/KcSeoHelper.php:200 lib/functions/KcSeoOptions.php:851
60
  msgid "Music"
61
  msgstr ""
62
 
63
- #: lib/classes/KcSeoHelper.php:201 lib/functions/KcSeoOptions.php:855
64
  msgid "Recipe"
65
  msgstr ""
66
 
67
- #: lib/classes/KcSeoHelper.php:202
68
  msgid "TV Episode"
69
  msgstr ""
70
 
71
- #: lib/classes/KcSeoHelper.php:203 lib/functions/KcSeoOptions.php:863
72
  msgid "QAPage"
73
  msgstr ""
74
 
75
- #: lib/classes/KcSeoHelper.php:204 lib/functions/KcSeoOptions.php:867
76
  msgid "Item List"
77
  msgstr ""
78
 
79
- #: lib/classes/KcSeoHelper.php:210
80
  msgid "Get the Pro Version"
81
  msgstr ""
82
 
83
- #: lib/classes/KcSeoInit.php:33
84
  msgid "Documentation"
85
  msgstr ""
86
 
87
- #: lib/classes/KcSeoInit.php:34
88
  msgid "Get Pro"
89
  msgstr ""
90
 
91
- #: lib/classes/KcSeoInit.php:151 lib/classes/KcSeoInit.php:173
92
- msgid "Settings successfully updated"
93
- msgstr ""
94
-
95
- #: lib/classes/KcSeoInit.php:153 lib/classes/KcSeoInit.php:175
96
- msgid "Security Error !!"
97
- msgstr ""
98
-
99
- #. Plugin Name of the plugin/theme
100
- #: lib/classes/KcSeoInit.php:197 lib/views/schema-options.php:7
101
  msgid "WP SEO Structured Data Schema"
102
  msgstr ""
103
 
104
- #: lib/classes/KcSeoInit.php:197
105
  msgid "WP SEO Schema"
106
  msgstr ""
107
 
108
- #: lib/classes/KcSeoInit.php:199
109
  msgid "WP SEO Schema settings"
110
  msgstr ""
111
 
112
- #: lib/classes/KcSeoInit.php:199
113
  msgid "Settings"
114
  msgstr ""
115
 
116
- #: lib/classes/KcSeoMetaData.php:47
117
- msgid ""
118
- "WP SEO Structured Data Schema by <a href=\"https://wpsemplugins.com/"
119
- "\">WPSEMPlugins.com</a>"
120
- msgstr ""
121
-
122
- #: lib/classes/KcSeoMetaData.php:64 lib/views/schema-options.php:26
123
- msgid ""
124
- "For more detailed information on how to configure this plugin, please visit:"
125
  msgstr ""
126
 
127
- #: lib/classes/KcSeoMetaData.php:65
128
- msgid ""
129
- "Once you save these structured data schema settings, validate this page url "
130
- "here:"
131
  msgstr ""
132
 
133
- #: lib/classes/KcSeoMetaData.php:80
134
- msgid "Auto Fill"
135
- msgstr ""
136
-
137
- #: lib/classes/KcSeoMetaData.php:80 lib/views/schema-options.php:318
138
- #: lib/views/settings.php:32 lib/views/settings.php:50
139
- #: lib/views/settings.php:75 lib/views/settings.php:84
140
- msgid "PRO"
141
- msgstr ""
142
-
143
- #: lib/classes/KcSeoMetaData.php:93
144
- msgid "This is a Pro version feature."
145
- msgstr ""
146
-
147
- #: lib/functions/KcSeoOptions.php:10
148
  msgid "Article"
149
  msgstr ""
150
 
151
- #: lib/functions/KcSeoOptions.php:16 lib/functions/KcSeoOptions.php:90
152
- #: lib/functions/KcSeoOptions.php:159
153
  msgid "Headline"
154
  msgstr ""
155
 
156
- #: lib/functions/KcSeoOptions.php:18 lib/functions/KcSeoOptions.php:161
157
  msgid "Article title"
158
  msgstr ""
159
 
160
- #: lib/functions/KcSeoOptions.php:22 lib/functions/KcSeoOptions.php:96
161
- #: lib/functions/KcSeoOptions.php:165
162
  msgid "Page URL"
163
  msgstr ""
164
 
165
- #: lib/functions/KcSeoOptions.php:24 lib/functions/KcSeoOptions.php:98
166
- #: lib/functions/KcSeoOptions.php:167
167
  msgid "The canonical URL of the article page"
168
  msgstr ""
169
 
170
- #: lib/functions/KcSeoOptions.php:28
171
  msgid "Author Name"
172
  msgstr ""
173
 
174
- #: lib/functions/KcSeoOptions.php:30 lib/functions/KcSeoOptions.php:104
175
- #: lib/functions/KcSeoOptions.php:173
176
  msgid "Author display name"
177
  msgstr ""
178
 
179
- #: lib/functions/KcSeoOptions.php:34
180
  msgid "Article Feature Image"
181
  msgstr ""
182
 
183
- #: lib/functions/KcSeoOptions.php:37
184
- msgid ""
185
- "Images should be at least 696 pixels wide.<br>Images should be in .jpg, ."
186
- "png, or. gif format."
187
  msgstr ""
188
 
189
- #: lib/functions/KcSeoOptions.php:40 lib/functions/KcSeoOptions.php:114
190
- #: lib/functions/KcSeoOptions.php:183
191
  msgid "Published date"
192
  msgstr ""
193
 
194
- #: lib/functions/KcSeoOptions.php:44 lib/functions/KcSeoOptions.php:51
195
- #: lib/functions/KcSeoOptions.php:117 lib/functions/KcSeoOptions.php:124
196
- #: lib/functions/KcSeoOptions.php:186 lib/functions/KcSeoOptions.php:194
197
- #: lib/functions/KcSeoOptions.php:490 lib/functions/KcSeoOptions.php:607
198
- msgid "Like this: 2015-12-25"
199
  msgstr ""
200
 
201
- #: lib/functions/KcSeoOptions.php:47 lib/functions/KcSeoOptions.php:121
202
- #: lib/functions/KcSeoOptions.php:190
203
  msgid "Modified date"
204
  msgstr ""
205
 
206
- #: lib/functions/KcSeoOptions.php:54 lib/functions/KcSeoOptions.php:128
207
- #: lib/functions/KcSeoOptions.php:197
208
  msgid "Publisher"
209
  msgstr ""
210
 
211
- #: lib/functions/KcSeoOptions.php:56 lib/functions/KcSeoOptions.php:130
212
- #: lib/functions/KcSeoOptions.php:199
213
  msgid "Publisher name or Organization name"
214
  msgstr ""
215
 
216
- #: lib/functions/KcSeoOptions.php:60 lib/functions/KcSeoOptions.php:134
217
- #: lib/functions/KcSeoOptions.php:203 lib/views/settings.php:83
218
  msgid "Publisher Logo"
219
  msgstr ""
220
 
221
- #: lib/functions/KcSeoOptions.php:62 lib/functions/KcSeoOptions.php:136
222
- #: lib/functions/KcSeoOptions.php:205
223
- msgid ""
224
- "Logos should have a wide aspect ratio, not a square icon.<br>Logos should be "
225
- "no wider than 600px, and no taller than 60px.<br>Always retain the original "
226
- "aspect ratio of the logo when resizing. Ideally, logos are exactly 60px tall "
227
- "with width <= 600px. If maintaining a height of 60px would cause the width "
228
- "to exceed 600px, downscale the logo to exactly 600px wide and reduce the "
229
- "height accordingly below 60px to maintain the original aspect ratio.<br>"
230
- msgstr ""
231
-
232
- #: lib/functions/KcSeoOptions.php:66 lib/functions/KcSeoOptions.php:140
233
- #: lib/functions/KcSeoOptions.php:209 lib/functions/KcSeoOptions.php:260
234
- #: lib/functions/KcSeoOptions.php:335 lib/functions/KcSeoOptions.php:446
235
- #: lib/functions/KcSeoOptions.php:681 lib/functions/KcSeoOptions.php:794
236
- #: lib/views/schema-options.php:170 lib/views/schema-options.php:255
237
  msgid "Description"
238
  msgstr ""
239
 
240
- #: lib/functions/KcSeoOptions.php:68 lib/functions/KcSeoOptions.php:142
241
- #: lib/functions/KcSeoOptions.php:211
242
  msgid "Short description"
243
  msgstr ""
244
 
245
- #: lib/functions/KcSeoOptions.php:71 lib/functions/KcSeoOptions.php:145
246
- #: lib/functions/KcSeoOptions.php:214
247
  msgid "Article body"
248
  msgstr ""
249
 
250
- #: lib/functions/KcSeoOptions.php:73 lib/functions/KcSeoOptions.php:147
251
  msgid "Article content"
252
  msgstr ""
253
 
254
- #: lib/functions/KcSeoOptions.php:76
255
  msgid "Alternative headline"
256
  msgstr ""
257
 
258
- #: lib/functions/KcSeoOptions.php:78
259
  msgid "A secondary headline for the article."
260
  msgstr ""
261
 
262
- #: lib/functions/KcSeoOptions.php:84
263
  msgid "Blog Posting"
264
  msgstr ""
265
 
266
- #: lib/functions/KcSeoOptions.php:92
267
  msgid "Blog posting title"
268
  msgstr ""
269
 
270
- #: lib/functions/KcSeoOptions.php:102
271
  msgid "Author name"
272
  msgstr ""
273
 
274
- #: lib/functions/KcSeoOptions.php:108
275
  msgid "Feature Image"
276
  msgstr ""
277
 
278
- #: lib/functions/KcSeoOptions.php:110 lib/functions/KcSeoOptions.php:179
279
- msgid ""
280
- "The representative image of the article. Only a marked-up image that "
281
- "directly belongs to the article should be specified.<br> Images should be at "
282
- "least 696 pixels wide. <br>Images should be in .jpg, .png, or. gif format."
283
  msgstr ""
284
 
285
- #: lib/functions/KcSeoOptions.php:153
286
  msgid "News Article"
287
  msgstr ""
288
 
289
- #: lib/functions/KcSeoOptions.php:171 lib/functions/KcSeoOptions.php:597
290
  msgid "Author"
291
  msgstr ""
292
 
293
- #: lib/functions/KcSeoOptions.php:177 lib/functions/KcSeoOptions.php:330
294
- #: lib/functions/KcSeoOptions.php:761 lib/views/schema-options.php:247
295
  msgid "Image"
296
  msgstr ""
297
 
298
- #: lib/functions/KcSeoOptions.php:216
299
  msgid "Article body content"
300
  msgstr ""
301
 
302
- #: lib/functions/KcSeoOptions.php:222
303
  msgid "Event"
304
  msgstr ""
305
 
306
- #: lib/functions/KcSeoOptions.php:228 lib/functions/KcSeoOptions.php:324
307
- #: lib/functions/KcSeoOptions.php:440 lib/functions/KcSeoOptions.php:502
308
- #: lib/functions/KcSeoOptions.php:789 lib/views/schema-options.php:224
309
  msgid "Name"
310
  msgstr ""
311
 
312
- #: lib/functions/KcSeoOptions.php:231
313
  msgid "The name of the event."
314
  msgstr ""
315
 
316
- #: lib/functions/KcSeoOptions.php:234
317
  msgid "Location name"
318
  msgstr ""
319
 
320
- #: lib/functions/KcSeoOptions.php:237
321
  msgid "Event Location name"
322
  msgstr ""
323
 
324
- #: lib/functions/KcSeoOptions.php:240
325
  msgid "Location address"
326
  msgstr ""
327
 
328
- #: lib/functions/KcSeoOptions.php:243
329
- msgid ""
330
- "The location of for example where the event is happening, an organization is "
331
- "located, or where an action takes place."
332
  msgstr ""
333
 
334
- #: lib/functions/KcSeoOptions.php:246
335
  msgid "Start date"
336
  msgstr ""
337
 
338
- #: lib/functions/KcSeoOptions.php:250
339
- msgid "Event start date"
340
  msgstr ""
341
 
342
- #: lib/functions/KcSeoOptions.php:253
343
  msgid "End date"
344
  msgstr ""
345
 
346
- #: lib/functions/KcSeoOptions.php:257
347
- msgid "Event end date"
348
  msgstr ""
349
 
350
- #: lib/functions/KcSeoOptions.php:263
351
  msgid "Event description"
352
  msgstr ""
353
 
354
- #: lib/functions/KcSeoOptions.php:266
355
  msgid "Performer Name"
356
  msgstr ""
357
 
358
- #: lib/functions/KcSeoOptions.php:269
359
  msgid "The performer's name."
360
  msgstr ""
361
 
362
- #: lib/functions/KcSeoOptions.php:272
363
  msgid "Image URL"
364
  msgstr ""
365
 
366
- #: lib/functions/KcSeoOptions.php:275
367
  msgid "URL of an image or logo for the event or tour"
368
  msgstr ""
369
 
370
- #: lib/functions/KcSeoOptions.php:278 lib/functions/KcSeoOptions.php:380
371
  msgid "Price"
372
  msgstr ""
373
 
374
- #: lib/functions/KcSeoOptions.php:282
375
- msgid ""
376
- "This is highly recommended. The lowest available price, including service "
377
- "charges and fees, of this type of ticket. <span class='required'>Not "
378
- "required but (Recommended)</span>"
379
  msgstr ""
380
 
381
- #: lib/functions/KcSeoOptions.php:285 lib/functions/KcSeoOptions.php:393
382
  msgid "Price currency"
383
  msgstr ""
384
 
385
- #: lib/functions/KcSeoOptions.php:287
386
  msgid "The 3-letter currency code. (USD)"
387
  msgstr ""
388
 
389
- #: lib/functions/KcSeoOptions.php:301
390
  msgid "Valid From"
391
  msgstr ""
392
 
393
- #: lib/functions/KcSeoOptions.php:312
394
- msgid ""
395
- "A link to the event's details page. <span class='required'>Not required but "
396
- "(Recommended)</span>"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
397
  msgstr ""
398
 
399
- #: lib/functions/KcSeoOptions.php:318
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
400
  msgid "Product"
401
  msgstr ""
402
 
403
- #: lib/functions/KcSeoOptions.php:327
404
  msgid "The name of the product."
405
  msgstr ""
406
 
407
- #: lib/functions/KcSeoOptions.php:332
408
- msgid ""
409
- "The URL of a product photo. Pictures clearly showing the product, e.g. "
410
- "against a white background, are preferred."
411
  msgstr ""
412
 
413
- #: lib/functions/KcSeoOptions.php:337
414
  msgid "Product description."
415
  msgstr ""
416
 
417
- #: lib/functions/KcSeoOptions.php:340
 
 
 
 
418
  msgid "Brand"
419
  msgstr ""
420
 
421
- #: lib/functions/KcSeoOptions.php:342
422
  msgid "The brand of the product."
423
  msgstr ""
424
 
425
- #: lib/functions/KcSeoOptions.php:345
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
426
  msgid "Review rating value"
427
  msgstr ""
428
 
429
- #: lib/functions/KcSeoOptions.php:349 lib/functions/KcSeoOptions.php:371
430
  msgid "Rating value. (1 , 2.5, 3, 5 etc)"
431
  msgstr ""
432
 
433
- #: lib/functions/KcSeoOptions.php:352
434
  msgid "Review Best rating"
435
  msgstr ""
436
 
437
- #: lib/functions/KcSeoOptions.php:358
438
  msgid "Review Worst rating"
439
  msgstr ""
440
 
441
- #: lib/functions/KcSeoOptions.php:364
442
  msgid "Review author"
443
  msgstr ""
444
 
445
- #: lib/functions/KcSeoOptions.php:368 lib/functions/KcSeoOptions.php:610
446
- msgid "Rating value"
447
  msgstr ""
448
 
449
- #: lib/functions/KcSeoOptions.php:374
450
- msgid "Total review count"
451
  msgstr ""
452
 
453
- #: lib/functions/KcSeoOptions.php:377
454
- msgid ""
455
- "Review rating value. <span class='required'>This is required if (Rating "
456
- "value) is given</span>"
457
  msgstr ""
458
 
459
- #: lib/functions/KcSeoOptions.php:383
460
- msgid ""
461
- "The lowest available price, including service charges and fees, of this type "
462
- "of ticket."
463
  msgstr ""
464
 
465
- #: lib/functions/KcSeoOptions.php:386
466
  msgid "PriceValidUntil"
467
  msgstr ""
468
 
469
- #: lib/functions/KcSeoOptions.php:390
470
- msgid ""
471
- "The date (in ISO 8601 date format) after which the price will no longer be "
472
- "available."
473
  msgstr ""
474
 
475
- #: lib/functions/KcSeoOptions.php:395
476
  msgid "The 3-letter currency code."
477
  msgstr ""
478
 
479
- #: lib/functions/KcSeoOptions.php:411
480
  msgid "Select a availability type"
481
  msgstr ""
482
 
483
- #: lib/functions/KcSeoOptions.php:423
484
  msgid "Select a condition"
485
  msgstr ""
486
 
487
- #: lib/functions/KcSeoOptions.php:426
488
  msgid "Product URL"
489
  msgstr ""
490
 
491
- #: lib/functions/KcSeoOptions.php:428
492
- msgid ""
493
- "A URL to the product web page (that includes the Offer). (Don't use offerURL "
494
- "for markup that appears on the product page itself.)"
495
  msgstr ""
496
 
497
- #: lib/functions/KcSeoOptions.php:434
498
  msgid "Video"
499
  msgstr ""
500
 
501
- #: lib/functions/KcSeoOptions.php:443
502
  msgid "The title of the video"
503
  msgstr ""
504
 
505
- #: lib/functions/KcSeoOptions.php:449
506
  msgid "The description of the video"
507
  msgstr ""
508
 
509
- #: lib/functions/KcSeoOptions.php:456
510
- msgid ""
511
- "A URL pointing to the video thumbnail image file. Images must be at least "
512
- "160x90 pixels and at most 1920x1080 pixels."
513
  msgstr ""
514
 
515
- #: lib/functions/KcSeoOptions.php:459
516
  msgid "Updated date"
517
  msgstr ""
518
 
519
- #: lib/functions/KcSeoOptions.php:462
520
  msgid "2015-02-05T08:00:00+08:00"
521
  msgstr ""
522
 
523
- #: lib/functions/KcSeoOptions.php:465
524
  msgid "Duration"
525
  msgstr ""
526
 
527
- #: lib/functions/KcSeoOptions.php:467
528
  msgid "The duration of the video in ISO 8601 format.(PT1M33S)"
529
  msgstr ""
530
 
531
- #: lib/functions/KcSeoOptions.php:473
532
- msgid ""
533
- "A URL pointing to the actual video media file. This file should be in .mpg, ."
534
- "mpeg, .mp4, .m4v, .mov, .wmv, .asf, .avi, .ra, .ram, .rm, .flv, or other "
535
- "video file format."
536
  msgstr ""
537
 
538
- #: lib/functions/KcSeoOptions.php:479
539
- msgid ""
540
- "A URL pointing to a player for the specific video. Usually this is the "
541
- "information in the src element of an < embed> tag.Example: Dailymotion: "
542
- "http://www.dailymotion.com/swf/x1o2g."
543
  msgstr ""
544
 
545
- #: lib/functions/KcSeoOptions.php:482
546
  msgid "Interaction count"
547
  msgstr ""
548
 
549
- #: lib/functions/KcSeoOptions.php:484
550
  msgid "The number of times the video has been viewed."
551
  msgstr ""
552
 
553
- #: lib/functions/KcSeoOptions.php:487
554
  msgid "Expires"
555
  msgstr ""
556
 
557
- #: lib/functions/KcSeoOptions.php:496
558
  msgid "Service"
559
  msgstr ""
560
 
561
- #: lib/functions/KcSeoOptions.php:505
562
  msgid "The name of the Service."
563
  msgstr ""
564
 
565
- #: lib/functions/KcSeoOptions.php:508
566
  msgid "Service type"
567
  msgstr ""
568
 
569
- #: lib/functions/KcSeoOptions.php:511
570
- msgid ""
571
- "The type of service being offered, e.g. veterans' benefits, emergency "
572
- "relief, etc."
573
  msgstr ""
574
 
575
- #: lib/functions/KcSeoOptions.php:517
576
- msgid ""
577
- "An additional type for the service, typically used for adding more specific "
578
- "types from external vocabularies in microdata syntax."
579
  msgstr ""
580
 
581
- #: lib/functions/KcSeoOptions.php:520
582
  msgid "Award"
583
  msgstr ""
584
 
585
- #: lib/functions/KcSeoOptions.php:522
586
  msgid "An award won by or for this service."
587
  msgstr ""
588
 
589
- #: lib/functions/KcSeoOptions.php:525
590
  msgid "Category"
591
  msgstr ""
592
 
593
- #: lib/functions/KcSeoOptions.php:527
594
  msgid "A category for the service."
595
  msgstr ""
596
 
597
- #: lib/functions/KcSeoOptions.php:530
598
  msgid "Provider mobility"
599
  msgstr ""
600
 
601
- #: lib/functions/KcSeoOptions.php:532
602
- msgid ""
603
- "Indicates the mobility of a provided service (e.g. 'static', 'dynamic')."
604
  msgstr ""
605
 
606
- #: lib/functions/KcSeoOptions.php:538
607
  msgid "A short description of the service."
608
  msgstr ""
609
 
610
- #: lib/functions/KcSeoOptions.php:544
611
  msgid "An image of the service. This should be a URL."
612
  msgstr ""
613
 
614
- #: lib/functions/KcSeoOptions.php:550
615
- msgid ""
616
- "Indicates a page (or other CreativeWork) for which this thing is the main "
617
- "entity being described."
618
  msgstr ""
619
 
620
- #: lib/functions/KcSeoOptions.php:556
621
- msgid ""
622
- "URL of a reference Web page that unambiguously indicates the service's "
623
- "identity. E.g. the URL of the service's Wikipedia page, Freebase page, or "
624
- "official website."
625
  msgstr ""
626
 
627
- #: lib/functions/KcSeoOptions.php:562
628
  msgid "URL of the service."
629
  msgstr ""
630
 
631
- #: lib/functions/KcSeoOptions.php:565
632
  msgid "Alternate name"
633
  msgstr ""
634
 
635
- #: lib/functions/KcSeoOptions.php:567
636
  msgid "An alias for the service."
637
  msgstr ""
638
 
639
- #: lib/functions/KcSeoOptions.php:573
640
- msgid "Review"
641
- msgstr ""
642
-
643
- #: lib/functions/KcSeoOptions.php:579
644
  msgid "Name of the reviewed item"
645
  msgstr ""
646
 
647
- #: lib/functions/KcSeoOptions.php:582
648
  msgid "The item that is being reviewed."
649
  msgstr ""
650
 
651
- #: lib/functions/KcSeoOptions.php:585
652
- msgid "Review body"
653
- msgstr ""
654
-
655
- #: lib/functions/KcSeoOptions.php:588
656
- msgid "The actual body of the review."
657
- msgstr ""
658
-
659
- #: lib/functions/KcSeoOptions.php:591
660
  msgid "Review name"
661
  msgstr ""
662
 
663
- #: lib/functions/KcSeoOptions.php:594
664
  msgid "A particular name for the review."
665
  msgstr ""
666
 
667
- #: lib/functions/KcSeoOptions.php:601
668
  msgid "The author of the review. The reviewer’s name needs to be a valid name."
669
  msgstr ""
670
 
671
- #: lib/functions/KcSeoOptions.php:604
672
- msgid "Date of Published"
673
- msgstr ""
674
-
675
- #: lib/functions/KcSeoOptions.php:613 lib/functions/KcSeoOptions.php:704
676
- #: lib/functions/KcSeoOptions.php:711
677
- msgid "A numerical quality rating for the item."
678
- msgstr ""
679
-
680
- #: lib/functions/KcSeoOptions.php:616
681
- msgid "Best rating"
682
- msgstr ""
683
-
684
- #: lib/functions/KcSeoOptions.php:619
685
- msgid "The highest value allowed in this rating system."
686
- msgstr ""
687
-
688
- #: lib/functions/KcSeoOptions.php:622
689
- msgid "Worst rating"
690
- msgstr ""
691
-
692
- #: lib/functions/KcSeoOptions.php:625
693
- msgid ""
694
- "The lowest value allowed in this rating system. * Required if the rating "
695
- "system is not on a 5-point scale. If worstRating is omitted, 1 is assumed."
696
- msgstr ""
697
-
698
- #: lib/functions/KcSeoOptions.php:628
699
  msgid "Name of the organization"
700
  msgstr ""
701
 
702
- #: lib/functions/KcSeoOptions.php:630
703
  msgid "The publisher of the review."
704
  msgstr ""
705
 
706
- #: lib/functions/KcSeoOptions.php:636
707
  msgid "Aggregate Ratings"
708
  msgstr ""
709
 
710
- #: lib/functions/KcSeoOptions.php:642
711
  msgid "Schema type"
712
  msgstr ""
713
 
714
- #: lib/functions/KcSeoOptions.php:647
715
  msgid "Use the most appropriate schema type for what is being reviewed."
716
  msgstr ""
717
 
718
- #: lib/functions/KcSeoOptions.php:650
719
  msgid "Name of the item"
720
  msgstr ""
721
 
722
- #: lib/functions/KcSeoOptions.php:653
723
  msgid "The item that is being rated."
724
  msgstr ""
725
 
726
- #: lib/functions/KcSeoOptions.php:666 lib/functions/KcSeoOptions.php:806
727
- #: lib/views/schema-options.php:118
728
  msgid "The price range of the business, for example $$$."
729
  msgstr ""
730
 
731
- #: lib/functions/KcSeoOptions.php:683
732
  msgid "Description for thr review"
733
  msgstr ""
734
 
735
- #: lib/functions/KcSeoOptions.php:686
736
  msgid "Rating Count"
737
  msgstr ""
738
 
739
- #: lib/functions/KcSeoOptions.php:690
740
- msgid ""
741
- "The total number of ratings for the item on your site. <span "
742
- "class='required'>* At least one of ratingCount or reviewCount is required.</"
743
- "span>"
744
  msgstr ""
745
 
746
- #: lib/functions/KcSeoOptions.php:693
747
  msgid "Review Count"
748
  msgstr ""
749
 
750
- #: lib/functions/KcSeoOptions.php:697
751
- msgid ""
752
- "Specifies the number of people who provided a review with or without an "
753
- "accompanying rating. At least one of ratingCount or reviewCount is required."
754
  msgstr ""
755
 
756
- #: lib/functions/KcSeoOptions.php:700 lib/functions/KcSeoOptions.php:707
757
  msgid "Rating Value"
758
  msgstr ""
759
 
760
- #: lib/functions/KcSeoOptions.php:714
761
  msgid "Best Rating"
762
  msgstr ""
763
 
764
- #: lib/functions/KcSeoOptions.php:718
765
- msgid ""
766
- "The highest value allowed in this rating system. <span class='required'>* "
767
- "Required if the rating system is not a 5-point scale.</span> If bestRating "
768
- "is omitted, 5 is assumed."
769
  msgstr ""
770
 
771
- #: lib/functions/KcSeoOptions.php:721
772
  msgid "Worst Rating"
773
  msgstr ""
774
 
775
- #: lib/functions/KcSeoOptions.php:725
776
- msgid ""
777
- "The lowest value allowed in this rating system. <span class='required'>* "
778
- "Required if the rating system is not a 5-point scale.</span> If worstRating "
779
- "is omitted, 1 is assumed."
780
  msgstr ""
781
 
782
- #: lib/functions/KcSeoOptions.php:731
783
  msgid "Restaurant"
784
  msgstr ""
785
 
786
- #: lib/functions/KcSeoOptions.php:737
787
  msgid "Name of the Restaurant"
788
  msgstr ""
789
 
790
- #: lib/functions/KcSeoOptions.php:742
791
  msgid "Description of the Restaurant"
792
  msgstr ""
793
 
794
- #: lib/functions/KcSeoOptions.php:746
795
  msgid "Opening Hours"
796
  msgstr ""
797
 
798
- #: lib/functions/KcSeoOptions.php:748
799
  msgid "Mo,Tu,We,Th,Fr,Sa,Su 11:30-23:00"
800
  msgstr ""
801
 
802
- #: lib/functions/KcSeoOptions.php:751 lib/functions/KcSeoOptions.php:827
803
  msgid "Telephone"
804
  msgstr ""
805
 
806
- #: lib/functions/KcSeoOptions.php:753
807
  msgid "+155501003333"
808
  msgstr ""
809
 
810
- #: lib/functions/KcSeoOptions.php:756
811
  msgid "Menu"
812
  msgstr ""
813
 
814
- #: lib/functions/KcSeoOptions.php:758
815
  msgid "http://example.com/menu"
816
  msgstr ""
817
 
818
- #: lib/functions/KcSeoOptions.php:766 lib/views/schema-options.php:270
819
  msgid "Address"
820
  msgstr ""
821
 
822
- #: lib/functions/KcSeoOptions.php:770 lib/functions/KcSeoOptions.php:803
823
- #: lib/views/schema-options.php:113
824
  msgid "Price Range"
825
  msgstr ""
826
 
827
- #: lib/functions/KcSeoOptions.php:772
828
  msgid "The price range of the business, for example $$$"
829
  msgstr ""
830
 
831
- #: lib/functions/KcSeoOptions.php:775
832
  msgid "Serves Cuisine"
833
  msgstr ""
834
 
835
- #: lib/functions/KcSeoOptions.php:777 lib/views/schema-options.php:159
836
  msgid "The cuisine of the restaurant."
837
  msgstr ""
838
 
839
- #: lib/functions/KcSeoOptions.php:783
840
  msgid "Local Business"
841
  msgstr ""
842
 
843
- #: lib/functions/KcSeoOptions.php:798
844
  msgid "Business Logo"
845
  msgstr ""
846
 
847
- #: lib/functions/KcSeoOptions.php:809
848
  msgid "Address locality"
849
  msgstr ""
850
 
851
- #: lib/functions/KcSeoOptions.php:811
852
  msgid "City (i.e Kansas city)"
853
  msgstr ""
854
 
855
- #: lib/functions/KcSeoOptions.php:814
856
  msgid "Address region"
857
  msgstr ""
858
 
859
- #: lib/functions/KcSeoOptions.php:816
860
  msgid "State (i.e. MO)"
861
  msgstr ""
862
 
863
- #: lib/functions/KcSeoOptions.php:819
864
  msgid "Postal code"
865
  msgstr ""
866
 
867
- #: lib/functions/KcSeoOptions.php:823
868
  msgid "Street address"
869
  msgstr ""
870
 
871
- #: lib/functions/KcSeoOptions.php:835
872
  msgid "Book"
873
  msgstr ""
874
 
875
- #: lib/functions/KcSeoOptions.php:839
876
  msgid "Course"
877
  msgstr ""
878
 
879
- #: lib/functions/KcSeoOptions.php:843
880
  msgid "Job Posting"
881
  msgstr ""
882
 
883
- #: lib/functions/KcSeoOptions.php:847
884
  msgid "Movie"
885
  msgstr ""
886
 
887
- #: lib/functions/KcSeoOptions.php:859
888
  msgid "TVEpisode"
889
  msgstr ""
890
 
891
- #: lib/functions/KcSeoOptions.php:1313 lib/functions/KcSeoOptions.php:1331
892
- msgid "Facebook"
893
- msgstr ""
894
-
895
- #: lib/functions/KcSeoOptions.php:1314 lib/functions/KcSeoOptions.php:1332
896
- msgid "Twitter"
897
  msgstr ""
898
 
899
- #: lib/functions/KcSeoOptions.php:1315 lib/functions/KcSeoOptions.php:1333
900
- msgid "Google+"
901
- msgstr ""
902
-
903
- #: lib/functions/KcSeoOptions.php:1316 lib/functions/KcSeoOptions.php:1334
904
- msgid "Instagram"
905
- msgstr ""
906
-
907
- #: lib/functions/KcSeoOptions.php:1317 lib/functions/KcSeoOptions.php:1335
908
- msgid "Youtube"
909
- msgstr ""
910
-
911
- #: lib/functions/KcSeoOptions.php:1318 lib/functions/KcSeoOptions.php:1336
912
- msgid "LinkedIn"
913
- msgstr ""
914
-
915
- #: lib/functions/KcSeoOptions.php:1319 lib/functions/KcSeoOptions.php:1337
916
- msgid "Myspace"
917
- msgstr ""
918
-
919
- #: lib/functions/KcSeoOptions.php:1320 lib/functions/KcSeoOptions.php:1338
920
- msgid "Pinterest"
921
- msgstr ""
922
-
923
- #: lib/functions/KcSeoOptions.php:1321 lib/functions/KcSeoOptions.php:1339
924
- msgid "SoundCloud"
925
- msgstr ""
926
-
927
- #: lib/functions/KcSeoOptions.php:1322 lib/functions/KcSeoOptions.php:1340
928
- msgid "Tumblr"
929
- msgstr ""
930
-
931
- #: lib/functions/KcSeoOptions.php:1323 lib/functions/KcSeoOptions.php:1341
932
- msgid "Wikidata"
933
- msgstr ""
934
-
935
- #: lib/models/KcSeoSchemaModel.php:590
936
- msgid "Required"
937
- msgstr ""
938
-
939
- #: lib/models/KcSeoSchemaModel.php:591
940
- msgid "Recommended"
941
- msgstr ""
942
-
943
- #: lib/views/schema-options.php:13
944
- msgid ""
945
- "General settings for WP SEO Structured Data Schema by <a href=\"https://"
946
- "wpsemplugins.com/\">WPSEMPlugins.com</a>"
947
- msgstr ""
948
-
949
- #: lib/views/schema-options.php:35
950
  msgid "Site Type"
951
  msgstr ""
952
 
953
- #: lib/views/schema-options.php:38
954
  msgid "Select one type"
955
  msgstr ""
956
 
957
- #: lib/views/schema-options.php:78
958
  msgid "Organization or Business name"
959
  msgstr ""
960
 
961
- #: lib/views/schema-options.php:85
962
  msgid "Site Image"
963
  msgstr ""
964
 
965
- #: lib/views/schema-options.php:122
966
  msgid "Site Telephone"
967
  msgstr ""
968
 
969
- #: lib/views/schema-options.php:127
970
  msgid "The telephone number."
971
  msgstr ""
972
 
973
- #: lib/views/schema-options.php:131
974
  msgid "Additional Type"
975
  msgstr ""
976
 
977
- #: lib/views/schema-options.php:138
978
  msgid "Add \"Additional Type\""
979
  msgstr ""
980
 
981
- #: lib/views/schema-options.php:142
982
  msgid ""
983
- "Product Ontology is an extension to schema using WikiPedia definitions that "
984
- "enables you to further define a type by adding an \"AdditionalType” "
985
- "attribute.Example for a Tailor (which is not available\n"
986
- " as a schema “Type”): Pick "
987
- "LocalBusiness as a generic Type, then add additional type as follows:"
988
  msgstr ""
989
 
990
- #: lib/views/schema-options.php:156
991
  msgid "Restaurant Information"
992
  msgstr ""
993
 
994
- #: lib/views/schema-options.php:167
995
  msgid "Others local business info"
996
  msgstr ""
997
 
998
- #: lib/views/schema-options.php:177
999
  msgid "Operation Hours"
1000
  msgstr ""
1001
 
1002
- #: lib/views/schema-options.php:204
1003
  msgid "GeoCoordinates"
1004
  msgstr ""
1005
 
1006
- #: lib/views/schema-options.php:207
1007
  msgid "Latitude"
1008
  msgstr ""
1009
 
1010
- #: lib/views/schema-options.php:214
1011
  msgid "Longitude"
1012
  msgstr ""
1013
 
1014
- #: lib/views/schema-options.php:221
1015
  msgid "Person"
1016
  msgstr ""
1017
 
1018
- #: lib/views/schema-options.php:231
1019
  msgid "Work For"
1020
  msgstr ""
1021
 
1022
- #: lib/views/schema-options.php:239
1023
  msgid "Job Title"
1024
  msgstr ""
1025
 
1026
- #: lib/views/schema-options.php:251
1027
  msgid "Add your personal photo here"
1028
  msgstr ""
1029
 
1030
- #: lib/views/schema-options.php:262
1031
  msgid "Birth date"
1032
  msgstr ""
1033
 
1034
- #: lib/views/schema-options.php:273
1035
  msgid "Address Country"
1036
  msgstr ""
1037
 
1038
- #: lib/views/schema-options.php:288
1039
  msgid "Address Locality"
1040
  msgstr ""
1041
 
1042
- #: lib/views/schema-options.php:295
1043
  msgid "Address Region"
1044
  msgstr ""
1045
 
1046
- #: lib/views/schema-options.php:302
1047
  msgid "Postal Code"
1048
  msgstr ""
1049
 
1050
- #: lib/views/schema-options.php:308
1051
  msgid "Street Address"
1052
  msgstr ""
1053
 
1054
- #: lib/views/schema-options.php:317
1055
  msgid "Add New Address"
1056
  msgstr ""
1057
 
1058
- #: lib/views/schema-options.php:324
1059
  msgid "Organization Logo"
1060
  msgstr ""
1061
 
1062
- #: lib/views/schema-options.php:327 lib/views/schema-options.php:390
1063
  msgid "Social Profile"
1064
  msgstr ""
1065
 
1066
- #: lib/views/schema-options.php:330
1067
  msgid "Corporate Contacts"
1068
  msgstr ""
1069
 
1070
- #: lib/views/schema-options.php:336
1071
  msgid "Select Organization Logo"
1072
  msgstr ""
1073
 
1074
- #: lib/views/schema-options.php:380
1075
  msgid "Company Name"
1076
  msgstr ""
1077
 
1078
- #: lib/views/schema-options.php:387
1079
  msgid "Social Profiles"
1080
  msgstr ""
1081
 
1082
- #: lib/views/schema-options.php:416
1083
  msgid "Add Social Profile"
1084
  msgstr ""
1085
 
1086
- #: lib/views/schema-options.php:424
1087
  msgid "Contacts"
1088
  msgstr ""
1089
 
1090
- #: lib/views/schema-options.php:443
1091
  msgid "Contact Phone"
1092
  msgstr ""
1093
 
1094
- #: lib/views/schema-options.php:447
1095
  msgid "Please follow the format below"
1096
  msgstr ""
1097
 
1098
- #: lib/views/schema-options.php:458
1099
  msgid "Contact Email"
1100
  msgstr ""
1101
 
1102
- #: lib/views/schema-options.php:465
1103
  msgid "Contact Option"
1104
  msgstr ""
1105
 
1106
- #: lib/views/schema-options.php:469
1107
  msgid "Select an option"
1108
  msgstr ""
1109
 
1110
- #: lib/views/schema-options.php:472
1111
  msgid "TollFree"
1112
  msgstr ""
1113
 
1114
- #: lib/views/schema-options.php:476
1115
  msgid "HearingImpairedSupported"
1116
  msgstr ""
1117
 
1118
- #: lib/views/schema-options.php:482
1119
  msgid "Area Served"
1120
  msgstr ""
1121
 
1122
- #: lib/views/schema-options.php:500
1123
  msgid "Available language"
1124
  msgstr ""
1125
 
1126
- #: lib/views/schema-options.php:518
1127
  msgid "Site Schema"
1128
  msgstr ""
1129
 
1130
- #: lib/views/schema-options.php:521
1131
  msgid "Disable Site Schema"
1132
  msgstr ""
1133
 
1134
- #: lib/views/schema-options.php:529
1135
  msgid "Enable Site link Search Box"
1136
  msgstr ""
1137
 
1138
- #: lib/views/schema-options.php:534
1139
  msgid "Note: Preferred Name markup may no longer be supported by Google"
1140
  msgstr ""
1141
 
1142
- #: lib/views/schema-options.php:538
1143
  msgid "Site Name:"
1144
  msgstr ""
1145
 
1146
- #: lib/views/schema-options.php:545
1147
  msgid "Site Alternative Name:"
1148
  msgstr ""
1149
 
1150
- #: lib/views/schema-options.php:552
1151
  msgid "Site Url:"
1152
  msgstr ""
1153
 
1154
- #: lib/views/schema-options.php:560 lib/views/settings.php:105
1155
  msgid "Save Changes"
1156
  msgstr ""
1157
 
1158
- #: lib/views/settings.php:6
1159
  msgid "Schema Settings"
1160
  msgstr ""
1161
 
1162
- #: lib/views/settings.php:13
1163
  msgid "Business / Org Schema"
1164
  msgstr ""
1165
 
1166
- #: lib/views/settings.php:17
1167
  msgid ""
1168
  "Home page\n"
1169
  " only"
1170
  msgstr ""
1171
 
1172
- #: lib/views/settings.php:21
1173
  msgid ""
1174
  "Sitewide (Apply General Settings schema\n"
1175
  " sitewide)"
1176
  msgstr ""
1177
 
1178
- #: lib/views/settings.php:26
1179
  msgid "Turn off (Turn off global schema)"
1180
  msgstr ""
1181
 
1182
- #: lib/views/settings.php:31
1183
  msgid "Post Type"
1184
  msgstr ""
1185
 
1186
- #: lib/views/settings.php:45
1187
- msgid "Site Navigation Element Schema"
1188
  msgstr ""
1189
 
1190
- #: lib/views/settings.php:49 lib/views/settings.php:74
1191
- msgid "Publisher Name"
1192
  msgstr ""
1193
 
1194
- #: lib/views/settings.php:54
1195
- msgid "Select one menu"
1196
  msgstr ""
1197
 
1198
- #: lib/views/settings.php:65
1199
  msgid ""
1200
- "Please deselect the navigation menu if you want to deactivate site "
1201
- "navigation\n"
1202
  " schema."
1203
  msgstr ""
1204
 
1205
- #: lib/views/settings.php:70
1206
  msgid "Publisher Information"
1207
  msgstr ""
1208
 
1209
- #: lib/views/settings.php:90
1210
- msgid "System Settings"
1211
  msgstr ""
1212
 
1213
- #: lib/views/settings.php:93
1214
- msgid "Delete all data"
1215
  msgstr ""
1216
 
1217
- #: lib/views/settings.php:98
1218
- msgid "Enable"
1219
  msgstr ""
1220
 
1221
- #: lib/views/settings.php:99
1222
- msgid ""
1223
- "This will delete all schema created and applied by this plugin when plugin "
1224
- "is\n"
1225
- " deleted."
1226
  msgstr ""
1227
 
1228
- #. Plugin URI of the plugin/theme
1229
- #. Author URI of the plugin/theme
1230
- msgid "https://wpsemplugins.com/"
1231
  msgstr ""
1232
 
1233
- #. Description of the plugin/theme
1234
- msgid ""
1235
- "Comprehensive JSON-LD based Structured Data solution for WordPress for "
1236
- "adding schema for organizations, businesses, blog posts, ratings & more."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1237
  msgstr ""
1238
 
1239
- #. Author of the plugin/theme
1240
- msgid "WPSEMPlugins"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1241
  msgstr ""
1
+ # Copyright (C) 2019 WP SEO Structured Data Schema
2
+ # This file is distributed under the same license as the WP SEO Structured Data Schema package.
3
  msgid ""
4
  msgstr ""
 
5
  "Project-Id-Version: WP SEO Structured Data Schema\n"
 
 
 
 
6
  "MIME-Version: 1.0\n"
7
  "Content-Type: text/plain; charset=UTF-8\n"
8
  "Content-Transfer-Encoding: 8bit\n"
 
9
  "X-Poedit-Basepath: ..\n"
10
+ "X-Poedit-KeywordsList: __;_e;_ex:1,2c;_n:1,2;_n_noop:1,2;_nx:1,2,4c;_nx_noop:1,2,3c;_x:1,2c;esc_attr__;esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c\n"
 
 
 
 
11
  "X-Poedit-SearchPath-0: .\n"
12
  "X-Poedit-SearchPathExcluded-0: *.js\n"
13
+ "X-Poedit-SourceCharset: UTF-8\n"
14
+ "Plural-Forms: nplurals=2; plural=(n != 1);\n"
15
 
16
+ #: ../lib/classes/KcSeoHelper.php:189
17
  msgid "Pro Version Features"
18
  msgstr ""
19
 
20
+ #: ../lib/classes/KcSeoHelper.php:191
21
  msgid "Includes Auto-fill function <---Popular"
22
  msgstr ""
23
 
24
+ #: ../lib/classes/KcSeoHelper.php:192
25
  msgid "Supports Custom Post Types beyond default page and posts"
26
  msgstr ""
27
 
28
+ #: ../lib/classes/KcSeoHelper.php:193
29
  msgid "Supports WordPress Multisite"
30
  msgstr ""
31
 
32
+ #: ../lib/classes/KcSeoHelper.php:194
33
  msgid "Supports more schema types:"
34
  msgstr ""
35
 
36
+ #: ../lib/classes/KcSeoHelper.php:196
37
  msgid "Books"
38
  msgstr ""
39
 
40
+ #: ../lib/classes/KcSeoHelper.php:197
41
  msgid "Courses"
42
  msgstr ""
43
 
44
+ #: ../lib/classes/KcSeoHelper.php:198
45
  msgid "Job Postings"
46
  msgstr ""
47
 
48
+ #: ../lib/classes/KcSeoHelper.php:199
49
  msgid "Movies"
50
  msgstr ""
51
 
52
+ #: ../lib/classes/KcSeoHelper.php:200, ../lib/functions/KcSeoOptions.php:995
53
  msgid "Music"
54
  msgstr ""
55
 
56
+ #: ../lib/classes/KcSeoHelper.php:201, ../lib/functions/KcSeoOptions.php:999
57
  msgid "Recipe"
58
  msgstr ""
59
 
60
+ #: ../lib/classes/KcSeoHelper.php:202
61
  msgid "TV Episode"
62
  msgstr ""
63
 
64
+ #: ../lib/classes/KcSeoHelper.php:203, ../lib/functions/KcSeoOptions.php:1007
65
  msgid "QAPage"
66
  msgstr ""
67
 
68
+ #: ../lib/classes/KcSeoHelper.php:204, ../lib/functions/KcSeoOptions.php:1011
69
  msgid "Item List"
70
  msgstr ""
71
 
72
+ #: ../lib/classes/KcSeoHelper.php:210
73
  msgid "Get the Pro Version"
74
  msgstr ""
75
 
76
+ #: ../lib/classes/KcSeoInit.php:33
77
  msgid "Documentation"
78
  msgstr ""
79
 
80
+ #: ../lib/classes/KcSeoInit.php:34
81
  msgid "Get Pro"
82
  msgstr ""
83
 
84
+ #: ../lib/classes/KcSeoInit.php:188, ../lib/views/schema-options.php:7
 
 
 
 
 
 
 
 
 
85
  msgid "WP SEO Structured Data Schema"
86
  msgstr ""
87
 
88
+ #: ../lib/classes/KcSeoInit.php:188
89
  msgid "WP SEO Schema"
90
  msgstr ""
91
 
92
+ #: ../lib/classes/KcSeoInit.php:190
93
  msgid "WP SEO Schema settings"
94
  msgstr ""
95
 
96
+ #: ../lib/classes/KcSeoInit.php:190
97
  msgid "Settings"
98
  msgstr ""
99
 
100
+ #: ../lib/classes/KcSeoMetaData.php:62, ../lib/views/schema-options.php:26
101
+ msgid "For more detailed information on how to configure this plugin, please visit:"
 
 
 
 
 
 
 
102
  msgstr ""
103
 
104
+ #: ../lib/classes/KcSeoMetaData.php:63
105
+ msgid "Once you save these structured data schema settings, validate this page url here:"
 
 
106
  msgstr ""
107
 
108
+ #: ../lib/functions/KcSeoOptions.php:10
 
 
 
 
 
 
 
 
 
 
 
 
 
 
109
  msgid "Article"
110
  msgstr ""
111
 
112
+ #: ../lib/functions/KcSeoOptions.php:16, ../lib/functions/KcSeoOptions.php:90, ../lib/functions/KcSeoOptions.php:159
 
113
  msgid "Headline"
114
  msgstr ""
115
 
116
+ #: ../lib/functions/KcSeoOptions.php:18, ../lib/functions/KcSeoOptions.php:161
117
  msgid "Article title"
118
  msgstr ""
119
 
120
+ #: ../lib/functions/KcSeoOptions.php:22, ../lib/functions/KcSeoOptions.php:96, ../lib/functions/KcSeoOptions.php:165
 
121
  msgid "Page URL"
122
  msgstr ""
123
 
124
+ #: ../lib/functions/KcSeoOptions.php:24, ../lib/functions/KcSeoOptions.php:98, ../lib/functions/KcSeoOptions.php:167
 
125
  msgid "The canonical URL of the article page"
126
  msgstr ""
127
 
128
+ #: ../lib/functions/KcSeoOptions.php:28
129
  msgid "Author Name"
130
  msgstr ""
131
 
132
+ #: ../lib/functions/KcSeoOptions.php:30, ../lib/functions/KcSeoOptions.php:104, ../lib/functions/KcSeoOptions.php:173
 
133
  msgid "Author display name"
134
  msgstr ""
135
 
136
+ #: ../lib/functions/KcSeoOptions.php:34
137
  msgid "Article Feature Image"
138
  msgstr ""
139
 
140
+ #: ../lib/functions/KcSeoOptions.php:37
141
+ msgid "Images should be at least 696 pixels wide.<br>Images should be in .jpg, .png, or. gif format."
 
 
142
  msgstr ""
143
 
144
+ #: ../lib/functions/KcSeoOptions.php:40, ../lib/functions/KcSeoOptions.php:114, ../lib/functions/KcSeoOptions.php:183
 
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:955
149
+ msgid "Like this: 2015-12-25 4:00 PM"
 
 
 
150
  msgstr ""
151
 
152
+ #: ../lib/functions/KcSeoOptions.php:47, ../lib/functions/KcSeoOptions.php:121, ../lib/functions/KcSeoOptions.php:190
 
153
  msgid "Modified date"
154
  msgstr ""
155
 
156
+ #: ../lib/functions/KcSeoOptions.php:54, ../lib/functions/KcSeoOptions.php:128, ../lib/functions/KcSeoOptions.php:197
 
157
  msgid "Publisher"
158
  msgstr ""
159
 
160
+ #: ../lib/functions/KcSeoOptions.php:56, ../lib/functions/KcSeoOptions.php:130, ../lib/functions/KcSeoOptions.php:199
 
161
  msgid "Publisher name or Organization name"
162
  msgstr ""
163
 
164
+ #: ../lib/functions/KcSeoOptions.php:60, ../lib/functions/KcSeoOptions.php:134, ../lib/functions/KcSeoOptions.php:203, ../lib/views/settings.php:86
 
165
  msgid "Publisher Logo"
166
  msgstr ""
167
 
168
+ #: ../lib/functions/KcSeoOptions.php:62, ../lib/functions/KcSeoOptions.php:136, ../lib/functions/KcSeoOptions.php:205
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:888, ../lib/views/schema-options.php:170, ../lib/views/schema-options.php:255
 
 
 
 
 
 
 
 
 
 
 
173
  msgid "Description"
174
  msgstr ""
175
 
176
+ #: ../lib/functions/KcSeoOptions.php:68, ../lib/functions/KcSeoOptions.php:142, ../lib/functions/KcSeoOptions.php:211
 
177
  msgid "Short description"
178
  msgstr ""
179
 
180
+ #: ../lib/functions/KcSeoOptions.php:71, ../lib/functions/KcSeoOptions.php:145, ../lib/functions/KcSeoOptions.php:214
 
181
  msgid "Article body"
182
  msgstr ""
183
 
184
+ #: ../lib/functions/KcSeoOptions.php:73, ../lib/functions/KcSeoOptions.php:147
185
  msgid "Article content"
186
  msgstr ""
187
 
188
+ #: ../lib/functions/KcSeoOptions.php:76
189
  msgid "Alternative headline"
190
  msgstr ""
191
 
192
+ #: ../lib/functions/KcSeoOptions.php:78
193
  msgid "A secondary headline for the article."
194
  msgstr ""
195
 
196
+ #: ../lib/functions/KcSeoOptions.php:84
197
  msgid "Blog Posting"
198
  msgstr ""
199
 
200
+ #: ../lib/functions/KcSeoOptions.php:92
201
  msgid "Blog posting title"
202
  msgstr ""
203
 
204
+ #: ../lib/functions/KcSeoOptions.php:102
205
  msgid "Author name"
206
  msgstr ""
207
 
208
+ #: ../lib/functions/KcSeoOptions.php:108
209
  msgid "Feature Image"
210
  msgstr ""
211
 
212
+ #: ../lib/functions/KcSeoOptions.php:110, ../lib/functions/KcSeoOptions.php:179
213
+ msgid "The representative image of the article. Only a marked-up image that directly belongs to the article should be specified.<br> Images should be at least 696 pixels wide. <br>Images should be in .jpg, .png, or. gif format."
 
 
 
214
  msgstr ""
215
 
216
+ #: ../lib/functions/KcSeoOptions.php:153
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:934
221
  msgid "Author"
222
  msgstr ""
223
 
224
+ #: ../lib/functions/KcSeoOptions.php:177, ../lib/functions/KcSeoOptions.php:380, ../lib/functions/KcSeoOptions.php:855, ../lib/views/schema-options.php:247
 
225
  msgid "Image"
226
  msgstr ""
227
 
228
+ #: ../lib/functions/KcSeoOptions.php:216
229
  msgid "Article body content"
230
  msgstr ""
231
 
232
+ #: ../lib/functions/KcSeoOptions.php:222
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:883, ../lib/views/schema-options.php:224
 
 
237
  msgid "Name"
238
  msgstr ""
239
 
240
+ #: ../lib/functions/KcSeoOptions.php:231
241
  msgid "The name of the event."
242
  msgstr ""
243
 
244
+ #: ../lib/functions/KcSeoOptions.php:234
245
  msgid "Location name"
246
  msgstr ""
247
 
248
+ #: ../lib/functions/KcSeoOptions.php:237
249
  msgid "Event Location name"
250
  msgstr ""
251
 
252
+ #: ../lib/functions/KcSeoOptions.php:240
253
  msgid "Location address"
254
  msgstr ""
255
 
256
+ #: ../lib/functions/KcSeoOptions.php:243
257
+ msgid "The location of for example where the event is happening, an organization is located, or where an action takes place."
 
 
258
  msgstr ""
259
 
260
+ #: ../lib/functions/KcSeoOptions.php:246
261
  msgid "Start date"
262
  msgstr ""
263
 
264
+ #: ../lib/functions/KcSeoOptions.php:250
265
+ msgid "Event start date Like : 2017-10-16 4:00 AM"
266
  msgstr ""
267
 
268
+ #: ../lib/functions/KcSeoOptions.php:253
269
  msgid "End date"
270
  msgstr ""
271
 
272
+ #: ../lib/functions/KcSeoOptions.php:257
273
+ msgid "Event end date Like : 2017-10-16 4:00 AM"
274
  msgstr ""
275
 
276
+ #: ../lib/functions/KcSeoOptions.php:263
277
  msgid "Event description"
278
  msgstr ""
279
 
280
+ #: ../lib/functions/KcSeoOptions.php:266
281
  msgid "Performer Name"
282
  msgstr ""
283
 
284
+ #: ../lib/functions/KcSeoOptions.php:269
285
  msgid "The performer's name."
286
  msgstr ""
287
 
288
+ #: ../lib/functions/KcSeoOptions.php:272
289
  msgid "Image URL"
290
  msgstr ""
291
 
292
+ #: ../lib/functions/KcSeoOptions.php:275
293
  msgid "URL of an image or logo for the event or tour"
294
  msgstr ""
295
 
296
+ #: ../lib/functions/KcSeoOptions.php:278, ../lib/functions/KcSeoOptions.php:469
297
  msgid "Price"
298
  msgstr ""
299
 
300
+ #: ../lib/functions/KcSeoOptions.php:282
301
+ msgid "This is highly recommended. The lowest available price, including service charges and fees, of this type of ticket. <span class='required'>Not required but (Recommended)</span>"
 
 
 
302
  msgstr ""
303
 
304
+ #: ../lib/functions/KcSeoOptions.php:285, ../lib/functions/KcSeoOptions.php:482
305
  msgid "Price currency"
306
  msgstr ""
307
 
308
+ #: ../lib/functions/KcSeoOptions.php:287
309
  msgid "The 3-letter currency code. (USD)"
310
  msgstr ""
311
 
312
+ #: ../lib/functions/KcSeoOptions.php:301
313
  msgid "Valid From"
314
  msgstr ""
315
 
316
+ #: ../lib/functions/KcSeoOptions.php:312
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:926
321
+ msgid "Review"
322
+ msgstr ""
323
+
324
+ #: ../lib/functions/KcSeoOptions.php:317, ../lib/functions/KcSeoOptions.php:928
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:939
329
+ msgid "Author Same As profile link"
330
+ msgstr ""
331
+
332
+ #: ../lib/functions/KcSeoOptions.php:332, ../lib/functions/KcSeoOptions.php:943
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:946
337
+ msgid "Review body"
338
  msgstr ""
339
 
340
+ #: ../lib/functions/KcSeoOptions.php:338, ../lib/functions/KcSeoOptions.php:682, ../lib/functions/KcSeoOptions.php:949
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:952
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:958
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:805, ../lib/functions/KcSeoOptions.php:961
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:964
357
+ msgid "Best rating"
358
+ msgstr ""
359
+
360
+ #: ../lib/functions/KcSeoOptions.php:356, ../lib/functions/KcSeoOptions.php:713, ../lib/functions/KcSeoOptions.php:967
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:970
365
+ msgid "Worst rating"
366
+ msgstr ""
367
+
368
+ #: ../lib/functions/KcSeoOptions.php:362, ../lib/functions/KcSeoOptions.php:719, ../lib/functions/KcSeoOptions.php:973
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
+
372
+ #: ../lib/functions/KcSeoOptions.php:368
373
  msgid "Product"
374
  msgstr ""
375
 
376
+ #: ../lib/functions/KcSeoOptions.php:377
377
  msgid "The name of the product."
378
  msgstr ""
379
 
380
+ #: ../lib/functions/KcSeoOptions.php:382
381
+ msgid "The URL of a product photo. Pictures clearly showing the product, e.g. against a white background, are preferred."
 
 
382
  msgstr ""
383
 
384
+ #: ../lib/functions/KcSeoOptions.php:387
385
  msgid "Product description."
386
  msgstr ""
387
 
388
+ #: ../lib/functions/KcSeoOptions.php:390
389
+ msgid "SKU"
390
+ msgstr ""
391
+
392
+ #: ../lib/functions/KcSeoOptions.php:395
393
  msgid "Brand"
394
  msgstr ""
395
 
396
+ #: ../lib/functions/KcSeoOptions.php:398
397
  msgid "The brand of the product."
398
  msgstr ""
399
 
400
+ #: ../lib/functions/KcSeoOptions.php:401
401
+ msgid "Identifier Type"
402
+ msgstr ""
403
+
404
+ #: ../lib/functions/KcSeoOptions.php:411
405
+ msgid ""
406
+ "<strong>MPN</strong><br>\n"
407
+ " &#8594; MPN(Manufacturer Part Number) Used globally, Alphanumeric digits (various lengths)<br>\n"
408
+ " <strong>GTIN</strong><br>\n"
409
+ " &#8594; UPC(Universal Product Code) Used in primarily North America. 12 numeric digits. eg. 892685001003.<br>\n"
410
+ " &#8594; EAN(European Article Number) Used primarily outside of North America. Typically 13 numeric digits (can occasionally be either eight or 14 numeric digits). eg. 4011200296908<br>\n"
411
+ " &#8594; ISBN(International Standard Book Number) Used globally, ISBN-13 (recommended), 13 numeric digits 978-0747595823<br>\n"
412
+ " &#8594; JAN(Japanese Article Number) Used only in Japan, 8 or 13 numeric digits."
413
+ msgstr ""
414
+
415
+ #: ../lib/functions/KcSeoOptions.php:420
416
+ msgid "Identifier"
417
+ msgstr ""
418
+
419
+ #: ../lib/functions/KcSeoOptions.php:423
420
+ msgid "Enter product unique identifier"
421
+ msgstr ""
422
+
423
+ #: ../lib/functions/KcSeoOptions.php:426
424
+ msgid "Product Review & Rating"
425
+ msgstr ""
426
+
427
+ #: ../lib/functions/KcSeoOptions.php:430
428
  msgid "Review rating value"
429
  msgstr ""
430
 
431
+ #: ../lib/functions/KcSeoOptions.php:434, ../lib/functions/KcSeoOptions.php:456
432
  msgid "Rating value. (1 , 2.5, 3, 5 etc)"
433
  msgstr ""
434
 
435
+ #: ../lib/functions/KcSeoOptions.php:437
436
  msgid "Review Best rating"
437
  msgstr ""
438
 
439
+ #: ../lib/functions/KcSeoOptions.php:443
440
  msgid "Review Worst rating"
441
  msgstr ""
442
 
443
+ #: ../lib/functions/KcSeoOptions.php:449
444
  msgid "Review author"
445
  msgstr ""
446
 
447
+ #: ../lib/functions/KcSeoOptions.php:459
448
+ msgid "Total review count"
449
  msgstr ""
450
 
451
+ #: ../lib/functions/KcSeoOptions.php:462
452
+ msgid "Review rating value. <span class='required'>This is required if (Rating value) is given</span>"
453
  msgstr ""
454
 
455
+ #: ../lib/functions/KcSeoOptions.php:465
456
+ msgid "Product Pricing"
 
 
457
  msgstr ""
458
 
459
+ #: ../lib/functions/KcSeoOptions.php:472
460
+ msgid "The lowest available price, including service charges and fees, of this type of ticket."
 
 
461
  msgstr ""
462
 
463
+ #: ../lib/functions/KcSeoOptions.php:475
464
  msgid "PriceValidUntil"
465
  msgstr ""
466
 
467
+ #: ../lib/functions/KcSeoOptions.php:479
468
+ msgid "The date (in ISO 8601 date and time format) after which the price will no longer be available."
 
 
469
  msgstr ""
470
 
471
+ #: ../lib/functions/KcSeoOptions.php:484
472
  msgid "The 3-letter currency code."
473
  msgstr ""
474
 
475
+ #: ../lib/functions/KcSeoOptions.php:500
476
  msgid "Select a availability type"
477
  msgstr ""
478
 
479
+ #: ../lib/functions/KcSeoOptions.php:512
480
  msgid "Select a condition"
481
  msgstr ""
482
 
483
+ #: ../lib/functions/KcSeoOptions.php:515
484
  msgid "Product URL"
485
  msgstr ""
486
 
487
+ #: ../lib/functions/KcSeoOptions.php:517
488
+ msgid "A URL to the product web page (that includes the Offer). (Don't use offerURL for markup that appears on the product page itself.)"
 
 
489
  msgstr ""
490
 
491
+ #: ../lib/functions/KcSeoOptions.php:523
492
  msgid "Video"
493
  msgstr ""
494
 
495
+ #: ../lib/functions/KcSeoOptions.php:532
496
  msgid "The title of the video"
497
  msgstr ""
498
 
499
+ #: ../lib/functions/KcSeoOptions.php:538
500
  msgid "The description of the video"
501
  msgstr ""
502
 
503
+ #: ../lib/functions/KcSeoOptions.php:545
504
+ msgid "A URL pointing to the video thumbnail image file. Images must be at least 160x90 pixels and at most 1920x1080 pixels."
 
 
505
  msgstr ""
506
 
507
+ #: ../lib/functions/KcSeoOptions.php:548
508
  msgid "Updated date"
509
  msgstr ""
510
 
511
+ #: ../lib/functions/KcSeoOptions.php:551
512
  msgid "2015-02-05T08:00:00+08:00"
513
  msgstr ""
514
 
515
+ #: ../lib/functions/KcSeoOptions.php:554
516
  msgid "Duration"
517
  msgstr ""
518
 
519
+ #: ../lib/functions/KcSeoOptions.php:556
520
  msgid "The duration of the video in ISO 8601 format.(PT1M33S)"
521
  msgstr ""
522
 
523
+ #: ../lib/functions/KcSeoOptions.php:562
524
+ msgid "A URL pointing to the actual video media file. This file should be in .mpg, .mpeg, .mp4, .m4v, .mov, .wmv, .asf, .avi, .ra, .ram, .rm, .flv, or other video file format."
 
 
 
525
  msgstr ""
526
 
527
+ #: ../lib/functions/KcSeoOptions.php:568
528
+ msgid "A URL pointing to a player for the specific video. Usually this is the information in the src element of an < embed> tag.Example: Dailymotion: http://www.dailymotion.com/swf/x1o2g."
 
 
 
529
  msgstr ""
530
 
531
+ #: ../lib/functions/KcSeoOptions.php:571
532
  msgid "Interaction count"
533
  msgstr ""
534
 
535
+ #: ../lib/functions/KcSeoOptions.php:573
536
  msgid "The number of times the video has been viewed."
537
  msgstr ""
538
 
539
+ #: ../lib/functions/KcSeoOptions.php:576
540
  msgid "Expires"
541
  msgstr ""
542
 
543
+ #: ../lib/functions/KcSeoOptions.php:585
544
  msgid "Service"
545
  msgstr ""
546
 
547
+ #: ../lib/functions/KcSeoOptions.php:594
548
  msgid "The name of the Service."
549
  msgstr ""
550
 
551
+ #: ../lib/functions/KcSeoOptions.php:597
552
  msgid "Service type"
553
  msgstr ""
554
 
555
+ #: ../lib/functions/KcSeoOptions.php:600
556
+ msgid "The type of service being offered, e.g. veterans' benefits, emergency relief, etc."
 
 
557
  msgstr ""
558
 
559
+ #: ../lib/functions/KcSeoOptions.php:606
560
+ msgid "An additional type for the service, typically used for adding more specific types from external vocabularies in microdata syntax."
 
 
561
  msgstr ""
562
 
563
+ #: ../lib/functions/KcSeoOptions.php:609
564
  msgid "Award"
565
  msgstr ""
566
 
567
+ #: ../lib/functions/KcSeoOptions.php:611
568
  msgid "An award won by or for this service."
569
  msgstr ""
570
 
571
+ #: ../lib/functions/KcSeoOptions.php:614
572
  msgid "Category"
573
  msgstr ""
574
 
575
+ #: ../lib/functions/KcSeoOptions.php:616
576
  msgid "A category for the service."
577
  msgstr ""
578
 
579
+ #: ../lib/functions/KcSeoOptions.php:619
580
  msgid "Provider mobility"
581
  msgstr ""
582
 
583
+ #: ../lib/functions/KcSeoOptions.php:621
584
+ msgid "Indicates the mobility of a provided service (e.g. 'static', 'dynamic')."
 
585
  msgstr ""
586
 
587
+ #: ../lib/functions/KcSeoOptions.php:627
588
  msgid "A short description of the service."
589
  msgstr ""
590
 
591
+ #: ../lib/functions/KcSeoOptions.php:633
592
  msgid "An image of the service. This should be a URL."
593
  msgstr ""
594
 
595
+ #: ../lib/functions/KcSeoOptions.php:639
596
+ msgid "Indicates a page (or other CreativeWork) for which this thing is the main entity being described."
 
 
597
  msgstr ""
598
 
599
+ #: ../lib/functions/KcSeoOptions.php:645
600
+ msgid "URL of a reference Web page that unambiguously indicates the service's identity. E.g. the URL of the service's Wikipedia page, Freebase page, or official website."
 
 
 
601
  msgstr ""
602
 
603
+ #: ../lib/functions/KcSeoOptions.php:651
604
  msgid "URL of the service."
605
  msgstr ""
606
 
607
+ #: ../lib/functions/KcSeoOptions.php:654
608
  msgid "Alternate name"
609
  msgstr ""
610
 
611
+ #: ../lib/functions/KcSeoOptions.php:656
612
  msgid "An alias for the service."
613
  msgstr ""
614
 
615
+ #: ../lib/functions/KcSeoOptions.php:673
 
 
 
 
616
  msgid "Name of the reviewed item"
617
  msgstr ""
618
 
619
+ #: ../lib/functions/KcSeoOptions.php:676
620
  msgid "The item that is being reviewed."
621
  msgstr ""
622
 
623
+ #: ../lib/functions/KcSeoOptions.php:685
 
 
 
 
 
 
 
 
624
  msgid "Review name"
625
  msgstr ""
626
 
627
+ #: ../lib/functions/KcSeoOptions.php:688
628
  msgid "A particular name for the review."
629
  msgstr ""
630
 
631
+ #: ../lib/functions/KcSeoOptions.php:695
632
  msgid "The author of the review. The reviewer’s name needs to be a valid name."
633
  msgstr ""
634
 
635
+ #: ../lib/functions/KcSeoOptions.php:722
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
636
  msgid "Name of the organization"
637
  msgstr ""
638
 
639
+ #: ../lib/functions/KcSeoOptions.php:724
640
  msgid "The publisher of the review."
641
  msgstr ""
642
 
643
+ #: ../lib/functions/KcSeoOptions.php:730
644
  msgid "Aggregate Ratings"
645
  msgstr ""
646
 
647
+ #: ../lib/functions/KcSeoOptions.php:736
648
  msgid "Schema type"
649
  msgstr ""
650
 
651
+ #: ../lib/functions/KcSeoOptions.php:741
652
  msgid "Use the most appropriate schema type for what is being reviewed."
653
  msgstr ""
654
 
655
+ #: ../lib/functions/KcSeoOptions.php:744
656
  msgid "Name of the item"
657
  msgstr ""
658
 
659
+ #: ../lib/functions/KcSeoOptions.php:747
660
  msgid "The item that is being rated."
661
  msgstr ""
662
 
663
+ #: ../lib/functions/KcSeoOptions.php:760, ../lib/functions/KcSeoOptions.php:900, ../lib/views/schema-options.php:118
 
664
  msgid "The price range of the business, for example $$$."
665
  msgstr ""
666
 
667
+ #: ../lib/functions/KcSeoOptions.php:777
668
  msgid "Description for thr review"
669
  msgstr ""
670
 
671
+ #: ../lib/functions/KcSeoOptions.php:780
672
  msgid "Rating Count"
673
  msgstr ""
674
 
675
+ #: ../lib/functions/KcSeoOptions.php:784
676
+ msgid "The total number of ratings for the item on your site. <span class='required'>* At least one of ratingCount or reviewCount is required.</span>"
 
 
 
677
  msgstr ""
678
 
679
+ #: ../lib/functions/KcSeoOptions.php:787
680
  msgid "Review Count"
681
  msgstr ""
682
 
683
+ #: ../lib/functions/KcSeoOptions.php:791
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, ../lib/functions/KcSeoOptions.php:801
688
  msgid "Rating Value"
689
  msgstr ""
690
 
691
+ #: ../lib/functions/KcSeoOptions.php:808
692
  msgid "Best Rating"
693
  msgstr ""
694
 
695
+ #: ../lib/functions/KcSeoOptions.php:812
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:815
700
  msgid "Worst Rating"
701
  msgstr ""
702
 
703
+ #: ../lib/functions/KcSeoOptions.php:819
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:825
708
  msgid "Restaurant"
709
  msgstr ""
710
 
711
+ #: ../lib/functions/KcSeoOptions.php:831
712
  msgid "Name of the Restaurant"
713
  msgstr ""
714
 
715
+ #: ../lib/functions/KcSeoOptions.php:836
716
  msgid "Description of the Restaurant"
717
  msgstr ""
718
 
719
+ #: ../lib/functions/KcSeoOptions.php:840
720
  msgid "Opening Hours"
721
  msgstr ""
722
 
723
+ #: ../lib/functions/KcSeoOptions.php:842
724
  msgid "Mo,Tu,We,Th,Fr,Sa,Su 11:30-23:00"
725
  msgstr ""
726
 
727
+ #: ../lib/functions/KcSeoOptions.php:845, ../lib/functions/KcSeoOptions.php:921
728
  msgid "Telephone"
729
  msgstr ""
730
 
731
+ #: ../lib/functions/KcSeoOptions.php:847
732
  msgid "+155501003333"
733
  msgstr ""
734
 
735
+ #: ../lib/functions/KcSeoOptions.php:850
736
  msgid "Menu"
737
  msgstr ""
738
 
739
+ #: ../lib/functions/KcSeoOptions.php:852
740
  msgid "http://example.com/menu"
741
  msgstr ""
742
 
743
+ #: ../lib/functions/KcSeoOptions.php:860, ../lib/views/schema-options.php:270
744
  msgid "Address"
745
  msgstr ""
746
 
747
+ #: ../lib/functions/KcSeoOptions.php:864, ../lib/functions/KcSeoOptions.php:897, ../lib/views/schema-options.php:113
 
748
  msgid "Price Range"
749
  msgstr ""
750
 
751
+ #: ../lib/functions/KcSeoOptions.php:866
752
  msgid "The price range of the business, for example $$$"
753
  msgstr ""
754
 
755
+ #: ../lib/functions/KcSeoOptions.php:869
756
  msgid "Serves Cuisine"
757
  msgstr ""
758
 
759
+ #: ../lib/functions/KcSeoOptions.php:871, ../lib/views/schema-options.php:159
760
  msgid "The cuisine of the restaurant."
761
  msgstr ""
762
 
763
+ #: ../lib/functions/KcSeoOptions.php:877
764
  msgid "Local Business"
765
  msgstr ""
766
 
767
+ #: ../lib/functions/KcSeoOptions.php:892
768
  msgid "Business Logo"
769
  msgstr ""
770
 
771
+ #: ../lib/functions/KcSeoOptions.php:903
772
  msgid "Address locality"
773
  msgstr ""
774
 
775
+ #: ../lib/functions/KcSeoOptions.php:905
776
  msgid "City (i.e Kansas city)"
777
  msgstr ""
778
 
779
+ #: ../lib/functions/KcSeoOptions.php:908
780
  msgid "Address region"
781
  msgstr ""
782
 
783
+ #: ../lib/functions/KcSeoOptions.php:910
784
  msgid "State (i.e. MO)"
785
  msgstr ""
786
 
787
+ #: ../lib/functions/KcSeoOptions.php:913
788
  msgid "Postal code"
789
  msgstr ""
790
 
791
+ #: ../lib/functions/KcSeoOptions.php:917
792
  msgid "Street address"
793
  msgstr ""
794
 
795
+ #: ../lib/functions/KcSeoOptions.php:979
796
  msgid "Book"
797
  msgstr ""
798
 
799
+ #: ../lib/functions/KcSeoOptions.php:983
800
  msgid "Course"
801
  msgstr ""
802
 
803
+ #: ../lib/functions/KcSeoOptions.php:987
804
  msgid "Job Posting"
805
  msgstr ""
806
 
807
+ #: ../lib/functions/KcSeoOptions.php:991
808
  msgid "Movie"
809
  msgstr ""
810
 
811
+ #: ../lib/functions/KcSeoOptions.php:1003
812
  msgid "TVEpisode"
813
  msgstr ""
814
 
815
+ #: ../lib/views/schema-options.php:13
816
+ msgid "General settings for WP SEO Structured Data Schema by <a href=\"https://wpsemplugins.com/\">WPSEMPlugins.com</a>"
 
 
 
 
817
  msgstr ""
818
 
819
+ #: ../lib/views/schema-options.php:35
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
820
  msgid "Site Type"
821
  msgstr ""
822
 
823
+ #: ../lib/views/schema-options.php:38
824
  msgid "Select one type"
825
  msgstr ""
826
 
827
+ #: ../lib/views/schema-options.php:78
828
  msgid "Organization or Business name"
829
  msgstr ""
830
 
831
+ #: ../lib/views/schema-options.php:85
832
  msgid "Site Image"
833
  msgstr ""
834
 
835
+ #: ../lib/views/schema-options.php:122
836
  msgid "Site Telephone"
837
  msgstr ""
838
 
839
+ #: ../lib/views/schema-options.php:127
840
  msgid "The telephone number."
841
  msgstr ""
842
 
843
+ #: ../lib/views/schema-options.php:131
844
  msgid "Additional Type"
845
  msgstr ""
846
 
847
+ #: ../lib/views/schema-options.php:138
848
  msgid "Add \"Additional Type\""
849
  msgstr ""
850
 
851
+ #: ../lib/views/schema-options.php:142
852
  msgid ""
853
+ "Product Ontology is an extension to schema using WikiPedia definitions that enables you to further define a type by adding an \"AdditionalType” attribute.Example for a Tailor (which is not available\n"
854
+ " as a schema “Type”): Pick LocalBusiness as a generic Type, then add additional type as follows:"
 
 
 
855
  msgstr ""
856
 
857
+ #: ../lib/views/schema-options.php:156
858
  msgid "Restaurant Information"
859
  msgstr ""
860
 
861
+ #: ../lib/views/schema-options.php:167
862
  msgid "Others local business info"
863
  msgstr ""
864
 
865
+ #: ../lib/views/schema-options.php:177
866
  msgid "Operation Hours"
867
  msgstr ""
868
 
869
+ #: ../lib/views/schema-options.php:204
870
  msgid "GeoCoordinates"
871
  msgstr ""
872
 
873
+ #: ../lib/views/schema-options.php:207
874
  msgid "Latitude"
875
  msgstr ""
876
 
877
+ #: ../lib/views/schema-options.php:214
878
  msgid "Longitude"
879
  msgstr ""
880
 
881
+ #: ../lib/views/schema-options.php:221
882
  msgid "Person"
883
  msgstr ""
884
 
885
+ #: ../lib/views/schema-options.php:231
886
  msgid "Work For"
887
  msgstr ""
888
 
889
+ #: ../lib/views/schema-options.php:239
890
  msgid "Job Title"
891
  msgstr ""
892
 
893
+ #: ../lib/views/schema-options.php:251
894
  msgid "Add your personal photo here"
895
  msgstr ""
896
 
897
+ #: ../lib/views/schema-options.php:262
898
  msgid "Birth date"
899
  msgstr ""
900
 
901
+ #: ../lib/views/schema-options.php:273
902
  msgid "Address Country"
903
  msgstr ""
904
 
905
+ #: ../lib/views/schema-options.php:288
906
  msgid "Address Locality"
907
  msgstr ""
908
 
909
+ #: ../lib/views/schema-options.php:295
910
  msgid "Address Region"
911
  msgstr ""
912
 
913
+ #: ../lib/views/schema-options.php:302
914
  msgid "Postal Code"
915
  msgstr ""
916
 
917
+ #: ../lib/views/schema-options.php:308
918
  msgid "Street Address"
919
  msgstr ""
920
 
921
+ #: ../lib/views/schema-options.php:317
922
  msgid "Add New Address"
923
  msgstr ""
924
 
925
+ #: ../lib/views/schema-options.php:324
926
  msgid "Organization Logo"
927
  msgstr ""
928
 
929
+ #: ../lib/views/schema-options.php:327, ../lib/views/schema-options.php:390
930
  msgid "Social Profile"
931
  msgstr ""
932
 
933
+ #: ../lib/views/schema-options.php:330
934
  msgid "Corporate Contacts"
935
  msgstr ""
936
 
937
+ #: ../lib/views/schema-options.php:336
938
  msgid "Select Organization Logo"
939
  msgstr ""
940
 
941
+ #: ../lib/views/schema-options.php:380
942
  msgid "Company Name"
943
  msgstr ""
944
 
945
+ #: ../lib/views/schema-options.php:387
946
  msgid "Social Profiles"
947
  msgstr ""
948
 
949
+ #: ../lib/views/schema-options.php:416
950
  msgid "Add Social Profile"
951
  msgstr ""
952
 
953
+ #: ../lib/views/schema-options.php:424
954
  msgid "Contacts"
955
  msgstr ""
956
 
957
+ #: ../lib/views/schema-options.php:443
958
  msgid "Contact Phone"
959
  msgstr ""
960
 
961
+ #: ../lib/views/schema-options.php:447
962
  msgid "Please follow the format below"
963
  msgstr ""
964
 
965
+ #: ../lib/views/schema-options.php:458
966
  msgid "Contact Email"
967
  msgstr ""
968
 
969
+ #: ../lib/views/schema-options.php:465
970
  msgid "Contact Option"
971
  msgstr ""
972
 
973
+ #: ../lib/views/schema-options.php:469
974
  msgid "Select an option"
975
  msgstr ""
976
 
977
+ #: ../lib/views/schema-options.php:472
978
  msgid "TollFree"
979
  msgstr ""
980
 
981
+ #: ../lib/views/schema-options.php:476
982
  msgid "HearingImpairedSupported"
983
  msgstr ""
984
 
985
+ #: ../lib/views/schema-options.php:482
986
  msgid "Area Served"
987
  msgstr ""
988
 
989
+ #: ../lib/views/schema-options.php:500
990
  msgid "Available language"
991
  msgstr ""
992
 
993
+ #: ../lib/views/schema-options.php:518
994
  msgid "Site Schema"
995
  msgstr ""
996
 
997
+ #: ../lib/views/schema-options.php:521
998
  msgid "Disable Site Schema"
999
  msgstr ""
1000
 
1001
+ #: ../lib/views/schema-options.php:529
1002
  msgid "Enable Site link Search Box"
1003
  msgstr ""
1004
 
1005
+ #: ../lib/views/schema-options.php:534
1006
  msgid "Note: Preferred Name markup may no longer be supported by Google"
1007
  msgstr ""
1008
 
1009
+ #: ../lib/views/schema-options.php:538
1010
  msgid "Site Name:"
1011
  msgstr ""
1012
 
1013
+ #: ../lib/views/schema-options.php:545
1014
  msgid "Site Alternative Name:"
1015
  msgstr ""
1016
 
1017
+ #: ../lib/views/schema-options.php:552
1018
  msgid "Site Url:"
1019
  msgstr ""
1020
 
1021
+ #: ../lib/views/schema-options.php:560, ../lib/views/settings.php:152
1022
  msgid "Save Changes"
1023
  msgstr ""
1024
 
1025
+ #: ../lib/views/settings.php:6
1026
  msgid "Schema Settings"
1027
  msgstr ""
1028
 
1029
+ #: ../lib/views/settings.php:13
1030
  msgid "Business / Org Schema"
1031
  msgstr ""
1032
 
1033
+ #: ../lib/views/settings.php:18
1034
  msgid ""
1035
  "Home page\n"
1036
  " only"
1037
  msgstr ""
1038
 
1039
+ #: ../lib/views/settings.php:22
1040
  msgid ""
1041
  "Sitewide (Apply General Settings schema\n"
1042
  " sitewide)"
1043
  msgstr ""
1044
 
1045
+ #: ../lib/views/settings.php:27
1046
  msgid "Turn off (Turn off global schema)"
1047
  msgstr ""
1048
 
1049
+ #: ../lib/views/settings.php:32
1050
  msgid "Post Type"
1051
  msgstr ""
1052
 
1053
+ #: ../lib/views/settings.php:33, ../lib/views/settings.php:52, ../lib/views/settings.php:78, ../lib/views/settings.php:87
1054
+ msgid "PRO"
1055
  msgstr ""
1056
 
1057
+ #: ../lib/views/settings.php:46
1058
+ msgid "Site Navigation Element Schema"
1059
  msgstr ""
1060
 
1061
+ #: ../lib/views/settings.php:51, ../lib/views/settings.php:77
1062
+ msgid "Publisher Name"
1063
  msgstr ""
1064
 
1065
+ #: ../lib/views/settings.php:67
1066
  msgid ""
1067
+ "Please deselect the navigation menu if you want to deactivate site navigation\n"
 
1068
  " schema."
1069
  msgstr ""
1070
 
1071
+ #: ../lib/views/settings.php:72
1072
  msgid "Publisher Information"
1073
  msgstr ""
1074
 
1075
+ #: ../lib/views/settings.php:93
1076
+ msgid "Third party plugin Settings"
1077
  msgstr ""
1078
 
1079
+ #: ../lib/views/settings.php:97
1080
+ msgid "YOAST SEO Default Schema JSON-LD"
1081
  msgstr ""
1082
 
1083
+ #: ../lib/views/settings.php:102, ../lib/views/settings.php:112, ../lib/views/settings.php:122, ../lib/views/settings.php:132
1084
+ msgid "Disable"
1085
  msgstr ""
1086
 
1087
+ #: ../lib/views/settings.php:103
1088
+ msgid "This will remove all default schema generated by Yoast SEO plugin."
 
 
 
1089
  msgstr ""
1090
 
1091
+ #: ../lib/views/settings.php:107
1092
+ msgid "YOAST SEO sitelinks searchbox"
 
1093
  msgstr ""
1094
 
1095
+ #: ../lib/views/settings.php:113
1096
+ msgid "This will remove sitelinks searchbox generated by Yoast SEO plugin."
1097
+ msgstr ""
1098
+
1099
+ #: ../lib/views/settings.php:117
1100
+ msgid "Woocommerce default schema"
1101
+ msgstr ""
1102
+
1103
+ #: ../lib/views/settings.php:123
1104
+ msgid "This will remove Woocommerce plugin generated schema."
1105
+ msgstr ""
1106
+
1107
+ #: ../lib/views/settings.php:127
1108
+ msgid "Easy Digital Download default schema"
1109
+ msgstr ""
1110
+
1111
+ #: ../lib/views/settings.php:133
1112
+ msgid "This will remove Easy Digital Download plugin generated schema."
1113
  msgstr ""
1114
 
1115
+ #: ../lib/views/settings.php:137
1116
+ msgid "System Settings"
1117
+ msgstr ""
1118
+
1119
+ #: ../lib/views/settings.php:140
1120
+ msgid "Delete all data"
1121
+ msgstr ""
1122
+
1123
+ #: ../lib/views/settings.php:145
1124
+ msgid "Enable"
1125
+ msgstr ""
1126
+
1127
+ #: ../lib/views/settings.php:146
1128
+ msgid ""
1129
+ "This will delete all schema created and applied by this plugin when plugin is\n"
1130
+ " deleted."
1131
  msgstr ""
lib/classes/KcSeoHooks.php ADDED
@@ -0,0 +1,68 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+
4
+ class KcSeoHooks {
5
+
6
+ public function __construct() {
7
+ add_action( 'plugins_loaded', array( __CLASS__, 'plugins_loaded' ) );
8
+
9
+ }
10
+
11
+ public static function plugins_loaded() {
12
+ $settings = get_option( kcseo()->options['main_settings'] );
13
+ if ( KcSeoFunctions::isYoastActive() ) {
14
+ if ( isset( $settings['yoast_wpseo_json_ld_search'] ) && $settings['yoast_wpseo_json_ld_search'] ) {
15
+ add_filter( 'disable_wpseo_json_ld_search', '__return_true' );
16
+ }
17
+ if ( isset( $settings['yoast_wpseo_json_ld'] ) && $settings['yoast_wpseo_json_ld'] ) {
18
+ add_filter( 'wpseo_json_ld_output', array( __CLASS__, 'disable_yoast_schema_data' ), 10 );
19
+ add_filter( 'wpseo_schema_graph_pieces', '__return_empty_array' );
20
+ }
21
+ }
22
+
23
+ if ( KcSeoFunctions::isWcActive() ) {
24
+ if ( isset( $settings['wc_schema_disable'] ) && $settings['wc_schema_disable'] ) {
25
+ add_filter( 'woocommerce_structured_data_type_for_page', array(
26
+ __CLASS__,
27
+ 'remove_product_structured_data'
28
+ ), 10, 2 );
29
+ add_action( 'init', array( __CLASS__, 'remove_output_structured_data' ) );
30
+ }
31
+ }
32
+ if ( KcSeoFunctions::isEddActive() ) {
33
+ if ( isset( $settings['edd_schema_microdata'] ) && $settings['edd_schema_microdata'] ) {
34
+ add_filter( 'edd_add_schema_microdata', '__return_false' );
35
+ }
36
+ }
37
+ }
38
+
39
+ public static function disable_yoast_schema_data( $data ) {
40
+ $data = array();
41
+
42
+ return $data;
43
+ }
44
+
45
+ /**
46
+ * Remove all product structured data.
47
+ */
48
+ static function remove_product_structured_data( $types ) {
49
+ if ( ( $index = array_search( 'product', $types ) ) !== false ) {
50
+ unset( $types[ $index ] );
51
+ }
52
+
53
+ return $types;
54
+ }
55
+
56
+ /* Remove the default WooCommerce 3 JSON/LD structured data */
57
+ static function remove_output_structured_data() {
58
+ remove_action( 'wp_footer', array(
59
+ WC()->structured_data,
60
+ 'output_structured_data'
61
+ ), 10 ); // This removes structured data from all frontend pages
62
+ remove_action( 'woocommerce_email_order_details', array(
63
+ WC()->structured_data,
64
+ 'output_email_structured_data'
65
+ ), 30 ); // This removes structured data from all Emails sent by WooCommerce
66
+ }
67
+
68
+ }
lib/classes/KcSeoInit.php CHANGED
@@ -6,8 +6,8 @@ if ( ! class_exists( 'KcSeoInit' ) ):
6
  protected $version;
7
 
8
  function __construct() {
9
- global $KcSeoWPSchema;
10
- $this->version = ( defined( 'WP_DEBUG' ) && WP_DEBUG ) ? time() : $KcSeoWPSchema->options['version'];
11
  add_action( 'init', array( $this, 'kcSeoScript' ) );
12
  add_action( 'admin_menu', array( $this, 'kcSeo_Wp_Schema_menu' ) );
13
  add_action( 'plugins_loaded', array( $this, 'kcSeo_pluginInit' ) );
6
  protected $version;
7
 
8
  function __construct() {
9
+
10
+ $this->version = ( defined( 'WP_DEBUG' ) && WP_DEBUG ) ? time() : KCSEO_VERSION;
11
  add_action( 'init', array( $this, 'kcSeoScript' ) );
12
  add_action( 'admin_menu', array( $this, 'kcSeo_Wp_Schema_menu' ) );
13
  add_action( 'plugins_loaded', array( $this, 'kcSeo_pluginInit' ) );
lib/functions/KcSeoFunctions.php ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+
4
+ class KcSeoFunctions {
5
+ static function isYoastActive() {
6
+ if ( in_array( 'wordpress-seo/wp-seo.php', apply_filters( 'active_plugins', get_option( 'active_plugins' ) ) ) ) {
7
+ return true;
8
+ }
9
+
10
+ return false;
11
+ }
12
+
13
+ static function isWcActive() {
14
+ return class_exists( 'woocommerce' );
15
+ }
16
+
17
+ public static function isEddActive() {
18
+ return class_exists( 'Easy_Digital_Downloads' );
19
+ }
20
+
21
+ }
lib/functions/KcSeoOptions.php CHANGED
@@ -221,72 +221,72 @@ class KcSeoOptions
221
  'pro' => false,
222
  'title' => __('Event', "wp-seo-structured-data-schema"),
223
  'fields' => array(
224
- 'active' => array(
225
  'type' => 'checkbox'
226
  ),
227
- 'name' => array(
228
  'title' => __('Name', "wp-seo-structured-data-schema"),
229
  'type' => 'text',
230
  'required' => true,
231
  'desc' => __("The name of the event.", "wp-seo-structured-data-schema")
232
  ),
233
- 'locationName' => array(
234
  'title' => __('Location name', "wp-seo-structured-data-schema"),
235
  'type' => 'text',
236
  'required' => true,
237
  'desc' => __("Event Location name", "wp-seo-structured-data-schema")
238
  ),
239
- 'locationAddress' => array(
240
  'title' => __('Location address', "wp-seo-structured-data-schema"),
241
  'type' => 'text',
242
  'required' => true,
243
  'desc' => __("The location of for example where the event is happening, an organization is located, or where an action takes place.", "wp-seo-structured-data-schema")
244
  ),
245
- 'startDate' => array(
246
  'title' => __('Start date', "wp-seo-structured-data-schema"),
247
  'type' => 'text',
248
  'class' => 'kcseo-date',
249
  'required' => true,
250
  'desc' => __("Event start date Like : 2017-10-16 4:00 AM", "wp-seo-structured-data-schema")
251
  ),
252
- 'endDate' => array(
253
  'title' => __('End date', "wp-seo-structured-data-schema"),
254
  'type' => 'text',
255
  'recommended' => true,
256
  'class' => 'kcseo-date',
257
  'desc' => __("Event end date Like : 2017-10-16 4:00 AM", "wp-seo-structured-data-schema")
258
  ),
259
- 'description' => array(
260
  'title' => __('Description', "wp-seo-structured-data-schema"),
261
  'type' => 'textarea',
262
  'recommended' => true,
263
  'desc' => __("Event description", "wp-seo-structured-data-schema")
264
  ),
265
- 'performerName' => array(
266
  'title' => __('Performer Name', "wp-seo-structured-data-schema"),
267
  'type' => 'text',
268
  'recommended' => true,
269
  'desc' => __("The performer's name.", "wp-seo-structured-data-schema")
270
  ),
271
- 'image' => array(
272
  'title' => __('Image URL', "wp-seo-structured-data-schema"),
273
  'type' => 'url',
274
  'recommended' => true,
275
  'desc' => __("URL of an image or logo for the event or tour", "wp-seo-structured-data-schema")
276
  ),
277
- 'price' => array(
278
  'title' => __('Price', "wp-seo-structured-data-schema"),
279
  'type' => 'number',
280
  'recommended' => true,
281
  'attr' => 'step="any"',
282
  'desc' => __("This is highly recommended. The lowest available price, including service charges and fees, of this type of ticket. <span class='required'>Not required but (Recommended)</span>", "wp-seo-structured-data-schema")
283
  ),
284
- 'priceCurrency' => array(
285
  'title' => __('Price currency', "wp-seo-structured-data-schema"),
286
  'type' => 'text',
287
  'desc' => __("The 3-letter currency code. (USD)", "wp-seo-structured-data-schema")
288
  ),
289
- 'availability' => array(
290
  'title' => 'Availability',
291
  'type' => 'select',
292
  'recommended' => true,
@@ -297,20 +297,70 @@ class KcSeoOptions
297
  'http://schema.org/PreOrder' => 'PreOrder',
298
  ),
299
  ),
300
- 'validFrom' => array(
301
  'title' => __('Valid From', "wp-seo-structured-data-schema"),
302
  'type' => 'text',
303
  'recommended' => true,
304
  'class' => 'kcseo-date',
305
  'desc' => __(sprintf("The date and time when tickets go on sale (only required on date-restricted offers), in <a href='%s' target='_blank'>ISO-8601 format</a>", 'https://en.wikipedia.org/wiki/ISO_8601'), "wp-seo-structured-data-schema")
306
  ),
307
- 'url' => array(
308
  'title' => 'URL',
309
  'recommended' => true,
310
  'type' => 'url',
311
  'placeholder' => 'URL',
312
  'desc' => __("A link to the event's details page. <span class='required'>Not required but (Recommended)</span>", "wp-seo-structured-data-schema")
313
  ),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
314
  )
315
  ),
316
  'product' => array(
@@ -337,28 +387,28 @@ class KcSeoOptions
337
  'desc' => __("Product description.", "wp-seo-structured-data-schema")
338
  ),
339
  'sku' => array(
340
- 'title' => __('SKU', "wp-seo-structured-data-schema-pro"),
341
  'type' => 'text',
342
  'recommended' => true
343
  ),
344
  'brand' => array(
345
- 'title' => __('Brand', "wp-seo-structured-data-schema"),
346
- 'type' => 'text',
347
  'recommended' => true,
348
- 'desc' => __("The brand of the product.", "wp-seo-structured-data-schema")
349
  ),
350
  'identifier_type' => array(
351
- 'title' => __('Identifier Type', "wp-seo-structured-data-schema"),
352
- 'type' => 'select',
353
  'recommended' => true,
354
- 'options' => array(
355
  'mpn' => 'MPN',
356
  'isbn' => 'ISBN',
357
  'gtin8' => 'GTIN-8 (UPC, JAN)',
358
  'gtin12' => 'GTIN-12 (UPC)',
359
  'gtin13' => 'GTIN-13 (EAN,JAN)'
360
  ),
361
- 'desc' => __("<strong>MPN</strong><br>
362
  &#8594; MPN(Manufacturer Part Number) Used globally, Alphanumeric digits (various lengths)<br>
363
  <strong>GTIN</strong><br>
364
  &#8594; UPC(Universal Product Code) Used in primarily North America. 12 numeric digits. eg. 892685001003.<br>
@@ -367,10 +417,14 @@ class KcSeoOptions
367
  &#8594; JAN(Japanese Article Number) Used only in Japan, 8 or 13 numeric digits.", "wp-seo-structured-data-schema")
368
  ),
369
  'identifier' => array(
370
- 'title' => __('Identifier', "wp-seo-structured-data-schema"),
371
- 'type' => 'text',
372
  'recommended' => true,
373
- 'desc' => __("Enter product unique identifier", "wp-seo-structured-data-schema")
 
 
 
 
374
  ),
375
  'reviewRatingValue' => array(
376
  'title' => __('Review rating value', "wp-seo-structured-data-schema"),
@@ -407,6 +461,10 @@ class KcSeoOptions
407
  'attr' => 'step="any"',
408
  'desc' => __("Review rating value. <span class='required'>This is required if (Rating value) is given</span>", "wp-seo-structured-data-schema")
409
  ),
 
 
 
 
410
  'price' => array(
411
  'title' => __('Price', "wp-seo-structured-data-schema"),
412
  'type' => 'number',
@@ -603,59 +661,64 @@ class KcSeoOptions
603
  'pro' => false,
604
  'title' => __('Review', "wp-seo-structured-data-schema"),
605
  'fields' => array(
606
- 'active' => array(
607
  'type' => 'checkbox'
608
  ),
609
- 'itemName' => array(
 
 
 
 
 
610
  'title' => __('Name of the reviewed item', "wp-seo-structured-data-schema"),
611
  'type' => 'text',
612
  'required' => true,
613
  'desc' => __("The item that is being reviewed.", "wp-seo-structured-data-schema")
614
  ),
615
- 'reviewBody' => array(
616
  'title' => __('Review body', "wp-seo-structured-data-schema"),
617
  'type' => 'textarea',
618
  'required' => true,
619
  'desc' => __("The actual body of the review.", "wp-seo-structured-data-schema")
620
  ),
621
- 'name' => array(
622
  'title' => __('Review name', "wp-seo-structured-data-schema"),
623
  'type' => 'text',
624
  'required' => true,
625
  'desc' => __("A particular name for the review.", "wp-seo-structured-data-schema")
626
  ),
627
- 'author' => array(
628
  'title' => __('Author', "wp-seo-structured-data-schema"),
629
  'type' => 'text',
630
  'required' => true,
631
  'author' => 'Author name',
632
  'desc' => __("The author of the review. The reviewer’s name needs to be a valid name.", "wp-seo-structured-data-schema")
633
  ),
634
- 'datePublished' => array(
635
  'title' => __('Date of Published', "wp-seo-structured-data-schema"),
636
  'type' => 'text',
637
  'class' => 'kcseo-date',
638
  'desc' => __("Like this: 2015-12-25 4:00 PM", "wp-seo-structured-data-schema")
639
  ),
640
- 'ratingValue' => array(
641
  'title' => __('Rating value', "wp-seo-structured-data-schema"),
642
  'type' => 'number',
643
  'attr' => 'step="any"',
644
  'desc' => __("A numerical quality rating for the item.", "wp-seo-structured-data-schema")
645
  ),
646
- 'bestRating' => array(
647
  'title' => __('Best rating', "wp-seo-structured-data-schema"),
648
  'type' => 'number',
649
  'attr' => 'step="any"',
650
  'desc' => __("The highest value allowed in this rating system.", "wp-seo-structured-data-schema")
651
  ),
652
- 'worstRating' => array(
653
  'title' => __('Worst rating', "wp-seo-structured-data-schema"),
654
  'type' => 'number',
655
  'attr' => 'step="any"',
656
  'desc' => __("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.", "wp-seo-structured-data-schema")
657
  ),
658
- 'publisher' => array(
659
  'title' => __('Name of the organization', "wp-seo-structured-data-schema"),
660
  'type' => 'text',
661
  'desc' => __('The publisher of the review.', "wp-seo-structured-data-schema")
@@ -813,51 +876,101 @@ class KcSeoOptions
813
  'pro' => false,
814
  'title' => __('Local Business', "wp-seo-structured-data-schema"),
815
  'fields' => array(
816
- 'active' => array(
817
  'type' => 'checkbox'
818
  ),
819
- 'name' => array(
820
  'title' => __('Name', "wp-seo-structured-data-schema"),
821
  'type' => 'text',
822
  'required' => true
823
  ),
824
- 'description' => array(
825
  'title' => __('Description', "wp-seo-structured-data-schema"),
826
  'type' => 'textarea',
827
  ),
828
- 'image' => array(
829
  'title' => __('Business Logo', "wp-seo-structured-data-schema"),
830
  'type' => 'image',
831
  'required' => true
832
  ),
833
- 'priceRange' => array(
834
  'title' => __('Price Range', "wp-seo-structured-data-schema"),
835
  'type' => 'text',
836
  'recommended' => true,
837
  'desc' => __("The price range of the business, for example $$$.", "wp-seo-structured-data-schema")
838
  ),
839
- 'addressLocality' => array(
840
  'title' => __('Address locality', "wp-seo-structured-data-schema"),
841
  'type' => 'text',
842
  'desc' => __('City (i.e Kansas city)', "wp-seo-structured-data-schema")
843
  ),
844
- 'addressRegion' => array(
845
  'title' => __('Address region', "wp-seo-structured-data-schema"),
846
  'type' => 'text',
847
  'desc' => __('State (i.e. MO)', "wp-seo-structured-data-schema")
848
  ),
849
- 'postalCode' => array(
850
  'title' => __('Postal code', "wp-seo-structured-data-schema"),
851
  'type' => 'text',
852
  ),
853
- 'streetAddress' => array(
854
  'title' => __('Street address', "wp-seo-structured-data-schema"),
855
  'type' => 'text',
856
  ),
857
- 'telephone' => array(
858
  'title' => __('Telephone', "wp-seo-structured-data-schema"),
859
  'type' => 'text',
860
  'recommended' => true,
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
861
  )
862
  )
863
  ),
@@ -1341,108 +1454,108 @@ class KcSeoOptions
1341
  }
1342
 
1343
  static function getLanguageList() {
1344
- $language_list = array(
1345
- "Akan",
1346
- "Amharic",
1347
- "Arabic",
1348
- "Assamese",
1349
- "Awadhi",
1350
- "Azerbaijani",
1351
- "Balochi",
1352
- "Belarusian",
1353
- "Bengali",
1354
- "Bhojpuri",
1355
- "Burmese",
1356
- "Cantonese",
1357
- "Cebuano",
1358
- "Chewa",
1359
- "Chhattisgarhi",
1360
- "Chittagonian",
1361
- "Czech",
1362
- "Deccan",
1363
- "Dhundhari",
1364
- "Dutch",
1365
- "English",
1366
- "French",
1367
- "Fula",
1368
- "Gan",
1369
- "German",
1370
- "Greek",
1371
- "Gujarati",
1372
- "Haitian Creole",
1373
- "Hakka",
1374
- "Haryanvi",
1375
- "Hausa",
1376
- "Hiligaynon",
1377
- "Hindi / Urdu",
1378
- "Hmong",
1379
- "Hungarian",
1380
- "Igbo",
1381
- "Ilokano",
1382
- "Italian",
1383
- "Japanese",
1384
- "Javanese",
1385
- "Jin",
1386
- "Kannada",
1387
- "Kazakh",
1388
- "Khmer",
1389
- "Kinyarwanda",
1390
- "Kirundi",
1391
- "Konkani",
1392
- "Korean",
1393
- "Kurdish",
1394
- "Madurese",
1395
- "Magahi",
1396
- "Maithili",
1397
- "Malagasy",
1398
- "Malay/Indonesian",
1399
- "Malayalam",
1400
- "Mandarin",
1401
- "Marathi",
1402
- "Marwari",
1403
- "Min Bei",
1404
- "Min Dong",
1405
- "Min Nan",
1406
- "Mossi",
1407
- "Nepali",
1408
- "Oriya",
1409
- "Oromo",
1410
- "Pashto",
1411
- "Persian",
1412
- "Polish",
1413
- "Portuguese",
1414
- "Punjabi",
1415
- "Quechua",
1416
- "Romanian",
1417
- "Russian",
1418
- "Saraiki",
1419
- "Serbo-Croatian",
1420
- "Shona",
1421
- "Sindhi",
1422
- "Sinhalese",
1423
- "Somali",
1424
- "Spanish",
1425
- "Sundanese",
1426
- "Swahili",
1427
- "Swedish",
1428
- "Sylheti",
1429
- "Tagalog",
1430
- "Tamil",
1431
- "Telugu",
1432
- "Thai",
1433
- "Turkish",
1434
- "Ukrainian",
1435
- "Uyghur",
1436
- "Uzbek",
1437
- "Vietnamese",
1438
- "Wu",
1439
- "Xhosa",
1440
- "Xiang",
1441
- "Yoruba",
1442
- "Zulu",
1443
- );
1444
 
1445
- return apply_filters('kcseo_language_list', $language_list);
1446
  }
1447
 
1448
  static function getSocialList() {
@@ -1463,4 +1576,17 @@ class KcSeoOptions
1463
  return apply_filters('kcseo_social_list', $socialList);
1464
  }
1465
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1466
  }
221
  'pro' => false,
222
  'title' => __('Event', "wp-seo-structured-data-schema"),
223
  'fields' => array(
224
+ 'active' => array(
225
  'type' => 'checkbox'
226
  ),
227
+ 'name' => array(
228
  'title' => __('Name', "wp-seo-structured-data-schema"),
229
  'type' => 'text',
230
  'required' => true,
231
  'desc' => __("The name of the event.", "wp-seo-structured-data-schema")
232
  ),
233
+ 'locationName' => array(
234
  'title' => __('Location name', "wp-seo-structured-data-schema"),
235
  'type' => 'text',
236
  'required' => true,
237
  'desc' => __("Event Location name", "wp-seo-structured-data-schema")
238
  ),
239
+ 'locationAddress' => array(
240
  'title' => __('Location address', "wp-seo-structured-data-schema"),
241
  'type' => 'text',
242
  'required' => true,
243
  'desc' => __("The location of for example where the event is happening, an organization is located, or where an action takes place.", "wp-seo-structured-data-schema")
244
  ),
245
+ 'startDate' => array(
246
  'title' => __('Start date', "wp-seo-structured-data-schema"),
247
  'type' => 'text',
248
  'class' => 'kcseo-date',
249
  'required' => true,
250
  'desc' => __("Event start date Like : 2017-10-16 4:00 AM", "wp-seo-structured-data-schema")
251
  ),
252
+ 'endDate' => array(
253
  'title' => __('End date', "wp-seo-structured-data-schema"),
254
  'type' => 'text',
255
  'recommended' => true,
256
  'class' => 'kcseo-date',
257
  'desc' => __("Event end date Like : 2017-10-16 4:00 AM", "wp-seo-structured-data-schema")
258
  ),
259
+ 'description' => array(
260
  'title' => __('Description', "wp-seo-structured-data-schema"),
261
  'type' => 'textarea',
262
  'recommended' => true,
263
  'desc' => __("Event description", "wp-seo-structured-data-schema")
264
  ),
265
+ 'performerName' => array(
266
  'title' => __('Performer Name', "wp-seo-structured-data-schema"),
267
  'type' => 'text',
268
  'recommended' => true,
269
  'desc' => __("The performer's name.", "wp-seo-structured-data-schema")
270
  ),
271
+ 'image' => array(
272
  'title' => __('Image URL', "wp-seo-structured-data-schema"),
273
  'type' => 'url',
274
  'recommended' => true,
275
  'desc' => __("URL of an image or logo for the event or tour", "wp-seo-structured-data-schema")
276
  ),
277
+ 'price' => array(
278
  'title' => __('Price', "wp-seo-structured-data-schema"),
279
  'type' => 'number',
280
  'recommended' => true,
281
  'attr' => 'step="any"',
282
  'desc' => __("This is highly recommended. The lowest available price, including service charges and fees, of this type of ticket. <span class='required'>Not required but (Recommended)</span>", "wp-seo-structured-data-schema")
283
  ),
284
+ 'priceCurrency' => array(
285
  'title' => __('Price currency', "wp-seo-structured-data-schema"),
286
  'type' => 'text',
287
  'desc' => __("The 3-letter currency code. (USD)", "wp-seo-structured-data-schema")
288
  ),
289
+ 'availability' => array(
290
  'title' => 'Availability',
291
  'type' => 'select',
292
  'recommended' => true,
297
  'http://schema.org/PreOrder' => 'PreOrder',
298
  ),
299
  ),
300
+ 'validFrom' => array(
301
  'title' => __('Valid From', "wp-seo-structured-data-schema"),
302
  'type' => 'text',
303
  'recommended' => true,
304
  'class' => 'kcseo-date',
305
  'desc' => __(sprintf("The date and time when tickets go on sale (only required on date-restricted offers), in <a href='%s' target='_blank'>ISO-8601 format</a>", 'https://en.wikipedia.org/wiki/ISO_8601'), "wp-seo-structured-data-schema")
306
  ),
307
+ 'url' => array(
308
  'title' => 'URL',
309
  'recommended' => true,
310
  'type' => 'url',
311
  'placeholder' => 'URL',
312
  'desc' => __("A link to the event's details page. <span class='required'>Not required but (Recommended)</span>", "wp-seo-structured-data-schema")
313
  ),
314
+ 'review_section' => array(
315
+ 'title' => __('Review', "wp-seo-structured-data-schema"),
316
+ 'type' => 'heading',
317
+ 'desc' => __("To add review schema for this type, complete fields below and enable, others live blank.", "wp-seo-structured-data-schema")
318
+ ),
319
+ 'review_active' => array(
320
+ 'type' => 'checkbox'
321
+ ),
322
+ 'review_author' => array(
323
+ 'title' => __("Author", "wp-seo-structured-data-schema"),
324
+ 'type' => 'text',
325
+ 'required' => true
326
+ ),
327
+ 'review_author_sameAs' => array(
328
+ 'title' => __("Author Same As profile link", "wp-seo-structured-data-schema"),
329
+ 'type' => 'textarea',
330
+ 'attr' => 'placeholder="https://facebook.com/example&#10;https://twitter.com/example"',
331
+ 'required' => true,
332
+ 'desc' => __('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', "wp-seo-structured-data-schema")
333
+ ),
334
+ 'review_body' => array(
335
+ 'title' => __('Review body', "wp-seo-structured-data-schema"),
336
+ 'type' => 'textarea',
337
+ 'required' => true,
338
+ 'desc' => __("The actual body of the review.", "wp-seo-structured-data-schema")
339
+ ),
340
+ 'review_datePublished' => 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 4:00 PM", "wp-seo-structured-data-schema")
345
+ ),
346
+ 'review_ratingValue' => array(
347
+ 'title' => __('Rating value', "wp-seo-structured-data-schema"),
348
+ 'type' => 'number',
349
+ 'attr' => 'step="any"',
350
+ 'desc' => __("A numerical quality rating for the item.", "wp-seo-structured-data-schema")
351
+ ),
352
+ 'review_bestRating' => array(
353
+ 'title' => __('Best rating', "wp-seo-structured-data-schema"),
354
+ 'type' => 'number',
355
+ 'attr' => 'step="any"',
356
+ 'desc' => __("The highest value allowed in this rating system.", "wp-seo-structured-data-schema")
357
+ ),
358
+ 'review_worstRating' => array(
359
+ 'title' => __('Worst rating', "wp-seo-structured-data-schema"),
360
+ 'type' => 'number',
361
+ 'attr' => 'step="any"',
362
+ 'desc' => __("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.", "wp-seo-structured-data-schema")
363
+ )
364
  )
365
  ),
366
  'product' => array(
387
  'desc' => __("Product description.", "wp-seo-structured-data-schema")
388
  ),
389
  'sku' => array(
390
+ 'title' => __('SKU', "wp-seo-structured-data-schema"),
391
  'type' => 'text',
392
  'recommended' => true
393
  ),
394
  'brand' => array(
395
+ 'title' => __('Brand', "wp-seo-structured-data-schema"),
396
+ 'type' => 'text',
397
  'recommended' => true,
398
+ 'desc' => __("The brand of the product.", "wp-seo-structured-data-schema")
399
  ),
400
  'identifier_type' => array(
401
+ 'title' => __('Identifier Type', "wp-seo-structured-data-schema"),
402
+ 'type' => 'select',
403
  'recommended' => true,
404
+ 'options' => array(
405
  'mpn' => 'MPN',
406
  'isbn' => 'ISBN',
407
  'gtin8' => 'GTIN-8 (UPC, JAN)',
408
  'gtin12' => 'GTIN-12 (UPC)',
409
  'gtin13' => 'GTIN-13 (EAN,JAN)'
410
  ),
411
+ 'desc' => __("<strong>MPN</strong><br>
412
  &#8594; MPN(Manufacturer Part Number) Used globally, Alphanumeric digits (various lengths)<br>
413
  <strong>GTIN</strong><br>
414
  &#8594; UPC(Universal Product Code) Used in primarily North America. 12 numeric digits. eg. 892685001003.<br>
417
  &#8594; JAN(Japanese Article Number) Used only in Japan, 8 or 13 numeric digits.", "wp-seo-structured-data-schema")
418
  ),
419
  'identifier' => array(
420
+ 'title' => __('Identifier', "wp-seo-structured-data-schema"),
421
+ 'type' => 'text',
422
  'recommended' => true,
423
+ 'desc' => __("Enter product unique identifier", "wp-seo-structured-data-schema")
424
+ ),
425
+ 'rating_section' => array(
426
+ 'title' => __('Product Review & Rating', "wp-seo-structured-data-schema"),
427
+ 'type' => 'heading',
428
  ),
429
  'reviewRatingValue' => array(
430
  'title' => __('Review rating value', "wp-seo-structured-data-schema"),
461
  'attr' => 'step="any"',
462
  'desc' => __("Review rating value. <span class='required'>This is required if (Rating value) is given</span>", "wp-seo-structured-data-schema")
463
  ),
464
+ 'pricing_section' => array(
465
+ 'title' => __('Product Pricing', "wp-seo-structured-data-schema"),
466
+ 'type' => 'heading',
467
+ ),
468
  'price' => array(
469
  'title' => __('Price', "wp-seo-structured-data-schema"),
470
  'type' => 'number',
661
  'pro' => false,
662
  'title' => __('Review', "wp-seo-structured-data-schema"),
663
  'fields' => array(
664
+ 'active' => array(
665
  'type' => 'checkbox'
666
  ),
667
+ 'review_notice_heading' => array(
668
+ 'title' => sprintf('<span style="display:block;text-align:center;color: red">%s</span>', __('Notice</span>', "wp-seo-structured-data-schema-pro")),
669
+ 'type' => 'heading',
670
+ 'desc' => self::getReviewNotice()
671
+ ),
672
+ 'itemName' => array(
673
  'title' => __('Name of the reviewed item', "wp-seo-structured-data-schema"),
674
  'type' => 'text',
675
  'required' => true,
676
  'desc' => __("The item that is being reviewed.", "wp-seo-structured-data-schema")
677
  ),
678
+ 'reviewBody' => array(
679
  'title' => __('Review body', "wp-seo-structured-data-schema"),
680
  'type' => 'textarea',
681
  'required' => true,
682
  'desc' => __("The actual body of the review.", "wp-seo-structured-data-schema")
683
  ),
684
+ 'name' => array(
685
  'title' => __('Review name', "wp-seo-structured-data-schema"),
686
  'type' => 'text',
687
  'required' => true,
688
  'desc' => __("A particular name for the review.", "wp-seo-structured-data-schema")
689
  ),
690
+ 'author' => array(
691
  'title' => __('Author', "wp-seo-structured-data-schema"),
692
  'type' => 'text',
693
  'required' => true,
694
  'author' => 'Author name',
695
  'desc' => __("The author of the review. The reviewer’s name needs to be a valid name.", "wp-seo-structured-data-schema")
696
  ),
697
+ 'datePublished' => 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 4:00 PM", "wp-seo-structured-data-schema")
702
  ),
703
+ 'ratingValue' => array(
704
  'title' => __('Rating value', "wp-seo-structured-data-schema"),
705
  'type' => 'number',
706
  'attr' => 'step="any"',
707
  'desc' => __("A numerical quality rating for the item.", "wp-seo-structured-data-schema")
708
  ),
709
+ 'bestRating' => array(
710
  'title' => __('Best rating', "wp-seo-structured-data-schema"),
711
  'type' => 'number',
712
  'attr' => 'step="any"',
713
  'desc' => __("The highest value allowed in this rating system.", "wp-seo-structured-data-schema")
714
  ),
715
+ 'worstRating' => array(
716
  'title' => __('Worst rating', "wp-seo-structured-data-schema"),
717
  'type' => 'number',
718
  'attr' => 'step="any"',
719
  'desc' => __("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.", "wp-seo-structured-data-schema")
720
  ),
721
+ 'publisher' => array(
722
  'title' => __('Name of the organization', "wp-seo-structured-data-schema"),
723
  'type' => 'text',
724
  'desc' => __('The publisher of the review.', "wp-seo-structured-data-schema")
876
  'pro' => false,
877
  'title' => __('Local Business', "wp-seo-structured-data-schema"),
878
  'fields' => array(
879
+ 'active' => array(
880
  'type' => 'checkbox'
881
  ),
882
+ 'name' => array(
883
  'title' => __('Name', "wp-seo-structured-data-schema"),
884
  'type' => 'text',
885
  'required' => true
886
  ),
887
+ 'description' => array(
888
  'title' => __('Description', "wp-seo-structured-data-schema"),
889
  'type' => 'textarea',
890
  ),
891
+ 'image' => array(
892
  'title' => __('Business Logo', "wp-seo-structured-data-schema"),
893
  'type' => 'image',
894
  'required' => true
895
  ),
896
+ 'priceRange' => array(
897
  'title' => __('Price Range', "wp-seo-structured-data-schema"),
898
  'type' => 'text',
899
  'recommended' => true,
900
  'desc' => __("The price range of the business, for example $$$.", "wp-seo-structured-data-schema")
901
  ),
902
+ 'addressLocality' => array(
903
  'title' => __('Address locality', "wp-seo-structured-data-schema"),
904
  'type' => 'text',
905
  'desc' => __('City (i.e Kansas city)', "wp-seo-structured-data-schema")
906
  ),
907
+ 'addressRegion' => array(
908
  'title' => __('Address region', "wp-seo-structured-data-schema"),
909
  'type' => 'text',
910
  'desc' => __('State (i.e. MO)', "wp-seo-structured-data-schema")
911
  ),
912
+ 'postalCode' => array(
913
  'title' => __('Postal code', "wp-seo-structured-data-schema"),
914
  'type' => 'text',
915
  ),
916
+ 'streetAddress' => array(
917
  'title' => __('Street address', "wp-seo-structured-data-schema"),
918
  'type' => 'text',
919
  ),
920
+ 'telephone' => array(
921
  'title' => __('Telephone', "wp-seo-structured-data-schema"),
922
  'type' => 'text',
923
  'recommended' => true,
924
+ ),
925
+ 'review_section' => array(
926
+ 'title' => __('Review', "wp-seo-structured-data-schema"),
927
+ 'type' => 'heading',
928
+ 'desc' => __("To add review schema for this type, complete fields below and enable, others live blank.", "wp-seo-structured-data-schema")
929
+ ),
930
+ 'review_active' => array(
931
+ 'type' => 'checkbox'
932
+ ),
933
+ 'review_author' => array(
934
+ 'title' => __("Author", "wp-seo-structured-data-schema"),
935
+ 'type' => 'text',
936
+ 'required' => true
937
+ ),
938
+ 'review_author_sameAs' => array(
939
+ 'title' => __("Author Same As profile link", "wp-seo-structured-data-schema"),
940
+ 'type' => 'textarea',
941
+ 'attr' => 'placeholder="https://facebook.com/example&#10;https://twitter.com/example"',
942
+ 'required' => true,
943
+ 'desc' => __('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', "wp-seo-structured-data-schema")
944
+ ),
945
+ 'review_body' => array(
946
+ 'title' => __('Review body', "wp-seo-structured-data-schema"),
947
+ 'type' => 'textarea',
948
+ 'required' => true,
949
+ 'desc' => __("The actual body of the review.", "wp-seo-structured-data-schema")
950
+ ),
951
+ 'review_datePublished' => array(
952
+ 'title' => __('Date of Published', "wp-seo-structured-data-schema"),
953
+ 'type' => 'text',
954
+ 'class' => 'kcseo-date',
955
+ 'desc' => __("Like this: 2015-12-25 4:00 PM", "wp-seo-structured-data-schema")
956
+ ),
957
+ 'review_ratingValue' => array(
958
+ 'title' => __('Rating value', "wp-seo-structured-data-schema"),
959
+ 'type' => 'number',
960
+ 'attr' => 'step="any"',
961
+ 'desc' => __("A numerical quality rating for the item.", "wp-seo-structured-data-schema")
962
+ ),
963
+ 'review_bestRating' => array(
964
+ 'title' => __('Best rating', "wp-seo-structured-data-schema"),
965
+ 'type' => 'number',
966
+ 'attr' => 'step="any"',
967
+ 'desc' => __("The highest value allowed in this rating system.", "wp-seo-structured-data-schema")
968
+ ),
969
+ 'review_worstRating' => array(
970
+ 'title' => __('Worst rating', "wp-seo-structured-data-schema"),
971
+ 'type' => 'number',
972
+ 'attr' => 'step="any"',
973
+ 'desc' => __("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.", "wp-seo-structured-data-schema")
974
  )
975
  )
976
  ),
1454
  }
1455
 
1456
  static function getLanguageList() {
1457
+ $language_list = array(
1458
+ "Akan",
1459
+ "Amharic",
1460
+ "Arabic",
1461
+ "Assamese",
1462
+ "Awadhi",
1463
+ "Azerbaijani",
1464
+ "Balochi",
1465
+ "Belarusian",
1466
+ "Bengali",
1467
+ "Bhojpuri",
1468
+ "Burmese",
1469
+ "Cantonese",
1470
+ "Cebuano",
1471
+ "Chewa",
1472
+ "Chhattisgarhi",
1473
+ "Chittagonian",
1474
+ "Czech",
1475
+ "Deccan",
1476
+ "Dhundhari",
1477
+ "Dutch",
1478
+ "English",
1479
+ "French",
1480
+ "Fula",
1481
+ "Gan",
1482
+ "German",
1483
+ "Greek",
1484
+ "Gujarati",
1485
+ "Haitian Creole",
1486
+ "Hakka",
1487
+ "Haryanvi",
1488
+ "Hausa",
1489
+ "Hiligaynon",
1490
+ "Hindi / Urdu",
1491
+ "Hmong",
1492
+ "Hungarian",
1493
+ "Igbo",
1494
+ "Ilokano",
1495
+ "Italian",
1496
+ "Japanese",
1497
+ "Javanese",
1498
+ "Jin",
1499
+ "Kannada",
1500
+ "Kazakh",
1501
+ "Khmer",
1502
+ "Kinyarwanda",
1503
+ "Kirundi",
1504
+ "Konkani",
1505
+ "Korean",
1506
+ "Kurdish",
1507
+ "Madurese",
1508
+ "Magahi",
1509
+ "Maithili",
1510
+ "Malagasy",
1511
+ "Malay/Indonesian",
1512
+ "Malayalam",
1513
+ "Mandarin",
1514
+ "Marathi",
1515
+ "Marwari",
1516
+ "Min Bei",
1517
+ "Min Dong",
1518
+ "Min Nan",
1519
+ "Mossi",
1520
+ "Nepali",
1521
+ "Oriya",
1522
+ "Oromo",
1523
+ "Pashto",
1524
+ "Persian",
1525
+ "Polish",
1526
+ "Portuguese",
1527
+ "Punjabi",
1528
+ "Quechua",
1529
+ "Romanian",
1530
+ "Russian",
1531
+ "Saraiki",
1532
+ "Serbo-Croatian",
1533
+ "Shona",
1534
+ "Sindhi",
1535
+ "Sinhalese",
1536
+ "Somali",
1537
+ "Spanish",
1538
+ "Sundanese",
1539
+ "Swahili",
1540
+ "Swedish",
1541
+ "Sylheti",
1542
+ "Tagalog",
1543
+ "Tamil",
1544
+ "Telugu",
1545
+ "Thai",
1546
+ "Turkish",
1547
+ "Ukrainian",
1548
+ "Uyghur",
1549
+ "Uzbek",
1550
+ "Vietnamese",
1551
+ "Wu",
1552
+ "Xhosa",
1553
+ "Xiang",
1554
+ "Yoruba",
1555
+ "Zulu",
1556
+ );
1557
 
1558
+ return apply_filters('kcseo_language_list', $language_list);
1559
  }
1560
 
1561
  static function getSocialList() {
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>
1582
+ <span>You can read more about Google\'s change here:<br><a target="_blank" href="https://webmasters.googleblog.com/2019/09/making-review-rich-results-more-helpful.html">https://webmasters.googleblog.com/2019/09/making-review-rich-results-more-helpful.html</a></span><br><br>
1583
+ <span style="font-weight: bold">If you are a user of our plugin prior to September 2019, you need to remove the review schema for this tab on all pages and post where you\'ve it for reviews and add back to the supported types (such as: book, course, event, movie, product, recipe, etc):</span><br><br>
1584
+ <span style="display: block;margin: 0 auto;max-width: 800px;">1. Simple uncheck the "enable" tab in this section<br>
1585
+ 2. Update the page or post to remove the review schema.<br>
1586
+ 3. Then re-add new review schema within the appropriet type tab(i.e. book, course, event, movie, product, recipe, etc)</span>
1587
+ <br>To review Google\'s documentation on <a target="_blank" href="https://developers.google.com/search/docs/data-types/review-snippet">https://developers.google.com/search/docs/data-types/review-snippet</a>';
1588
+
1589
+ return $html;
1590
+ }
1591
+
1592
  }
lib/init.php CHANGED
@@ -6,6 +6,23 @@ if ( ! class_exists( 'KcSeoWPSchema' ) ) {
6
  public $options;
7
  public $KcSeoPrefix;
8
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9
  function __construct() {
10
  $this->KcSeoPrefix = "_schema_";
11
  $this->options = array(
@@ -86,9 +103,6 @@ if ( ! class_exists( 'KcSeoWPSchema' ) ) {
86
  if ( $pageReturn AND $pageReturn <> 1 ) {
87
  return $pageReturn;
88
  }
89
- if ( @$html ) {
90
- return $html;
91
- }
92
  }
93
 
94
  /**
@@ -124,6 +138,10 @@ if ( ! class_exists( 'KcSeoWPSchema' ) ) {
124
 
125
  global $KcSeoWPSchema;
126
  if ( ! is_object( $KcSeoWPSchema ) ) {
127
- $KcSeoWPSchema = new KcseoWPSchema;
128
  }
129
  }
 
 
 
 
6
  public $options;
7
  public $KcSeoPrefix;
8
 
9
+ /**
10
+ * Store the singleton object.
11
+ */
12
+ private static $singleton = false;
13
+
14
+
15
+ /**
16
+ * Fetch an instance of the class.
17
+ */
18
+ public static function getInstance() {
19
+ if ( self::$singleton === false ) {
20
+ self::$singleton = new self();
21
+ }
22
+
23
+ return self::$singleton;
24
+ }
25
+
26
  function __construct() {
27
  $this->KcSeoPrefix = "_schema_";
28
  $this->options = array(
103
  if ( $pageReturn AND $pageReturn <> 1 ) {
104
  return $pageReturn;
105
  }
 
 
 
106
  }
107
 
108
  /**
138
 
139
  global $KcSeoWPSchema;
140
  if ( ! is_object( $KcSeoWPSchema ) ) {
141
+ $KcSeoWPSchema = kcseo();
142
  }
143
  }
144
+
145
+ function kcseo() {
146
+ return KcseoWPSchema::getInstance();
147
+ }
lib/models/KcSeoSchemaModel.php CHANGED
@@ -1,745 +1,857 @@
1
  <?php
2
 
3
- if ( ! class_exists( 'KcSeoSchemaModel' ) ):
4
- class KcSeoSchemaModel {
5
-
6
- function __construct() {
7
-
8
- }
9
-
10
- function schemaOutput( $schemaID, $metaData ) {
11
- $html = null;
12
-
13
- if ( $schemaID ) {
14
- global $KcSeoWPSchema;
15
- switch ( $schemaID ) {
16
- case "article":
17
- $article = array();
18
- $article["@context"] = "http://schema.org";
19
- $article["@type"] = "Article";
20
- if ( ! empty( $metaData['headline'] ) ) {
21
- $article["headline"] = $KcSeoWPSchema->sanitizeOutPut( $metaData['headline'] );
22
- }
23
- if ( ! empty( $metaData['mainEntityOfPage'] ) ) {
24
- $article["mainEntityOfPage"] = array(
25
- "@type" => "WebPage",
26
- "@id" => $KcSeoWPSchema->sanitizeOutPut( $metaData["mainEntityOfPage"] )
27
- );
28
- }
29
- if ( ! empty( $metaData['author'] ) ) {
30
- $article["author"] = array(
31
- "@type" => "Person",
32
- "name" => $KcSeoWPSchema->sanitizeOutPut( $metaData['author'] )
33
- );
34
- }
35
- if ( ! empty( $metaData['publisher'] ) ) {
36
- if ( ! empty( $metaData['publisherImage'] ) ) {
37
- $img = $KcSeoWPSchema->imageInfo( absint( $metaData['publisherImage'] ) );
38
- $plA = array(
39
- "@type" => "ImageObject",
40
- "url" => $KcSeoWPSchema->sanitizeOutPut( $img['url'], 'url' ),
41
- "height" => $img['height'],
42
- "width" => $img['width']
43
- );
44
- } else {
45
- $plA = array();
46
- }
47
- $article["publisher"] = array(
48
- "@type" => "Organization",
49
- "name" => $KcSeoWPSchema->sanitizeOutPut( $metaData['publisher'] ),
50
- "logo" => $plA
51
- );
52
- }
53
- if ( ! empty( $metaData['alternativeHeadline'] ) ) {
54
- $article["alternativeHeadline"] = $KcSeoWPSchema->sanitizeOutPut( $metaData['alternativeHeadline'] );
55
- }
56
- if ( ! empty( $metaData['image'] ) ) {
57
- $img = $KcSeoWPSchema->imageInfo( absint( $metaData['image'] ) );
58
- $article["image"] = array(
59
- "@type" => "ImageObject",
60
- "url" => $KcSeoWPSchema->sanitizeOutPut( $img['url'], 'url' ),
61
- "height" => $img['height'],
62
- "width" => $img['width']
63
- );
64
- }
65
- if ( ! empty( $metaData['datePublished'] ) ) {
66
- $article["datePublished"] = $KcSeoWPSchema->sanitizeOutPut( $metaData['datePublished'] );
67
- }
68
- if ( ! empty( $metaData['dateModified'] ) ) {
69
- $article["dateModified"] = $KcSeoWPSchema->sanitizeOutPut( $metaData['dateModified'] );
70
- }
71
- if ( ! empty( $metaData['description'] ) ) {
72
- $article["description"] = $KcSeoWPSchema->sanitizeOutPut( $metaData['description'],
73
- 'textarea' );
74
- }
75
- if ( ! empty( $metaData['articleBody'] ) ) {
76
- $article["articleBody"] = $KcSeoWPSchema->sanitizeOutPut( $metaData['articleBody'],
77
- 'textarea' );
78
- }
79
- $html .= $this->get_jsonEncode( $article );
80
- break;
81
-
82
- case "news_article":
83
- $newsArticle = array();
84
- $newsArticle["@context"] = "http://schema.org";
85
- $newsArticle["@type"] = "NewsArticle";
86
- if ( ! empty( $metaData['headline'] ) ) {
87
- $newsArticle["headline"] = $KcSeoWPSchema->sanitizeOutPut( $metaData['headline'] );
88
- }
89
- if ( ! empty( $metaData['mainEntityOfPage'] ) ) {
90
- $newsArticle["mainEntityOfPage"] = array(
91
- "@type" => "WebPage",
92
- "@id" => $KcSeoWPSchema->sanitizeOutPut( $metaData["mainEntityOfPage"] )
93
- );
94
- }
95
- if ( ! empty( $metaData['author'] ) ) {
96
- $newsArticle["author"] = array(
97
- "@type" => "Person",
98
- "name" => $KcSeoWPSchema->sanitizeOutPut( $metaData['author'] )
99
- );
100
- }
101
- if ( ! empty( $metaData['image'] ) ) {
102
- $img = $KcSeoWPSchema->imageInfo( absint( $metaData['image'] ) );
103
- $newsArticle["image"] = array(
104
- "@type" => "ImageObject",
105
- "url" => $KcSeoWPSchema->sanitizeOutPut( $img['url'], 'url' ),
106
- "height" => $img['height'],
107
- "width" => $img['width']
108
- );
109
- }
110
- if ( ! empty( $metaData['datePublished'] ) ) {
111
- $newsArticle["datePublished"] = $KcSeoWPSchema->sanitizeOutPut( $metaData['datePublished'] );
112
- }
113
- if ( ! empty( $metaData['dateModified'] ) ) {
114
- $newsArticle["dateModified"] = $KcSeoWPSchema->sanitizeOutPut( $metaData['dateModified'] );
115
- }
116
- if ( ! empty( $metaData['publisher'] ) ) {
117
- if ( ! empty( $metaData['publisherImage'] ) ) {
118
- $img = $KcSeoWPSchema->imageInfo( absint( $metaData['publisherImage'] ) );
119
- $plA = array(
120
- "@type" => "ImageObject",
121
- "url" => $KcSeoWPSchema->sanitizeOutPut( $img['url'], 'url' ),
122
- "height" => $img['height'],
123
- "width" => $img['width']
124
- );
125
- } else {
126
- $plA = array();
127
- }
128
- $newsArticle["publisher"] = array(
129
- "@type" => "Organization",
130
- "name" => $KcSeoWPSchema->sanitizeOutPut( $metaData['publisher'] ),
131
- "logo" => $plA
132
- );
133
- }
134
- if ( ! empty( $metaData['description'] ) ) {
135
- $newsArticle["description"] = $KcSeoWPSchema->sanitizeOutPut( $metaData['description'],
136
- 'textarea' );
137
- }
138
- if ( ! empty( $metaData['articleBody'] ) ) {
139
- $newsArticle["articleBody"] = $KcSeoWPSchema->sanitizeOutPut( $metaData['articleBody'],
140
- 'textarea' );
141
- }
142
- $html .= $this->get_jsonEncode( $newsArticle );
143
- break;
144
-
145
- case "blog_posting":
146
- $blogPosting = array();
147
- $blogPosting["@context"] = "http://schema.org";
148
- $blogPosting["@type"] = "BlogPosting";
149
- if ( ! empty( $metaData['headline'] ) ) {
150
- $blogPosting["headline"] = $KcSeoWPSchema->sanitizeOutPut( $metaData['headline'] );
151
- }
152
- if ( ! empty( $metaData['mainEntityOfPage'] ) ) {
153
- $blogPosting["mainEntityOfPage"] = array(
154
- "@type" => "WebPage",
155
- "@id" => $KcSeoWPSchema->sanitizeOutPut( $metaData["mainEntityOfPage"] )
156
- );
157
- }
158
- if ( ! empty( $metaData['author'] ) ) {
159
- $blogPosting["author"] = array(
160
- "@type" => "Person",
161
- "name" => $KcSeoWPSchema->sanitizeOutPut( $metaData['author'] )
162
- );
163
- }
164
- if ( ! empty( $metaData['image'] ) ) {
165
- $img = $KcSeoWPSchema->imageInfo( absint( $metaData['image'] ) );
166
- $blogPosting["image"] = array(
167
- "@type" => "ImageObject",
168
- "url" => $KcSeoWPSchema->sanitizeOutPut( $img['url'], 'url' ),
169
- "height" => $img['height'],
170
- "width" => $img['width']
171
- );
172
- }
173
- if ( ! empty( $metaData['datePublished'] ) ) {
174
- $blogPosting["datePublished"] = $KcSeoWPSchema->sanitizeOutPut( $metaData['datePublished'] );
175
- }
176
- if ( ! empty( $metaData['dateModified'] ) ) {
177
- $blogPosting["dateModified"] = $KcSeoWPSchema->sanitizeOutPut( $metaData['dateModified'] );
178
- }
179
- if ( ! empty( $metaData['publisher'] ) ) {
180
- if ( ! empty( $metaData['publisherImage'] ) ) {
181
- $img = $KcSeoWPSchema->imageInfo( absint( $metaData['publisherImage'] ) );
182
- $plA = array(
183
- "@type" => "ImageObject",
184
- "url" => $KcSeoWPSchema->sanitizeOutPut( $img['url'], 'url' ),
185
- "height" => $img['height'],
186
- "width" => $img['width']
187
- );
188
- } else {
189
- $plA = array();
190
- }
191
- $blogPosting["publisher"] = array(
192
- "@type" => "Organization",
193
- "name" => $KcSeoWPSchema->sanitizeOutPut( $metaData['publisher'] ),
194
- "logo" => $plA
195
- );
196
- }
197
- if ( ! empty( $metaData['description'] ) ) {
198
- $blogPosting["description"] = $KcSeoWPSchema->sanitizeOutPut( $metaData['description'],
199
- 'textarea' );
200
- }
201
- if ( ! empty( $metaData['articleBody'] ) ) {
202
- $blogPosting["articleBody"] = $KcSeoWPSchema->sanitizeOutPut( $metaData['articleBody'],
203
- 'textarea' );
204
- }
205
- $html .= $this->get_jsonEncode( $blogPosting );
206
- break;
207
-
208
- case 'event':
209
- $event = array();
210
- $event["@context"] = "http://schema.org";
211
- $event["@type"] = "Event";
212
- if ( ! empty( $metaData['name'] ) ) {
213
- $event["name"] = $KcSeoWPSchema->sanitizeOutPut( $metaData['name'] );
214
- }
215
- if ( ! empty( $metaData['startDate'] ) ) {
216
- $event["startDate"] = $KcSeoWPSchema->sanitizeOutPut( $metaData['startDate'] );
217
- }
218
- if ( ! empty( $metaData['endDate'] ) ) {
219
- $event["endDate"] = $KcSeoWPSchema->sanitizeOutPut( $metaData['endDate'] );
220
- }
221
- if ( ! empty( $metaData['description'] ) ) {
222
- $event["description"] = $KcSeoWPSchema->sanitizeOutPut( $metaData['description'],
223
- 'textarea' );
224
- }
225
- if ( ! empty( $metaData['performerName'] ) ) {
226
- $event["performer"] = array(
227
- "@type" => "Person",
228
- "name" => $KcSeoWPSchema->sanitizeOutPut( $metaData['performerName'] )
229
- );
230
- }
231
- if ( ! empty( $metaData['image'] ) ) {
232
- $event["image"] = $KcSeoWPSchema->sanitizeOutPut( $metaData['image'], 'url' );
233
- }
234
- if ( ! empty( $metaData['locationName'] ) ) {
235
- $event["location"] = array(
236
- "@type" => "Place",
237
- "name" => $KcSeoWPSchema->sanitizeOutPut( $metaData['locationName'] ),
238
- "address" => $KcSeoWPSchema->sanitizeOutPut( $metaData['locationAddress'] )
239
- );
240
- }
241
- if ( ! empty( $metaData['price'] ) ) {
242
- $event["offers"] = array(
243
- "@type" => "Offer",
244
- "price" => $KcSeoWPSchema->sanitizeOutPut( $metaData['price'] )
245
- );
246
- if ( ! empty( $metaData['priceCurrency'] ) ) {
247
- $event["offers"]['priceCurrency'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['priceCurrency'] );
248
- }
249
- if ( ! empty( $metaData['url'] ) ) {
250
- $event["offers"]['url'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['url'], 'url' );
251
- }
252
- if ( ! empty( $metaData['availability'] ) ) {
253
- $event["offers"]['availability'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['availability'] );
254
- }
255
- if ( ! empty( $metaData['validFrom'] ) ) {
256
- $event["offers"]['validFrom'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['validFrom'] );
257
- }
258
- }
259
- if ( ! empty( $metaData['url'] ) ) {
260
- $event["url"] = $KcSeoWPSchema->sanitizeOutPut( $metaData['url'], 'url' );
261
- }
262
- $html .= $this->get_jsonEncode( $event );
263
- break;
264
-
265
- case 'product':
266
- $product = array();
267
- $product["@context"] = "http://schema.org";
268
- $product["@type"] = "Product";
269
- if ( ! empty( $metaData['name'] ) ) {
270
- $product["name"] = $KcSeoWPSchema->sanitizeOutPut( $metaData['name'] );
271
- }
272
- if ( ! empty( $metaData['image'] ) ) {
273
- $img = $KcSeoWPSchema->imageInfo( absint( $metaData['image'] ) );
274
- $product["image"] = $KcSeoWPSchema->sanitizeOutPut( $img['url'], 'url' );
275
- }
276
- if ( ! empty( $metaData['description'] ) ) {
277
- $product["description"] = $KcSeoWPSchema->sanitizeOutPut( $metaData['description'] );
278
- }
279
- /* product identifier */
280
- if ( ! empty( $metaData['sku'] ) ) {
281
- $product["sku"] = $KcSeoWPSchema->sanitizeOutPut( $metaData['sku'] );
282
- }
283
- if ( ! empty( $metaData['brand'] ) ) {
284
- $product["brand"] = $KcSeoWPSchema->sanitizeOutPut( $metaData['brand'] );
285
- }
286
- if ( ! empty( $metaData['identifier_type'] ) && ! empty( $metaData['identifier'] ) ) {
287
- $product[ $metaData['identifier_type'] ] = $KcSeoWPSchema->sanitizeOutPut( $metaData['identifier'] );
288
- }
289
- if ( ! empty( $metaData['ratingValue'] ) ) {
290
- $product["aggregateRating"] = array(
291
- "@type" => "AggregateRating",
292
- "ratingValue" => ! empty( $metaData['ratingValue'] ) ? $KcSeoWPSchema->sanitizeOutPut( $metaData['ratingValue'] ) : null,
293
- "reviewCount" => ! empty( $metaData['reviewCount'] ) ? $KcSeoWPSchema->sanitizeOutPut( $metaData['reviewCount'] ) : null
294
- );
295
- }
296
- if ( ! empty( $metaData['reviewRatingValue'] ) || ! empty( $metaData['reviewBestRating'] ) || ! empty( $metaData['reviewWorstRating'] ) ) {
297
- $product["review"] = array(
298
- "@type" => "Review",
299
- "reviewRating" => array(
300
- "@type" => "Rating",
301
- "ratingValue" => ! empty( $metaData['reviewRatingValue'] ) ? $KcSeoWPSchema->sanitizeOutPut( $metaData['reviewRatingValue'] ) : null,
302
- "bestRating" => ! empty( $metaData['reviewBestRating'] ) ? $KcSeoWPSchema->sanitizeOutPut( $metaData['reviewBestRating'] ) : null,
303
- "worstRating" => ! empty( $metaData['reviewWorstRating'] ) ? $KcSeoWPSchema->sanitizeOutPut( $metaData['reviewWorstRating'] ) : null
304
- ),
305
- "author" => array(
306
- "@type" => "Person",
307
- "name" => ! empty( $metaData['reviewAuthor'] ) ? $KcSeoWPSchema->sanitizeOutPut( $metaData['reviewAuthor'] ) : null
308
- )
309
- );
310
- }
311
- if ( ! empty( $metaData['price'] ) ) {
312
- $product["offers"] = array(
313
- "@type" => "Offer",
314
- "price" => $KcSeoWPSchema->sanitizeOutPut( $metaData['price'] ),
315
- "priceValidUntil" => $KcSeoWPSchema->sanitizeOutPut( $metaData['priceValidUntil'] ),
316
- "priceCurrency" => ! empty( $metaData['priceCurrency'] ) ? $KcSeoWPSchema->sanitizeOutPut( $metaData['priceCurrency'] ) : null,
317
- "itemCondition" => ! empty( $metaData['itemCondition'] ) ? $KcSeoWPSchema->sanitizeOutPut( $metaData['itemCondition'] ) : null,
318
- "availability" => ! empty( $metaData['availability'] ) ? $KcSeoWPSchema->sanitizeOutPut( $metaData['availability'] ) : null,
319
- "url" => ! empty( $metaData['url'] ) ? $KcSeoWPSchema->sanitizeOutPut( $metaData['url'] ) : null
320
- );
321
- }
322
- $html .= $this->get_jsonEncode( $product );
323
- break;
324
-
325
- case 'video':
326
- $video = array();
327
- $video["@context"] = "http://schema.org";
328
- $video["@type"] = "VideoObject";
329
- if ( ! empty( $metaData['name'] ) ) {
330
- $video["name"] = $KcSeoWPSchema->sanitizeOutPut( $metaData['name'] );
331
- }
332
- if ( ! empty( $metaData['description'] ) ) {
333
- $video["description"] = $KcSeoWPSchema->sanitizeOutPut( $metaData['description'],
334
- 'textarea' );
335
- }
336
- if ( ! empty( $metaData['description'] ) ) {
337
- $video["description"] = $KcSeoWPSchema->sanitizeOutPut( $metaData['description'] );
338
- }
339
- if ( ! empty( $metaData['thumbnailUrl'] ) ) {
340
- $video["thumbnailUrl"] = $KcSeoWPSchema->sanitizeOutPut( $metaData['thumbnailUrl'], 'url' );
341
- }
342
- if ( ! empty( $metaData['uploadDate'] ) ) {
343
- $video["uploadDate"] = $KcSeoWPSchema->sanitizeOutPut( $metaData['uploadDate'] );
344
- }
345
- if ( ! empty( $metaData['duration'] ) ) {
346
- $video["duration"] = $KcSeoWPSchema->sanitizeOutPut( $metaData['duration'] );
347
- }
348
- if ( ! empty( $metaData['contentUrl'] ) ) {
349
- $video["contentUrl"] = $KcSeoWPSchema->sanitizeOutPut( $metaData['contentUrl'], 'url' );
350
- }
351
- if ( ! empty( $metaData['interactionCount'] ) ) {
352
- $video["interactionCount"] = $KcSeoWPSchema->sanitizeOutPut( $metaData['interactionCount'] );
353
- }
354
- if ( ! empty( $metaData['expires'] ) ) {
355
- $video["expires"] = $KcSeoWPSchema->sanitizeOutPut( $metaData['expires'] );
356
- }
357
- $html .= $this->get_jsonEncode( $video );
358
- break;
359
-
360
- case 'service':
361
- $service = array();
362
- $service["@context"] = "http://schema.org";
363
- $service["@type"] = "Service";
364
- if ( ! empty( $metaData['name'] ) ) {
365
- $service["name"] = $KcSeoWPSchema->sanitizeOutPut( $metaData['name'] );
366
- }
367
- if ( ! empty( $metaData['serviceType'] ) ) {
368
- $service["serviceType"] = $KcSeoWPSchema->sanitizeOutPut( $metaData['serviceType'] );
369
- }
370
- /*
371
- if ( ! empty( $metaData['locationName'] ) ) {
372
- $service["location"] = array(
373
- "@type" => "Place",
374
- "name" => $KcSeoWPSchema->sanitizeOutPut( $metaData['locationName'] ),
375
- "address" => $KcSeoWPSchema->sanitizeOutPut( $metaData['locationAddress'] )
376
- );
377
- }*/
378
- if ( ! empty( $metaData['award'] ) ) {
379
- $service["award"] = $KcSeoWPSchema->sanitizeOutPut( $metaData['award'] );
380
- }
381
- if ( ! empty( $metaData['category'] ) ) {
382
- $service["category"] = $KcSeoWPSchema->sanitizeOutPut( $metaData['category'] );
383
- }
384
- if ( ! empty( $metaData['providerMobility'] ) ) {
385
- $service["providerMobility"] = $KcSeoWPSchema->sanitizeOutPut( $metaData['providerMobility'] );
386
- }
387
- if ( ! empty( $metaData['additionalType'] ) ) {
388
- $service["additionalType"] = $KcSeoWPSchema->sanitizeOutPut( $metaData['additionalType'] );
389
- }
390
- if ( ! empty( $metaData['alternateName'] ) ) {
391
- $service["alternateName"] = $KcSeoWPSchema->sanitizeOutPut( $metaData['alternateName'] );
392
- }
393
- if ( ! empty( $metaData['image'] ) ) {
394
- $service["image"] = $KcSeoWPSchema->sanitizeOutPut( $metaData['image'] );
395
- }
396
- if ( ! empty( $metaData['mainEntityOfPage'] ) ) {
397
- $service["mainEntityOfPage"] = $KcSeoWPSchema->sanitizeOutPut( $metaData['mainEntityOfPage'] );
398
- }
399
- if ( ! empty( $metaData['sameAs'] ) ) {
400
- $service["sameAs"] = $KcSeoWPSchema->sanitizeOutPut( $metaData['sameAs'] );
401
- }
402
- if ( ! empty( $metaData['url'] ) ) {
403
- $service["url"] = $KcSeoWPSchema->sanitizeOutPut( $metaData['url'], 'url' );
404
- }
405
- $html .= $this->get_jsonEncode( $service );
406
- break;
407
-
408
- case 'review':
409
- $review = array();
410
- $review["@context"] = "http://schema.org";
411
- $review["@type"] = "Review";
412
- if ( ! empty( $metaData['itemName'] ) ) {
413
- $review["itemReviewed"] = array(
414
- "@type" => "Thing",
415
- "name" => $KcSeoWPSchema->sanitizeOutPut( $metaData['itemName'] )
416
- );
417
- }
418
- if ( ! empty( $metaData['ratingValue'] ) ) {
419
- $review["reviewRating"] = array(
420
- "@type" => "Rating",
421
- "ratingValue" => $KcSeoWPSchema->sanitizeOutPut( $metaData['ratingValue'] ),
422
- "bestRating" => $KcSeoWPSchema->sanitizeOutPut( $metaData['bestRating'] ),
423
- "worstRating" => $KcSeoWPSchema->sanitizeOutPut( $metaData['worstRating'] )
424
- );
425
- }
426
- if ( ! empty( $metaData['name'] ) ) {
427
- $review["name"] = $KcSeoWPSchema->sanitizeOutPut( $metaData['name'] );
428
- }
429
- if ( ! empty( $metaData['author'] ) ) {
430
- $review["author"] = array(
431
- "@type" => "Person",
432
- "name" => $KcSeoWPSchema->sanitizeOutPut( $metaData['author'] )
433
- );
434
- }
435
- if ( ! empty( $metaData['reviewBody'] ) ) {
436
- $review["reviewBody"] = $KcSeoWPSchema->sanitizeOutPut( $metaData['reviewBody'] );
437
- }
438
- if ( ! empty( $metaData['datePublished'] ) ) {
439
- $review["datePublished"] = $KcSeoWPSchema->sanitizeOutPut( $metaData['datePublished'] );
440
- }
441
- if ( ! empty( $metaData['publisher'] ) ) {
442
- $review["publisher"] = array(
443
- "@type" => "Organization",
444
- "name" => $KcSeoWPSchema->sanitizeOutPut( $metaData['publisher'] )
445
- );
446
- }
447
- $html .= $this->get_jsonEncode( $review );
448
- break;
449
- case 'aggregate_rating':
450
- $aRating = array();
451
- $aRating["@context"] = "http://schema.org";
452
- $aRating["@type"] = ! empty( $metaData['schema_type'] ) ? $metaData['schema_type'] : "LocalBusiness";
453
- if ( ! empty( $metaData['name'] ) ) {
454
- $aRating["name"] = $KcSeoWPSchema->sanitizeOutPut( $metaData['name'] );
455
- }
456
- if ( ! empty( $metaData['description'] ) ) {
457
- $aRating["description"] = $KcSeoWPSchema->sanitizeOutPut( $metaData['description'],
458
- 'textarea' );
459
- }
460
- if ( $aRating["@type"] != "Organization" ) {
461
- if ( ! empty( $metaData['image'] ) ) {
462
- $img = $KcSeoWPSchema->imageInfo( absint( $metaData['image'] ) );
463
- $aRating["image"] = array(
464
- "@type" => "ImageObject",
465
- "url" => $KcSeoWPSchema->sanitizeOutPut( $img['url'], 'url' ),
466
- "height" => $img['height'],
467
- "width" => $img['width']
468
- );
469
- }
470
- if ( ! empty( $metaData['priceRange'] ) ) {
471
- $aRating["priceRange"] = $KcSeoWPSchema->sanitizeOutPut( $metaData['priceRange'] );
472
- }
473
- if ( ! empty( $metaData['telephone'] ) ) {
474
- $aRating["telephone"] = $KcSeoWPSchema->sanitizeOutPut( $metaData['telephone'] );
475
- }
476
-
477
- if ( ! empty( $metaData['address'] ) ) {
478
- $aRating["address"] = $KcSeoWPSchema->sanitizeOutPut( $metaData['address'] );
479
- }
480
- }
481
-
482
- if ( ! empty( $metaData['ratingValue'] ) ) {
483
- $rValue = array();
484
- $rValue["@type"] = "AggregateRating";
485
- $rValue["ratingValue"] = $KcSeoWPSchema->sanitizeOutPut( $metaData['ratingValue'] );
486
- if ( ! empty( $metaData['bestRating'] ) ) {
487
- $rValue["bestRating"] = $KcSeoWPSchema->sanitizeOutPut( $metaData['bestRating'] );
488
- }
489
- if ( ! empty( $metaData['worstRating'] ) ) {
490
- $rValue["worstRating"] = $KcSeoWPSchema->sanitizeOutPut( $metaData['worstRating'] );
491
- }
492
- if ( ! empty( $metaData['ratingCount'] ) ) {
493
- $rValue["ratingCount"] = $KcSeoWPSchema->sanitizeOutPut( $metaData['ratingCount'] );
494
- }
495
-
496
- $aRating["aggregateRating"] = $rValue;
497
- }
498
- $html .= $this->get_jsonEncode( $aRating );
499
- break;
500
-
501
- case 'restaurant':
502
- $restaurant = array();
503
- $restaurant["@context"] = "http://schema.org";
504
- $restaurant["@type"] = "Restaurant";
505
- if ( ! empty( $metaData['name'] ) ) {
506
- $restaurant["name"] = $KcSeoWPSchema->sanitizeOutPut( $metaData['name'] );
507
- }
508
- if ( ! empty( $metaData['description'] ) ) {
509
- $restaurant["description"] = $KcSeoWPSchema->sanitizeOutPut( $metaData['description'],
510
- 'textarea' );
511
- }
512
- if ( ! empty( $metaData['openingHours'] ) ) {
513
- $restaurant["openingHours"] = $KcSeoWPSchema->sanitizeOutPut( $metaData['openingHours'],
514
- 'textarea' );
515
- }
516
- if ( ! empty( $metaData['telephone'] ) ) {
517
- $restaurant["telephone"] = $KcSeoWPSchema->sanitizeOutPut( $metaData['telephone'] );
518
- }
519
- if ( ! empty( $metaData['menu'] ) ) {
520
- $restaurant["menu"] = $KcSeoWPSchema->sanitizeOutPut( $metaData['menu'], 'url' );
521
- }
522
- if ( ! empty( $metaData['image'] ) ) {
523
- $img = $KcSeoWPSchema->imageInfo( absint( $metaData['image'] ) );
524
- $restaurant["image"] = $KcSeoWPSchema->sanitizeOutPut( $img['url'], 'url' );
525
- }
526
- if ( ! empty( $metaData['address'] ) ) {
527
- $restaurant["address"] = $KcSeoWPSchema->sanitizeOutPut( $metaData['address'], 'textarea' );
528
- }
529
- if ( ! empty( $metaData['priceRange'] ) ) {
530
- $restaurant["priceRange"] = $KcSeoWPSchema->sanitizeOutPut( $metaData['priceRange'] );
531
- }
532
- if ( ! empty( $metaData['servesCuisine'] ) ) {
533
- $restaurant["servesCuisine"] = $KcSeoWPSchema->sanitizeOutPut( $metaData['servesCuisine'] );
534
- }
535
- $html .= $this->get_jsonEncode( $restaurant );
536
- break;
537
-
538
- case 'localBusiness':
539
- $localBusiness = array();
540
- $localBusiness["@context"] = "http://schema.org";
541
- $localBusiness["@type"] = "LocalBusiness";
542
- if ( ! empty( $metaData['name'] ) ) {
543
- $localBusiness["name"] = $KcSeoWPSchema->sanitizeOutPut( $metaData['name'] );
544
- }
545
- if ( ! empty( $metaData['description'] ) ) {
546
- $localBusiness["description"] = $KcSeoWPSchema->sanitizeOutPut( $metaData['description'],
547
- 'textarea' );
548
- }
549
- if ( ! empty( $metaData['image'] ) ) {
550
- $img = $KcSeoWPSchema->imageInfo( absint( $metaData['image'] ) );
551
- $localBusiness["image"] = $KcSeoWPSchema->sanitizeOutPut( $img['url'], 'url' );
552
- }
553
- if ( ! empty( $metaData['priceRange'] ) ) {
554
- $localBusiness["priceRange"] = $KcSeoWPSchema->sanitizeOutPut( $metaData['priceRange'] );
555
- }
556
- if ( ! empty( $metaData['addressLocality'] ) || ! empty( $metaData['addressRegion'] )
557
- || ! empty( $metaData['postalCode'] ) || ! empty( $metaData['streetAddress'] ) ) {
558
- $localBusiness["address"] = array(
559
- "@type" => "PostalAddress",
560
- "addressLocality" => $KcSeoWPSchema->sanitizeOutPut( $metaData['addressLocality'] ),
561
- "addressRegion" => $KcSeoWPSchema->sanitizeOutPut( $metaData['addressRegion'] ),
562
- "postalCode" => $KcSeoWPSchema->sanitizeOutPut( $metaData['postalCode'] ),
563
- "streetAddress" => $KcSeoWPSchema->sanitizeOutPut( $metaData['streetAddress'] )
564
- );
565
- }
566
-
567
- if ( ! empty( $metaData['telephone'] ) ) {
568
- $localBusiness["telephone"] = $KcSeoWPSchema->sanitizeOutPut( $metaData['telephone'] );
569
- }
570
- $html .= $this->get_jsonEncode( $localBusiness );
571
- break;
572
-
573
- default:
574
- break;
575
- }
576
-
577
- }
578
-
579
- return $html;
580
- }
581
-
582
- function get_field( $data ) {
583
- $html = null;
584
- global $KcSeoWPSchema;
585
- $id = $data['id'];
586
- $name = $data['name'];
587
- $value = $data['value'];
588
- $attr = ! empty( $data['attr'] ) ? $data['attr'] : null;
589
-
590
- $class = isset( $data['class'] ) ? ( $data['class'] ? $data['class'] : null ) : null;
591
- $require = ( isset( $data['required'] ) ? ( $data['required'] ? sprintf( '<span data-kcseo-tooltip="%s" class="required">*</span>', __( "Required", "wp-seo-structured-data-schema-pro" ) ) : null ) : null );
592
- $recommended = ( isset( $data['recommended'] ) ? ( $data['recommended'] ? sprintf( '<span data-kcseo-tooltip="%s" class="recommended">*</span>', __( "Recommended", "wp-seo-structured-data-schema-pro" ) ) : null ) : null );
593
- $title = ( isset( $data['title'] ) ? ( $data['title'] ? $data['title'] : null ) : null );
594
- $desc = ( isset( $data['desc'] ) ? ( $data['desc'] ? $data['desc'] : null ) : null );
595
- $holderClass = ( ! empty( $data['holderClass'] ) ? $data['holderClass'] : null );
596
- $html .= "<div class='field-container {$holderClass}' id='" . $id . '-container' . "'>";
597
- $html .= "<label class='field-label' for='{$id}'>{$title}{$require}{$recommended}</label>";
598
- $html .= "<div class='field-content' id='" . $id . '-content' . "'>";
599
- switch ( $data['type'] ) {
600
- case 'checkbox':
601
- $checked = ( $value ? "checked" : null );
602
- $html .= "<div class='kSeo-checkbox-wrapper'>";
603
- $html .= "<label for='{$id}'><input type='checkbox' id='{$id}' class='{$class}' name='{$name}' {$checked} value='1' /> Enable</label>";
604
- $html .= "</div>";
605
- break;
606
-
607
- case 'text':
608
- $html .= "<input type='text' id='{$id}' class='{$class}' name='{$name}' value='" . esc_html( $value ) . "' />";
609
- break;
610
-
611
- case 'number':
612
- $html .= "<input type='number' {$attr} id='{$id}' class='{$class}' name='{$name}' value='" . esc_attr( $value ) . "' />";
613
- break;
614
- case 'textarea':
615
- $html .= "<textarea id='{$id}' class='{$class}' name='{$name}' >" . wp_kses( $value,
616
- array() ) . "</textarea>";
617
- break;
618
-
619
- case 'image':
620
- $html .= '<div class="kSeo-image">';
621
- $ImageId = ! empty( $value ) ? absint( $value ) : 0;
622
- $image = $ingInfo = null;
623
- if ( $ImageId ) {
624
- $image = wp_get_attachment_image( $ImageId, "thumbnail" );
625
- $imgData = $KcSeoWPSchema->imageInfo( $ImageId );
626
- $ingInfo .= "<span><strong>URL: </strong>{$imgData['url']}</span>";
627
- $ingInfo .= "<span><strong>Width: </strong>{$imgData['width']}px</span>";
628
- $ingInfo .= "<span><strong>Height: </strong>{$imgData['height']}px</span>";
629
- }
630
- $html .= "<div class='kSeo-image-wrapper'>";
631
- $html .= '<span class="kSeoImgAdd"><span class="dashicons dashicons-plus-alt"></span></span>';
632
- $html .= '<span class="kSeoImgRemove ' . ( $image ? null : "kSeo-hidden" ) . '"><span class="dashicons dashicons-trash"></span></span>';
633
- $html .= '<div class="kSeo-image-preview">' . $image . '</div>';
634
- $html .= "<input type='hidden' name='{$name}' value='" . absint( $ImageId ) . "' />";
635
- $html .= "</div>";
636
- $html .= "<div class='image-info'>{$ingInfo}</div>";
637
- $html .= '</div>';
638
- break;
639
- case 'select':
640
- $html .= "<select name='{$name}' class='select2 {$class}' id='{$id}'>";
641
- if ( ! empty( $data['empty'] ) ) {
642
- $html .= "<option value=''>{$data['empty']}</option>";
643
- }
644
- if ( ! empty( $data['options'] ) && is_array( $data['options'] ) ) {
645
- if ( $this->isAssoc( $data['options'] ) ) {
646
- foreach ( $data['options'] as $optKey => $optValue ) {
647
- $slt = ( $optKey == $value ? "selected" : null );
648
- $html .= "<option value='" . esc_attr( $optKey ) . "' {$slt}>" . esc_html( $optValue ) . "</option>";
649
- }
650
- } else {
651
- foreach ( $data['options'] as $optValue ) {
652
- $slt = ( $optValue == $value ? "selected" : null );
653
- $html .= "<option value='" . esc_attr( $optValue ) . "' {$slt}>" . esc_html( $optValue ) . "</option>";
654
- }
655
- }
656
- }
657
- $html .= "</select>";
658
- break;
659
- case 'schema_type':
660
- $html .= "<select name='{$name}' class='select2 {$class}' id='{$id}'>";
661
- if ( ! empty( $data['empty'] ) ) {
662
- $html .= "<option value=''>{$data['empty']}</option>";
663
- }
664
-
665
- foreach ( $data['options'] as $key => $site ) {
666
- if ( is_array( $site ) ) {
667
- $slt = ( $key == $value ? "selected" : null );
668
- $html .= "<option value='$key' $slt>&nbsp;&nbsp;&nbsp;$key</option>";
669
- foreach ( $site as $inKey => $inSite ) {
670
- if ( is_array( $inSite ) ) {
671
- $slt = ( $inKey == $value ? "selected" : null );
672
- $html .= "<option value='$inKey' $slt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$inKey</option>";
673
- foreach ( $inSite as $inInKey => $inInSite ) {
674
- if ( is_array( $inInSite ) ) {
675
- $slt = ( $inInKey == $value ? "selected" : null );
676
- $html .= "<option value='$inInKey' $slt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$inInKey</option>";
677
- foreach ( $inInSite as $iSite ) {
678
- $slt = ( $iSite == $value ? "selected" : null );
679
- $html .= "<option value='$iSite' $slt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$iSite</option>";
680
- }
681
- } else {
682
- $slt = ( $inInSite == $value ? "selected" : null );
683
- $html .= "<option value='$inInSite' $slt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$inInSite</option>";
684
- }
685
- }
686
- } else {
687
- $slt = ( $inSite == $value ? "selected" : null );
688
- $html .= "<option value='$inSite' $slt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$inSite</option>";
689
- }
690
- }
691
- } else {
692
- $slt = ( $site == $value ? "selected" : null );
693
- $html .= "<option value='$site' $slt>$site</option>";
694
- }
695
- }
696
- $html .= "</select>";
697
- break;
698
- default:
699
- $html .= "<input id='{$id}' type='{$data['type']}' value='" . esc_attr( $value ) . "' name='$name' />";
700
- break;
701
-
702
- }
703
- $html .= "<p class='description'>{$desc}</p>";
704
- $html .= "</div>";
705
- $html .= "</div>";
706
-
707
- return $html;
708
- }
709
-
710
- function get_jsonEncode( $data = array() ) {
711
- $html = null;
712
- /** @var TYPE_NAME $data */
713
- if ( ! empty( $data ) && is_array( $data ) ) {
714
- $html .= '<script type="application/ld+json">' . json_encode( $data,
715
- JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES ) . '</script>';
716
- }
717
-
718
- return $html;
719
- }
720
-
721
- function imgInfo( $url = null ) {
722
- $img = array();
723
- if ( $url ) {
724
- $imgA = @getimagesize( $url );
725
- if ( is_array( $imgA ) && ! empty( $imgA ) ) {
726
- $img['width'] = $imgA[0];
727
- $img['height'] = $imgA[1];
728
- } else {
729
- $img['width'] = 0;
730
- $img['height'] = 0;
731
- }
732
- }
733
-
734
- return $img;
735
- }
736
-
737
- function isAssoc( $array ) {
738
- $keys = array_keys( $array );
739
-
740
- return $keys !== array_keys( $keys );
741
- }
742
-
743
-
744
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
745
  endif;
1
  <?php
2
 
3
+ if (!class_exists('KcSeoSchemaModel')):
4
+ class KcSeoSchemaModel
5
+ {
6
+
7
+ function __construct() {
8
+
9
+ }
10
+
11
+ function schemaOutput($schemaID, $metaData) {
12
+ $html = null;
13
+
14
+ if ($schemaID) {
15
+ global $KcSeoWPSchema;
16
+ switch ($schemaID) {
17
+ case "article":
18
+ $article = array(
19
+ "@context" => "http://schema.org",
20
+ "@type" => "Article"
21
+ );
22
+ if (!empty($metaData['headline'])) {
23
+ $article["headline"] = $KcSeoWPSchema->sanitizeOutPut($metaData['headline']);
24
+ }
25
+ if (!empty($metaData['mainEntityOfPage'])) {
26
+ $article["mainEntityOfPage"] = array(
27
+ "@type" => "WebPage",
28
+ "@id" => $KcSeoWPSchema->sanitizeOutPut($metaData["mainEntityOfPage"])
29
+ );
30
+ }
31
+ if (!empty($metaData['author'])) {
32
+ $article["author"] = array(
33
+ "@type" => "Person",
34
+ "name" => $KcSeoWPSchema->sanitizeOutPut($metaData['author'])
35
+ );
36
+ }
37
+ if (!empty($metaData['publisher'])) {
38
+ if (!empty($metaData['publisherImage'])) {
39
+ $img = $KcSeoWPSchema->imageInfo(absint($metaData['publisherImage']));
40
+ $plA = array(
41
+ "@type" => "ImageObject",
42
+ "url" => $KcSeoWPSchema->sanitizeOutPut($img['url'], 'url'),
43
+ "height" => $img['height'],
44
+ "width" => $img['width']
45
+ );
46
+ } else {
47
+ $plA = array();
48
+ }
49
+ $article["publisher"] = array(
50
+ "@type" => "Organization",
51
+ "name" => $KcSeoWPSchema->sanitizeOutPut($metaData['publisher']),
52
+ "logo" => $plA
53
+ );
54
+ }
55
+ if (!empty($metaData['alternativeHeadline'])) {
56
+ $article["alternativeHeadline"] = $KcSeoWPSchema->sanitizeOutPut($metaData['alternativeHeadline']);
57
+ }
58
+ if (!empty($metaData['image'])) {
59
+ $img = $KcSeoWPSchema->imageInfo(absint($metaData['image']));
60
+ $article["image"] = array(
61
+ "@type" => "ImageObject",
62
+ "url" => $KcSeoWPSchema->sanitizeOutPut($img['url'], 'url'),
63
+ "height" => $img['height'],
64
+ "width" => $img['width']
65
+ );
66
+ }
67
+ if (!empty($metaData['datePublished'])) {
68
+ $article["datePublished"] = $KcSeoWPSchema->sanitizeOutPut($metaData['datePublished']);
69
+ }
70
+ if (!empty($metaData['dateModified'])) {
71
+ $article["dateModified"] = $KcSeoWPSchema->sanitizeOutPut($metaData['dateModified']);
72
+ }
73
+ if (!empty($metaData['description'])) {
74
+ $article["description"] = $KcSeoWPSchema->sanitizeOutPut($metaData['description'],
75
+ 'textarea');
76
+ }
77
+ if (!empty($metaData['articleBody'])) {
78
+ $article["articleBody"] = $KcSeoWPSchema->sanitizeOutPut($metaData['articleBody'],
79
+ 'textarea');
80
+ }
81
+ $html .= $this->get_jsonEncode(apply_filters('kcseo_snippet_article', $article, $metaData));
82
+ break;
83
+
84
+ case "news_article":
85
+ $newsArticle = array(
86
+ "@context" => "http://schema.org",
87
+ "@type" => "NewsArticle"
88
+ );
89
+ if (!empty($metaData['headline'])) {
90
+ $newsArticle["headline"] = $KcSeoWPSchema->sanitizeOutPut($metaData['headline']);
91
+ }
92
+ if (!empty($metaData['mainEntityOfPage'])) {
93
+ $newsArticle["mainEntityOfPage"] = array(
94
+ "@type" => "WebPage",
95
+ "@id" => $KcSeoWPSchema->sanitizeOutPut($metaData["mainEntityOfPage"])
96
+ );
97
+ }
98
+ if (!empty($metaData['author'])) {
99
+ $newsArticle["author"] = array(
100
+ "@type" => "Person",
101
+ "name" => $KcSeoWPSchema->sanitizeOutPut($metaData['author'])
102
+ );
103
+ }
104
+ if (!empty($metaData['image'])) {
105
+ $img = $KcSeoWPSchema->imageInfo(absint($metaData['image']));
106
+ $newsArticle["image"] = array(
107
+ "@type" => "ImageObject",
108
+ "url" => $KcSeoWPSchema->sanitizeOutPut($img['url'], 'url'),
109
+ "height" => $img['height'],
110
+ "width" => $img['width']
111
+ );
112
+ }
113
+ if (!empty($metaData['datePublished'])) {
114
+ $newsArticle["datePublished"] = $KcSeoWPSchema->sanitizeOutPut($metaData['datePublished']);
115
+ }
116
+ if (!empty($metaData['dateModified'])) {
117
+ $newsArticle["dateModified"] = $KcSeoWPSchema->sanitizeOutPut($metaData['dateModified']);
118
+ }
119
+ if (!empty($metaData['publisher'])) {
120
+ if (!empty($metaData['publisherImage'])) {
121
+ $img = $KcSeoWPSchema->imageInfo(absint($metaData['publisherImage']));
122
+ $plA = array(
123
+ "@type" => "ImageObject",
124
+ "url" => $KcSeoWPSchema->sanitizeOutPut($img['url'], 'url'),
125
+ "height" => $img['height'],
126
+ "width" => $img['width']
127
+ );
128
+ } else {
129
+ $plA = array();
130
+ }
131
+ $newsArticle["publisher"] = array(
132
+ "@type" => "Organization",
133
+ "name" => $KcSeoWPSchema->sanitizeOutPut($metaData['publisher']),
134
+ "logo" => $plA
135
+ );
136
+ }
137
+ if (!empty($metaData['description'])) {
138
+ $newsArticle["description"] = $KcSeoWPSchema->sanitizeOutPut($metaData['description'],
139
+ 'textarea');
140
+ }
141
+ if (!empty($metaData['articleBody'])) {
142
+ $newsArticle["articleBody"] = $KcSeoWPSchema->sanitizeOutPut($metaData['articleBody'],
143
+ 'textarea');
144
+ }
145
+ $html .= $this->get_jsonEncode(apply_filters('kcseo_snippet_news_article', $newsArticle, $metaData));
146
+ break;
147
+
148
+ case "blog_posting":
149
+ $blogPosting = array(
150
+ "@context" => "http://schema.org",
151
+ "@type" => "BlogPosting"
152
+ );
153
+ if (!empty($metaData['headline'])) {
154
+ $blogPosting["headline"] = $KcSeoWPSchema->sanitizeOutPut($metaData['headline']);
155
+ }
156
+ if (!empty($metaData['mainEntityOfPage'])) {
157
+ $blogPosting["mainEntityOfPage"] = array(
158
+ "@type" => "WebPage",
159
+ "@id" => $KcSeoWPSchema->sanitizeOutPut($metaData["mainEntityOfPage"])
160
+ );
161
+ }
162
+ if (!empty($metaData['author'])) {
163
+ $blogPosting["author"] = array(
164
+ "@type" => "Person",
165
+ "name" => $KcSeoWPSchema->sanitizeOutPut($metaData['author'])
166
+ );
167
+ }
168
+ if (!empty($metaData['image'])) {
169
+ $img = $KcSeoWPSchema->imageInfo(absint($metaData['image']));
170
+ $blogPosting["image"] = array(
171
+ "@type" => "ImageObject",
172
+ "url" => $KcSeoWPSchema->sanitizeOutPut($img['url'], 'url'),
173
+ "height" => $img['height'],
174
+ "width" => $img['width']
175
+ );
176
+ }
177
+ if (!empty($metaData['datePublished'])) {
178
+ $blogPosting["datePublished"] = $KcSeoWPSchema->sanitizeOutPut($metaData['datePublished']);
179
+ }
180
+ if (!empty($metaData['dateModified'])) {
181
+ $blogPosting["dateModified"] = $KcSeoWPSchema->sanitizeOutPut($metaData['dateModified']);
182
+ }
183
+ if (!empty($metaData['publisher'])) {
184
+ if (!empty($metaData['publisherImage'])) {
185
+ $img = $KcSeoWPSchema->imageInfo(absint($metaData['publisherImage']));
186
+ $plA = array(
187
+ "@type" => "ImageObject",
188
+ "url" => $KcSeoWPSchema->sanitizeOutPut($img['url'], 'url'),
189
+ "height" => $img['height'],
190
+ "width" => $img['width']
191
+ );
192
+ } else {
193
+ $plA = array();
194
+ }
195
+ $blogPosting["publisher"] = array(
196
+ "@type" => "Organization",
197
+ "name" => $KcSeoWPSchema->sanitizeOutPut($metaData['publisher']),
198
+ "logo" => $plA
199
+ );
200
+ }
201
+ if (!empty($metaData['description'])) {
202
+ $blogPosting["description"] = $KcSeoWPSchema->sanitizeOutPut($metaData['description'],
203
+ 'textarea');
204
+ }
205
+ if (!empty($metaData['articleBody'])) {
206
+ $blogPosting["articleBody"] = $KcSeoWPSchema->sanitizeOutPut($metaData['articleBody'],
207
+ 'textarea');
208
+ }
209
+ $html .= $this->get_jsonEncode(apply_filters('kcseo_snippet_blog_posting', $blogPosting, $metaData));
210
+ break;
211
+
212
+ case 'event':
213
+ $event = array(
214
+ "@context" => "http://schema.org",
215
+ "@type" => "Event"
216
+ );
217
+ if (!empty($metaData['name'])) {
218
+ $event["name"] = $KcSeoWPSchema->sanitizeOutPut($metaData['name']);
219
+ }
220
+ if (!empty($metaData['startDate'])) {
221
+ $event["startDate"] = $KcSeoWPSchema->sanitizeOutPut($metaData['startDate']);
222
+ }
223
+ if (!empty($metaData['endDate'])) {
224
+ $event["endDate"] = $KcSeoWPSchema->sanitizeOutPut($metaData['endDate']);
225
+ }
226
+ if (!empty($metaData['description'])) {
227
+ $event["description"] = $KcSeoWPSchema->sanitizeOutPut($metaData['description'],
228
+ 'textarea');
229
+ }
230
+ if (!empty($metaData['performerName'])) {
231
+ $event["performer"] = array(
232
+ "@type" => "Person",
233
+ "name" => $KcSeoWPSchema->sanitizeOutPut($metaData['performerName'])
234
+ );
235
+ }
236
+ if (!empty($metaData['image'])) {
237
+ $event["image"] = $KcSeoWPSchema->sanitizeOutPut($metaData['image'], 'url');
238
+ }
239
+ if (!empty($metaData['locationName'])) {
240
+ $event["location"] = array(
241
+ "@type" => "Place",
242
+ "name" => $KcSeoWPSchema->sanitizeOutPut($metaData['locationName']),
243
+ "address" => $KcSeoWPSchema->sanitizeOutPut($metaData['locationAddress'])
244
+ );
245
+ }
246
+ if (!empty($metaData['price'])) {
247
+ $event["offers"] = array(
248
+ "@type" => "Offer",
249
+ "price" => $KcSeoWPSchema->sanitizeOutPut($metaData['price'])
250
+ );
251
+ if (!empty($metaData['priceCurrency'])) {
252
+ $event["offers"]['priceCurrency'] = $KcSeoWPSchema->sanitizeOutPut($metaData['priceCurrency']);
253
+ }
254
+ if (!empty($metaData['url'])) {
255
+ $event["offers"]['url'] = $KcSeoWPSchema->sanitizeOutPut($metaData['url'], 'url');
256
+ }
257
+ if (!empty($metaData['availability'])) {
258
+ $event["offers"]['availability'] = $KcSeoWPSchema->sanitizeOutPut($metaData['availability']);
259
+ }
260
+ if (!empty($metaData['validFrom'])) {
261
+ $event["offers"]['validFrom'] = $KcSeoWPSchema->sanitizeOutPut($metaData['validFrom']);
262
+ }
263
+ }
264
+ if (!empty($metaData['url'])) {
265
+ $event["url"] = $KcSeoWPSchema->sanitizeOutPut($metaData['url'], 'url');
266
+ }
267
+ $html .= $this->get_jsonEncode(apply_filters('kcseo_snippet_event', $event, $metaData));
268
+ if (isset($metaData['review_active'])) {
269
+ $event_review = array(
270
+ "@context" => "http://schema.org",
271
+ "@type" => "Review"
272
+ );
273
+
274
+ if (isset($metaData['review_datePublished']) && !empty($metaData['review_datePublished'])) {
275
+ $event_review["datePublished"] = $KcSeoWPSchema->sanitizeOutPut($metaData['review_datePublished']);
276
+ }
277
+ if (isset($metaData['review_body']) && !empty($metaData['review_body'])) {
278
+ $event_review["reviewBody"] = $KcSeoWPSchema->sanitizeOutPut($metaData['review_body'], 'textarea');
279
+ }
280
+ unset($event['@context']);
281
+ $event_review["itemReviewed"] = $event;
282
+ if (!empty($metaData['review_author'])) {
283
+ $event_review["author"] = array(
284
+ "@type" => "Person",
285
+ "name" => $KcSeoWPSchema->sanitizeOutPut($metaData['review_author'])
286
+ );
287
+
288
+ if (isset($metaData['review_author_sameAs']) && !empty($metaData['review_author_sameAs'])) {
289
+ $sameAs = KcSeoHelper::get_same_as($KcSeoWPSchema->sanitizeOutPut($metaData['review_author_sameAs'], "textarea"));
290
+ if (!empty($sameAs)) {
291
+ $event_review["author"]["sameAs"] = $sameAs;
292
+ }
293
+ }
294
+ }
295
+ if (isset($metaData['review_ratingValue'])) {
296
+ $event_review["reviewRating"] = array(
297
+ "@type" => "Rating",
298
+ "ratingValue" => $KcSeoWPSchema->sanitizeOutPut($metaData['review_ratingValue'], 'number')
299
+ );
300
+ if (isset($metaData['review_bestRating'])) {
301
+ $event_review["reviewRating"]["bestRating"] = $KcSeoWPSchema->sanitizeOutPut($metaData['review_bestRating'], 'number');
302
+ }
303
+ if (isset($metaData['review_worstRating'])) {
304
+ $event_review["reviewRating"]["worstRating"] = $KcSeoWPSchema->sanitizeOutPut($metaData['review_worstRating'], 'number');
305
+ }
306
+ }
307
+
308
+
309
+ $html .= $this->get_jsonEncode(apply_filters('kcseo_snippet_event_review', $event_review, $metaData));
310
+ }
311
+ break;
312
+
313
+ case 'product':
314
+ $product = array(
315
+ "@context" => "http://schema.org",
316
+ "@type" => "Product"
317
+ );
318
+ if (!empty($metaData['name'])) {
319
+ $product["name"] = $KcSeoWPSchema->sanitizeOutPut($metaData['name']);
320
+ }
321
+ if (!empty($metaData['image'])) {
322
+ $img = $KcSeoWPSchema->imageInfo(absint($metaData['image']));
323
+ $product["image"] = $KcSeoWPSchema->sanitizeOutPut($img['url'], 'url');
324
+ }
325
+ if (!empty($metaData['description'])) {
326
+ $product["description"] = $KcSeoWPSchema->sanitizeOutPut($metaData['description']);
327
+ }
328
+ /* product identifier */
329
+ if (!empty($metaData['sku'])) {
330
+ $product["sku"] = $KcSeoWPSchema->sanitizeOutPut($metaData['sku']);
331
+ }
332
+ if (!empty($metaData['brand'])) {
333
+ $product["brand"] = $KcSeoWPSchema->sanitizeOutPut($metaData['brand']);
334
+ }
335
+ if (!empty($metaData['identifier_type']) && !empty($metaData['identifier'])) {
336
+ $product[$metaData['identifier_type']] = $KcSeoWPSchema->sanitizeOutPut($metaData['identifier']);
337
+ }
338
+ if (!empty($metaData['ratingValue'])) {
339
+ $product["aggregateRating"] = array(
340
+ "@type" => "AggregateRating",
341
+ "ratingValue" => !empty($metaData['ratingValue']) ? $KcSeoWPSchema->sanitizeOutPut($metaData['ratingValue']) : null,
342
+ "reviewCount" => !empty($metaData['reviewCount']) ? $KcSeoWPSchema->sanitizeOutPut($metaData['reviewCount']) : null
343
+ );
344
+ }
345
+ if (!empty($metaData['reviewRatingValue']) || !empty($metaData['reviewBestRating']) || !empty($metaData['reviewWorstRating'])) {
346
+ $product["review"] = array(
347
+ "@type" => "Review",
348
+ "reviewRating" => array(
349
+ "@type" => "Rating",
350
+ "ratingValue" => !empty($metaData['reviewRatingValue']) ? $KcSeoWPSchema->sanitizeOutPut($metaData['reviewRatingValue']) : null,
351
+ "bestRating" => !empty($metaData['reviewBestRating']) ? $KcSeoWPSchema->sanitizeOutPut($metaData['reviewBestRating']) : null,
352
+ "worstRating" => !empty($metaData['reviewWorstRating']) ? $KcSeoWPSchema->sanitizeOutPut($metaData['reviewWorstRating']) : null
353
+ ),
354
+ "author" => array(
355
+ "@type" => "Person",
356
+ "name" => !empty($metaData['reviewAuthor']) ? $KcSeoWPSchema->sanitizeOutPut($metaData['reviewAuthor']) : null
357
+ )
358
+ );
359
+ }
360
+ if (!empty($metaData['price'])) {
361
+ $product["offers"] = array(
362
+ "@type" => "Offer",
363
+ "price" => $KcSeoWPSchema->sanitizeOutPut($metaData['price']),
364
+ "priceValidUntil" => $KcSeoWPSchema->sanitizeOutPut($metaData['priceValidUntil']),
365
+ "priceCurrency" => !empty($metaData['priceCurrency']) ? $KcSeoWPSchema->sanitizeOutPut($metaData['priceCurrency']) : null,
366
+ "itemCondition" => !empty($metaData['itemCondition']) ? $KcSeoWPSchema->sanitizeOutPut($metaData['itemCondition']) : null,
367
+ "availability" => !empty($metaData['availability']) ? $KcSeoWPSchema->sanitizeOutPut($metaData['availability']) : null,
368
+ "url" => !empty($metaData['url']) ? $KcSeoWPSchema->sanitizeOutPut($metaData['url']) : null
369
+ );
370
+ }
371
+ $html .= $this->get_jsonEncode(apply_filters('kcseo_snippet_product', $product, $metaData));
372
+ break;
373
+
374
+ case 'video':
375
+ $video = array(
376
+ "@context" => "http://schema.org",
377
+ "@type" => "VideoObject"
378
+ );
379
+ if (!empty($metaData['name'])) {
380
+ $video["name"] = $KcSeoWPSchema->sanitizeOutPut($metaData['name']);
381
+ }
382
+ if (!empty($metaData['description'])) {
383
+ $video["description"] = $KcSeoWPSchema->sanitizeOutPut($metaData['description'],
384
+ 'textarea');
385
+ }
386
+ if (!empty($metaData['description'])) {
387
+ $video["description"] = $KcSeoWPSchema->sanitizeOutPut($metaData['description']);
388
+ }
389
+ if (!empty($metaData['thumbnailUrl'])) {
390
+ $video["thumbnailUrl"] = $KcSeoWPSchema->sanitizeOutPut($metaData['thumbnailUrl'], 'url');
391
+ }
392
+ if (!empty($metaData['uploadDate'])) {
393
+ $video["uploadDate"] = $KcSeoWPSchema->sanitizeOutPut($metaData['uploadDate']);
394
+ }
395
+ if (!empty($metaData['duration'])) {
396
+ $video["duration"] = $KcSeoWPSchema->sanitizeOutPut($metaData['duration']);
397
+ }
398
+ if (!empty($metaData['contentUrl'])) {
399
+ $video["contentUrl"] = $KcSeoWPSchema->sanitizeOutPut($metaData['contentUrl'], 'url');
400
+ }
401
+ if (!empty($metaData['interactionCount'])) {
402
+ $video["interactionCount"] = $KcSeoWPSchema->sanitizeOutPut($metaData['interactionCount']);
403
+ }
404
+ if (!empty($metaData['expires'])) {
405
+ $video["expires"] = $KcSeoWPSchema->sanitizeOutPut($metaData['expires']);
406
+ }
407
+ $html .= $this->get_jsonEncode(apply_filters('kcseo_snippet_video', $video, $metaData));
408
+ break;
409
+
410
+ case 'service':
411
+ $service = array(
412
+ "@context" => "http://schema.org",
413
+ "@type" => "Service"
414
+ );
415
+ if (!empty($metaData['name'])) {
416
+ $service["name"] = $KcSeoWPSchema->sanitizeOutPut($metaData['name']);
417
+ }
418
+ if (!empty($metaData['serviceType'])) {
419
+ $service["serviceType"] = $KcSeoWPSchema->sanitizeOutPut($metaData['serviceType']);
420
+ }
421
+ if (!empty($metaData['award'])) {
422
+ $service["award"] = $KcSeoWPSchema->sanitizeOutPut($metaData['award']);
423
+ }
424
+ if (!empty($metaData['category'])) {
425
+ $service["category"] = $KcSeoWPSchema->sanitizeOutPut($metaData['category']);
426
+ }
427
+ if (!empty($metaData['providerMobility'])) {
428
+ $service["providerMobility"] = $KcSeoWPSchema->sanitizeOutPut($metaData['providerMobility']);
429
+ }
430
+ if (!empty($metaData['additionalType'])) {
431
+ $service["additionalType"] = $KcSeoWPSchema->sanitizeOutPut($metaData['additionalType']);
432
+ }
433
+ if (!empty($metaData['alternateName'])) {
434
+ $service["alternateName"] = $KcSeoWPSchema->sanitizeOutPut($metaData['alternateName']);
435
+ }
436
+ if (!empty($metaData['image'])) {
437
+ $service["image"] = $KcSeoWPSchema->sanitizeOutPut($metaData['image']);
438
+ }
439
+ if (!empty($metaData['mainEntityOfPage'])) {
440
+ $service["mainEntityOfPage"] = $KcSeoWPSchema->sanitizeOutPut($metaData['mainEntityOfPage']);
441
+ }
442
+ if (!empty($metaData['sameAs'])) {
443
+ $service["sameAs"] = $KcSeoWPSchema->sanitizeOutPut($metaData['sameAs']);
444
+ }
445
+ if (!empty($metaData['url'])) {
446
+ $service["url"] = $KcSeoWPSchema->sanitizeOutPut($metaData['url'], 'url');
447
+ }
448
+ $html .= $this->get_jsonEncode(apply_filters('kcseo_snippet_service', $service, $metaData));
449
+ break;
450
+
451
+ case 'review':
452
+ $review = array(
453
+ "@context" => "http://schema.org",
454
+ "@type" => "Review"
455
+ );
456
+ if (!empty($metaData['itemName'])) {
457
+ $review["itemReviewed"] = array(
458
+ "@type" => "product",
459
+ "name" => $KcSeoWPSchema->sanitizeOutPut($metaData['itemName'])
460
+ );
461
+ }
462
+ if (!empty($metaData['ratingValue'])) {
463
+ $review["reviewRating"] = array(
464
+ "@type" => "Rating",
465
+ "ratingValue" => $KcSeoWPSchema->sanitizeOutPut($metaData['ratingValue']),
466
+ "bestRating" => $KcSeoWPSchema->sanitizeOutPut($metaData['bestRating']),
467
+ "worstRating" => $KcSeoWPSchema->sanitizeOutPut($metaData['worstRating'])
468
+ );
469
+ }
470
+ if (!empty($metaData['name'])) {
471
+ $review["name"] = $KcSeoWPSchema->sanitizeOutPut($metaData['name']);
472
+ }
473
+ if (!empty($metaData['author'])) {
474
+ $review["author"] = array(
475
+ "@type" => "Person",
476
+ "name" => $KcSeoWPSchema->sanitizeOutPut($metaData['author'])
477
+ );
478
+ }
479
+ if (!empty($metaData['reviewBody'])) {
480
+ $review["reviewBody"] = $KcSeoWPSchema->sanitizeOutPut($metaData['reviewBody']);
481
+ }
482
+ if (!empty($metaData['datePublished'])) {
483
+ $review["datePublished"] = $KcSeoWPSchema->sanitizeOutPut($metaData['datePublished']);
484
+ }
485
+ if (!empty($metaData['publisher'])) {
486
+ $review["publisher"] = array(
487
+ "@type" => "Organization",
488
+ "name" => $KcSeoWPSchema->sanitizeOutPut($metaData['publisher'])
489
+ );
490
+ }
491
+ $html .= $this->get_jsonEncode(apply_filters('kcseo_snippet_review', $review, $metaData));
492
+ break;
493
+ case 'aggregate_rating':
494
+ $aRating = array(
495
+ "@context" => "http://schema.org",
496
+ "@type" => !empty($metaData['schema_type']) ? $metaData['schema_type'] : "LocalBusiness"
497
+ );
498
+ if (!empty($metaData['name'])) {
499
+ $aRating["name"] = $KcSeoWPSchema->sanitizeOutPut($metaData['name']);
500
+ }
501
+ if (!empty($metaData['description'])) {
502
+ $aRating["description"] = $KcSeoWPSchema->sanitizeOutPut($metaData['description'],
503
+ 'textarea');
504
+ }
505
+ if ($aRating["@type"] != "Organization") {
506
+ if (!empty($metaData['image'])) {
507
+ $img = $KcSeoWPSchema->imageInfo(absint($metaData['image']));
508
+ $aRating["image"] = array(
509
+ "@type" => "ImageObject",
510
+ "url" => $KcSeoWPSchema->sanitizeOutPut($img['url'], 'url'),
511
+ "height" => $img['height'],
512
+ "width" => $img['width']
513
+ );
514
+ }
515
+ if (!empty($metaData['priceRange'])) {
516
+ $aRating["priceRange"] = $KcSeoWPSchema->sanitizeOutPut($metaData['priceRange']);
517
+ }
518
+ if (!empty($metaData['telephone'])) {
519
+ $aRating["telephone"] = $KcSeoWPSchema->sanitizeOutPut($metaData['telephone']);
520
+ }
521
+
522
+ if (!empty($metaData['address'])) {
523
+ $aRating["address"] = $KcSeoWPSchema->sanitizeOutPut($metaData['address']);
524
+ }
525
+ }
526
+
527
+ if (!empty($metaData['ratingValue'])) {
528
+ $rValue = array();
529
+ $rValue["@type"] = "AggregateRating";
530
+ $rValue["ratingValue"] = $KcSeoWPSchema->sanitizeOutPut($metaData['ratingValue']);
531
+ if (!empty($metaData['bestRating'])) {
532
+ $rValue["bestRating"] = $KcSeoWPSchema->sanitizeOutPut($metaData['bestRating']);
533
+ }
534
+ if (!empty($metaData['worstRating'])) {
535
+ $rValue["worstRating"] = $KcSeoWPSchema->sanitizeOutPut($metaData['worstRating']);
536
+ }
537
+ if (!empty($metaData['ratingCount'])) {
538
+ $rValue["ratingCount"] = $KcSeoWPSchema->sanitizeOutPut($metaData['ratingCount']);
539
+ }
540
+
541
+ $aRating["aggregateRating"] = $rValue;
542
+ }
543
+ $html .= $this->get_jsonEncode(apply_filters('kcseo_snippet_aggregate_rating', $aRating, $metaData));
544
+ break;
545
+
546
+ case 'restaurant':
547
+ $restaurant = array(
548
+ "@context" => "http://schema.org",
549
+ "@type" => "Restaurant"
550
+ );
551
+ if (!empty($metaData['name'])) {
552
+ $restaurant["name"] = $KcSeoWPSchema->sanitizeOutPut($metaData['name']);
553
+ }
554
+ if (!empty($metaData['description'])) {
555
+ $restaurant["description"] = $KcSeoWPSchema->sanitizeOutPut($metaData['description'],
556
+ 'textarea');
557
+ }
558
+ if (!empty($metaData['openingHours'])) {
559
+ $restaurant["openingHours"] = $KcSeoWPSchema->sanitizeOutPut($metaData['openingHours'],
560
+ 'textarea');
561
+ }
562
+ if (!empty($metaData['telephone'])) {
563
+ $restaurant["telephone"] = $KcSeoWPSchema->sanitizeOutPut($metaData['telephone']);
564
+ }
565
+ if (!empty($metaData['menu'])) {
566
+ $restaurant["menu"] = $KcSeoWPSchema->sanitizeOutPut($metaData['menu'], 'url');
567
+ }
568
+ if (!empty($metaData['image'])) {
569
+ $img = $KcSeoWPSchema->imageInfo(absint($metaData['image']));
570
+ $restaurant["image"] = $KcSeoWPSchema->sanitizeOutPut($img['url'], 'url');
571
+ }
572
+ if (!empty($metaData['address'])) {
573
+ $restaurant["address"] = $KcSeoWPSchema->sanitizeOutPut($metaData['address'], 'textarea');
574
+ }
575
+ if (!empty($metaData['priceRange'])) {
576
+ $restaurant["priceRange"] = $KcSeoWPSchema->sanitizeOutPut($metaData['priceRange']);
577
+ }
578
+ if (!empty($metaData['servesCuisine'])) {
579
+ $restaurant["servesCuisine"] = $KcSeoWPSchema->sanitizeOutPut($metaData['servesCuisine']);
580
+ }
581
+ $html .= $this->get_jsonEncode(apply_filters('kcseo_snippet_restaurant', $restaurant, $metaData));
582
+ break;
583
+
584
+ case 'localBusiness':
585
+ $local_business = array(
586
+ "@context" => "http://schema.org",
587
+ "@type" => "LocalBusiness"
588
+ );
589
+ if (!empty($metaData['name'])) {
590
+ $local_business["name"] = $KcSeoWPSchema->sanitizeOutPut($metaData['name']);
591
+ }
592
+ if (!empty($metaData['description'])) {
593
+ $local_business["description"] = $KcSeoWPSchema->sanitizeOutPut($metaData['description'],
594
+ 'textarea');
595
+ }
596
+ if (!empty($metaData['image'])) {
597
+ $img = $KcSeoWPSchema->imageInfo(absint($metaData['image']));
598
+ $local_business["image"] = $KcSeoWPSchema->sanitizeOutPut($img['url'], 'url');
599
+ }
600
+ if (!empty($metaData['priceRange'])) {
601
+ $local_business["priceRange"] = $KcSeoWPSchema->sanitizeOutPut($metaData['priceRange']);
602
+ }
603
+ if (!empty($metaData['addressLocality']) || !empty($metaData['addressRegion'])
604
+ || !empty($metaData['postalCode']) || !empty($metaData['streetAddress'])) {
605
+ $local_business["address"] = array(
606
+ "@type" => "PostalAddress",
607
+ "addressLocality" => $KcSeoWPSchema->sanitizeOutPut($metaData['addressLocality']),
608
+ "addressRegion" => $KcSeoWPSchema->sanitizeOutPut($metaData['addressRegion']),
609
+ "postalCode" => $KcSeoWPSchema->sanitizeOutPut($metaData['postalCode']),
610
+ "streetAddress" => $KcSeoWPSchema->sanitizeOutPut($metaData['streetAddress'])
611
+ );
612
+ }
613
+
614
+ if (!empty($metaData['telephone'])) {
615
+ $local_business["telephone"] = $KcSeoWPSchema->sanitizeOutPut($metaData['telephone']);
616
+ }
617
+ $html .= $this->get_jsonEncode(apply_filters('kcseo_snippet_local_business', $local_business, $metaData));
618
+ if (isset($metaData['review_active'])) {
619
+ $local_business_review = array(
620
+ "@context" => "http://schema.org",
621
+ "@type" => "Review",
622
+ );
623
+ if (isset($metaData['review_datePublished']) && !empty($metaData['review_datePublished'])) {
624
+ $local_business_review["datePublished"] = $KcSeoWPSchema->sanitizeOutPut($metaData['review_datePublished']);
625
+ }
626
+ if (isset($metaData['review_body']) && !empty($metaData['review_body'])) {
627
+ $local_business_review["reviewBody"] = $KcSeoWPSchema->sanitizeOutPut($metaData['review_body'], 'textarea');
628
+ }
629
+
630
+ unset($local_business['@context']);
631
+ if (isset($local_business["description"])) {
632
+ $local_business_review["description"] = KcSeoHelper::filter_content($local_business["description"], 200);
633
+ unset($local_business["description"]);
634
+ }
635
+ if (isset($metaData['review_sameAs']) && !empty($metaData['review_sameAs'])) {
636
+ $sameAs = KcSeoHelper::get_same_as($KcSeoWPSchema->sanitizeOutPut($metaData['review_sameAs'], "textarea"));
637
+ if (!empty($sameAs)) {
638
+ $local_business["sameAs"] = $sameAs;
639
+ }
640
+ }
641
+
642
+ $local_business_review["itemReviewed"] = $local_business;
643
+ if (!empty($metaData['review_author'])) {
644
+ $local_business_review["author"] = array(
645
+ "@type" => "Person",
646
+ "name" => $KcSeoWPSchema->sanitizeOutPut($metaData['review_author'])
647
+ );
648
+
649
+ if (isset($metaData['review_author_sameAs']) && !empty($metaData['review_author_sameAs'])) {
650
+ $sameAs = KcSeoHelper::get_same_as($KcSeoWPSchema->sanitizeOutPut($metaData['review_author_sameAs'], "textarea"));
651
+ if (!empty($sameAs)) {
652
+ $local_business_review["author"]["sameAs"] = $sameAs;
653
+ }
654
+ }
655
+ }
656
+ if (isset($metaData['review_ratingValue'])) {
657
+ $local_business_review["reviewRating"] = array(
658
+ "@type" => "Rating",
659
+ "ratingValue" => $KcSeoWPSchema->sanitizeOutPut($metaData['review_ratingValue'], 'number')
660
+ );
661
+ if (isset($metaData['review_bestRating'])) {
662
+ $local_business_review["reviewRating"]["bestRating"] = $KcSeoWPSchema->sanitizeOutPut($metaData['review_bestRating'], 'number');
663
+ }
664
+ if (isset($metaData['review_worstRating'])) {
665
+ $local_business_review["reviewRating"]["worstRating"] = $KcSeoWPSchema->sanitizeOutPut($metaData['review_worstRating'], 'number');
666
+ }
667
+ }
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
+ }
675
+
676
+ }
677
+
678
+ return $html;
679
+ }
680
+
681
+ function get_field($data) {
682
+ $html = null;
683
+ global $KcSeoWPSchema;
684
+ $id = $data['id'];
685
+ $name = $data['name'];
686
+ $value = $data['value'];
687
+ $attr = !empty($data['attr']) ? $data['attr'] : null;
688
+
689
+ $class = isset($data['class']) ? ($data['class'] ? $data['class'] : null) : null;
690
+ $require = (isset($data['required']) ? ($data['required'] ? sprintf('<span data-kcseo-tooltip="%s" class="required">*</span>', __("Required", "wp-seo-structured-data-schema-pro")) : null) : null);
691
+ $recommended = (isset($data['recommended']) ? ($data['recommended'] ? sprintf('<span data-kcseo-tooltip="%s" class="recommended">*</span>', __("Recommended", "wp-seo-structured-data-schema-pro")) : null) : null);
692
+ $title = (isset($data['title']) ? ($data['title'] ? $data['title'] : null) : null);
693
+ $desc = (isset($data['desc']) ? ($data['desc'] ? $data['desc'] : null) : null);
694
+ $holderClass = (!empty($data['holderClass']) ? $data['holderClass'] : null);
695
+
696
+ switch ($data['type']) {
697
+ case 'checkbox':
698
+ $checked = ($value ? "checked" : null);
699
+ $html .= "<div class='kSeo-checkbox-wrapper'>";
700
+ $html .= "<label for='{$id}'><input type='checkbox' id='{$id}' class='{$class}' name='{$name}' {$checked} value='1' /> Enable</label>";
701
+ $html .= "</div>";
702
+ break;
703
+ case 'text':
704
+ $html .= "<input type='text' id='{$id}' class='{$class}' {$attr} name='{$name}' value='" . esc_html($value) . "' />";
705
+ break;
706
+ case 'number':
707
+ if ($data['fieldId'] == 'price') {
708
+ $html .= "<input type='number' step='any' id='{$id}' class='{$class}' {$attr} name='{$name}' value='" . esc_attr($value) . "' />";
709
+ } else {
710
+ $html .= "<input type='number' id='{$id}' class='{$class}' name='{$name}' {$attr} value='" . esc_attr($value) . "' />";
711
+ }
712
+ break;
713
+ case 'textarea':
714
+ $html .= "<textarea id='{$id}' class='{$class}' {$attr} name='{$name}' >" . wp_kses($value,
715
+ array()) . "</textarea>";
716
+ break;
717
+ case 'image':
718
+ $html .= '<div class="kSeo-image">';
719
+ $ImageId = !empty($value) ? absint($value) : 0;
720
+ $image = $ingInfo = null;
721
+ if ($ImageId) {
722
+ $image = wp_get_attachment_image($ImageId, "thumbnail");
723
+ $imgData = $KcSeoWPSchema->imageInfo($ImageId);
724
+ $ingInfo .= "<span><strong>URL: </strong>{$imgData['url']}</span>";
725
+ $ingInfo .= "<span><strong>Width: </strong>{$imgData['width']}px</span>";
726
+ $ingInfo .= "<span><strong>Height: </strong>{$imgData['height']}px</span>";
727
+ }
728
+ $html .= "<div class='kSeo-image-wrapper'>";
729
+ $html .= '<span class="kSeoImgAdd"><span class="dashicons dashicons-plus-alt"></span></span>';
730
+ $html .= '<span class="kSeoImgRemove ' . ($image ? null : "kSeo-hidden") . '"><span class="dashicons dashicons-trash"></span></span>';
731
+ $html .= '<div class="kSeo-image-preview">' . $image . '</div>';
732
+ $html .= "<input type='hidden' name='{$name}' value='" . absint($ImageId) . "' />";
733
+ $html .= "</div>";
734
+ $html .= "<div class='image-info'>{$ingInfo}</div>";
735
+ $html .= '</div>';
736
+ break;
737
+ case 'select':
738
+ $html .= "<select name='{$name}' {$attr} class='select2 {$class}' id='{$id}'>";
739
+ if (!empty($data['empty'])) {
740
+ $html .= "<option value=''>{$data['empty']}</option>";
741
+ }
742
+ if (!empty($data['options']) && is_array($data['options'])) {
743
+ if ($this->isAssoc($data['options'])) {
744
+ foreach ($data['options'] as $optKey => $optValue) {
745
+ $slt = ($optKey == $value ? "selected" : null);
746
+ $html .= "<option value='" . esc_attr($optKey) . "' {$slt}>" . esc_html($optValue) . "</option>";
747
+ }
748
+ } else {
749
+ foreach ($data['options'] as $optValue) {
750
+ $slt = ($optValue == $value ? "selected" : null);
751
+ $html .= "<option value='" . esc_attr($optValue) . "' {$slt}>" . esc_html($optValue) . "</option>";
752
+ }
753
+ }
754
+ }
755
+ $html .= "</select>";
756
+ break;
757
+ case 'schema_type':
758
+ $html .= "<select name='{$name}' class='select2 {$class}' id='{$id}'>";
759
+ if (!empty($data['empty'])) {
760
+ $html .= "<option value=''>{$data['empty']}</option>";
761
+ }
762
+
763
+ foreach ($data['options'] as $key => $site) {
764
+ if (is_array($site)) {
765
+ $slt = ($key == $value ? "selected" : null);
766
+ $html .= "<option value='$key' $slt>&nbsp;&nbsp;&nbsp;$key</option>";
767
+ foreach ($site as $inKey => $inSite) {
768
+ if (is_array($inSite)) {
769
+ $slt = ($inKey == $value ? "selected" : null);
770
+ $html .= "<option value='$inKey' $slt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$inKey</option>";
771
+ foreach ($inSite as $inInKey => $inInSite) {
772
+ if (is_array($inInSite)) {
773
+ $slt = ($inInKey == $value ? "selected" : null);
774
+ $html .= "<option value='$inInKey' $slt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$inInKey</option>";
775
+ foreach ($inInSite as $iSite) {
776
+ $slt = ($iSite == $value ? "selected" : null);
777
+ $html .= "<option value='$iSite' $slt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$iSite</option>";
778
+ }
779
+ } else {
780
+ $slt = ($inInSite == $value ? "selected" : null);
781
+ $html .= "<option value='$inInSite' $slt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$inInSite</option>";
782
+ }
783
+ }
784
+ } else {
785
+ $slt = ($inSite == $value ? "selected" : null);
786
+ $html .= "<option value='$inSite' $slt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$inSite</option>";
787
+ }
788
+ }
789
+ } else {
790
+ $slt = ($site == $value ? "selected" : null);
791
+ $html .= "<option value='$site' $slt>$site</option>";
792
+ }
793
+ }
794
+ $html .= "</select>";
795
+ break;
796
+ default:
797
+ $html .= "<input id='{$id}' type='{$data['type']}' {$attr} value='" . esc_attr($value) . "' name='$name' />";
798
+ break;
799
+
800
+ }
801
+ $label = "<label class='field-label' for='{$id}'>{$title}{$require}{$recommended}</label>";
802
+ $field_html = sprintf('<div class="field-content" id="%s-content">%s<p class="description">%s</div>', $id, $html, $desc);
803
+ if ($data['type'] == 'heading') {
804
+ $holderClass .= ' kcseo-heading-container';
805
+ $label = '';
806
+ $field_html = sprintf('<div class="kcseo-section-title-wrap">%s%s</div>',
807
+ $title ? sprintf('<h5>%s</h5>', $title) : '',
808
+ $desc ? sprintf('<p class="description">%s</p>', $desc) : null
809
+ );
810
+ }
811
+
812
+ $html = sprintf('<div class="field-container %s" id="%s-container">%s%s</div>',
813
+ $holderClass,
814
+ $id,
815
+ $label,
816
+ $field_html
817
+ );
818
+
819
+ return $html;
820
+ }
821
+
822
+ function get_jsonEncode($data = array()) {
823
+ $html = null;
824
+ /** @var TYPE_NAME $data */
825
+ if (!empty($data) && is_array($data)) {
826
+ $html .= '<script type="application/ld+json">' . json_encode($data,
827
+ JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES) . '</script>';
828
+ }
829
+
830
+ return $html;
831
+ }
832
+
833
+ function imgInfo($url = null) {
834
+ $img = array();
835
+ if ($url) {
836
+ $imgA = @getimagesize($url);
837
+ if (is_array($imgA) && !empty($imgA)) {
838
+ $img['width'] = $imgA[0];
839
+ $img['height'] = $imgA[1];
840
+ } else {
841
+ $img['width'] = 0;
842
+ $img['height'] = 0;
843
+ }
844
+ }
845
+
846
+ return $img;
847
+ }
848
+
849
+ function isAssoc($array) {
850
+ $keys = array_keys($array);
851
+
852
+ return $keys !== array_keys($keys);
853
+ }
854
+
855
+
856
+ }
857
  endif;
lib/views/settings.php CHANGED
@@ -1,114 +1,161 @@
1
  <?php
2
  global $KcSeoWPSchema;
3
- $settings = get_option($KcSeoWPSchema->options['main_settings']);
4
  ?>
5
  <div class="wrap">
6
- <h2><?php _e('Schema Settings', "wp-seo-structured-data-schema"); ?></h2>
7
 
8
  <div id="kcseo-settings">
9
  <div id="kcseo-options">
10
  <form id="kcseo-main-settings">
11
  <table width="40%" cellpadding="10" class="form-table">
12
- <tr class="default">
13
- <th><?php _e("Business / Org Schema", "wp-seo-structured-data-schema") ?></th>
14
  <td align="left" scope="row">
15
- <?php $dd = !empty($settings['site_schema']) ? $settings['site_schema'] : 'home_page'; ?>
16
- <input type="radio" <?php echo($dd == 'home_page' ? 'checked' : null); ?> name="site_schema"
17
- value="home_page" id="site_schema_home"><label for="site_schema_home"><?php _e("Home page
18
- only", "wp-seo-structured-data-schema") ?></label><br>
19
- <input type="radio" <?php echo($dd == 'all' ? 'checked' : null); ?> name="site_schema"
 
20
  value="all"
21
- id="site_schema_all"><label for="site_schema_all"><?php _e("Sitewide (Apply General Settings schema
22
- sitewide)", "wp-seo-structured-data-schema") ?></label><br>
23
- <input type="radio" <?php echo($dd == 'off' ? 'checked' : null); ?> name="site_schema"
24
  value="off"
25
  id="site_schema_off"><label
26
- for="site_schema_off"><?php _e("Turn off (Turn off global schema)", "wp-seo-structured-data-schema") ?></label>
27
  </td>
28
  </tr>
29
- <tr class="default">
30
  <th>
31
- <?php _e("Post Type", "wp-seo-structured-data-schema-pro") ?>
32
- <span class='kcseo-pro-label'><?php _e("PRO", "wp-seo-structured-data-schema-pro") ?></span>
33
  </th>
34
  <td align="left" scope="row">
35
- <?php
36
- $postTypes = $KcSeoWPSchema->get_post_type_list();
37
- foreach ($postTypes as $key => $value) {
38
- echo "<label for='pt-{$key}'><input disabled id='pt-{$key}' type='checkbox' /> {$value}</label><br>";
39
- }
40
- ?>
41
  </td>
42
  </tr>
43
- <tr class="default">
44
- <th style="font-size: 18px; padding: 30px 0 5px;"
45
- colspan="2"><?php _e("Site Navigation Element Schema", "wp-seo-structured-data-schema-pro") ?></th>
 
46
  </tr>
47
- <tr class="default">
48
  <th>
49
- <?php _e("Publisher Name", "wp-seo-structured-data-schema-pro") ?>
50
- <span class='kcseo-pro-label'><?php _e("PRO", "wp-seo-structured-data-schema-pro") ?></span>
51
  </th>
52
  <td align="left" scope="row">
53
  <select disabled>
54
- <option value=""><?php _e("Select one menu", "wp-seo-structure-data-schema-pro") ?></option>
55
- <?php
56
- $menus = get_terms('nav_menu');
57
- if (!empty($menus)) {
58
- foreach ($menus as $menu) {
59
- $slt = (!empty($settings['site_nav']) && $settings['site_nav'] == $menu->term_id) ? " selected" : null;
60
- echo "<option value='{$menu->term_id}'{$slt}>{$menu->name}</option>";
61
- }
62
- }
63
- ?>
64
  </select>
65
- <p class="description"><?php _e("Please deselect the navigation menu if you want to deactivate site navigation
66
- schema.", "wp-seo-structured-data-schema-pro") ?></p>
67
  </td>
68
  </tr>
69
- <tr class="default">
70
- <th style="font-size: 18px; padding: 30px 0 5px;"><?php _e("Publisher Information", "wp-seo-structured-data-schema-pro") ?></th>
 
71
  </tr>
72
- <tr class="default">
73
  <th>
74
- <?php _e("Publisher Name", "wp-seo-structured-data-schema-pro") ?>
75
- <span class='kcseo-pro-label'><?php _e("PRO", "wp-seo-structured-data-schema-pro") ?></span>
76
  </th>
77
  <td align="left" scope="row">
78
  <input type="text" disabled class="disabled regular-text" value=""/>
79
  </td>
80
  </tr>
81
- <tr class="default">
82
  <th>
83
- <?php _e("Publisher Logo", "wp-seo-structured-data-schema-pro") ?>
84
- <span class='kcseo-pro-label'><?php _e("PRO", "wp-seo-structured-data-schema-pro") ?></span>
85
  </th>
86
  <td align="left" scope="row"></td>
87
  </tr>
88
- <tr class="default">
89
- <th style="font-size: 18px; padding: 30px 0 5px;"
90
- colspan="2"><?php _e("System Settings", "wp-seo-structured-data-schema-pro") ?></th>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
91
  </tr>
92
- <tr class="default">
93
- <th><?php _e("Delete all data", "wp-seo-structured-data-schema") ?></th>
94
  <td align="left" scope="row">
95
- <?php $dd = !empty($settings['delete-data']) ? "checked" : null; ?>
96
  <input type="checkbox" <?php echo $dd; ?> name="delete-data" value="1"
97
  id="delete-data"><label
98
- for="delete-data"><?php _e("Enable", "wp-seo-structured-data-schema") ?></label>
99
- <p class="description"><?php _e("This will delete all schema created and applied by this plugin when plugin is
100
- deleted.", "wp-seo-structured-data-schema") ?></p>
101
  </td>
102
  </tr>
103
  </table>
104
  <p class="submit"><input type="submit" name="submit" id="tlpSaveButton" class="button button-primary"
105
- value="<?php _e('Save Changes', "wp-seo-structured-data-schema"); ?>"></p>
106
 
107
- <?php wp_nonce_field($KcSeoWPSchema->nonceText(), '_kcseo_nonce'); ?>
108
  </form>
109
  <div id="response"></div>
110
  </div>
111
- <?php $KcSeoWPSchema->advertisingBlock(); ?>
112
  </div>
113
 
114
  </div>
1
  <?php
2
  global $KcSeoWPSchema;
3
+ $settings = get_option( $KcSeoWPSchema->options['main_settings'] );
4
  ?>
5
  <div class="wrap">
6
+ <h2><?php _e( 'Schema Settings', "wp-seo-structured-data-schema" ); ?></h2>
7
 
8
  <div id="kcseo-settings">
9
  <div id="kcseo-options">
10
  <form id="kcseo-main-settings">
11
  <table width="40%" cellpadding="10" class="form-table">
12
+ <tr>
13
+ <th><?php _e( "Business / Org Schema", "wp-seo-structured-data-schema" ) ?></th>
14
  <td align="left" scope="row">
15
+ <?php $dd = ! empty( $settings['site_schema'] ) ? $settings['site_schema'] : 'home_page'; ?>
16
+ <input type="radio" <?php echo( $dd == 'home_page' ? 'checked' : null ); ?>
17
+ name="site_schema"
18
+ value="home_page" id="site_schema_home"><label for="site_schema_home"><?php _e( "Home page
19
+ only", "wp-seo-structured-data-schema" ) ?></label><br>
20
+ <input type="radio" <?php echo( $dd == 'all' ? 'checked' : null ); ?> name="site_schema"
21
  value="all"
22
+ id="site_schema_all"><label for="site_schema_all"><?php _e( "Sitewide (Apply General Settings schema
23
+ sitewide)", "wp-seo-structured-data-schema" ) ?></label><br>
24
+ <input type="radio" <?php echo( $dd == 'off' ? 'checked' : null ); ?> name="site_schema"
25
  value="off"
26
  id="site_schema_off"><label
27
+ for="site_schema_off"><?php _e( "Turn off (Turn off global schema)", "wp-seo-structured-data-schema" ) ?></label>
28
  </td>
29
  </tr>
30
+ <tr>
31
  <th>
32
+ <?php _e( "Post Type", "wp-seo-structured-data-schema" ) ?>
33
+ <span class='kcseo-pro-label'><?php _e( "PRO", "wp-seo-structured-data-schema" ) ?></span>
34
  </th>
35
  <td align="left" scope="row">
36
+ <?php
37
+ $postTypes = $KcSeoWPSchema->get_post_type_list();
38
+ foreach ( $postTypes as $key => $value ) {
39
+ echo "<label for='pt-{$key}'><input disabled id='pt-{$key}' type='checkbox' /> {$value}</label><br>";
40
+ }
41
+ ?>
42
  </td>
43
  </tr>
44
+ <tr>
45
+ <th colspan="2">
46
+ <h3><?php _e( "Site Navigation Element Schema", "wp-seo-structured-data-schema" ) ?></h3>
47
+ </th>
48
  </tr>
49
+ <tr>
50
  <th>
51
+ <?php _e( "Publisher Name", "wp-seo-structured-data-schema" ) ?>
52
+ <span class='kcseo-pro-label'><?php _e( "PRO", "wp-seo-structured-data-schema" ) ?></span>
53
  </th>
54
  <td align="left" scope="row">
55
  <select disabled>
56
+ <option value=""><?php _e( "Select one menu", "wp-seo-structure-data-schema-pro" ) ?></option>
57
+ <?php
58
+ $menus = get_terms( 'nav_menu' );
59
+ if ( ! empty( $menus ) ) {
60
+ foreach ( $menus as $menu ) {
61
+ $slt = ( ! empty( $settings['site_nav'] ) && $settings['site_nav'] == $menu->term_id ) ? " selected" : null;
62
+ echo "<option value='{$menu->term_id}'{$slt}>{$menu->name}</option>";
63
+ }
64
+ }
65
+ ?>
66
  </select>
67
+ <p class="description"><?php _e( "Please deselect the navigation menu if you want to deactivate site navigation
68
+ schema.", "wp-seo-structured-data-schema" ) ?></p>
69
  </td>
70
  </tr>
71
+ <tr>
72
+ <th colspan="2"><h3><?php _e( "Publisher Information", "wp-seo-structured-data-schema" ) ?></h3>
73
+ </th>
74
  </tr>
75
+ <tr>
76
  <th>
77
+ <?php _e( "Publisher Name", "wp-seo-structured-data-schema" ) ?>
78
+ <span class='kcseo-pro-label'><?php _e( "PRO", "wp-seo-structured-data-schema" ) ?></span>
79
  </th>
80
  <td align="left" scope="row">
81
  <input type="text" disabled class="disabled regular-text" value=""/>
82
  </td>
83
  </tr>
84
+ <tr>
85
  <th>
86
+ <?php _e( "Publisher Logo", "wp-seo-structured-data-schema" ) ?>
87
+ <span class='kcseo-pro-label'><?php _e( "PRO", "wp-seo-structured-data-schema" ) ?></span>
88
  </th>
89
  <td align="left" scope="row"></td>
90
  </tr>
91
+ <tr>
92
+ <th colspan="2">
93
+ <h3><?php esc_html_e( "Third party plugin Settings", "wp-seo-structured-data-schema" ) ?></h3>
94
+ </th>
95
+ </tr>
96
+ <tr>
97
+ <th><?php esc_html_e( "YOAST SEO Default Schema JSON-LD", "wp-seo-structured-data-schema" ) ?></th>
98
+ <td align="left" scope="row">
99
+ <?php $dd = ! empty( $settings['yoast_wpseo_json_ld'] ) ? "checked" : null; ?>
100
+ <input type="checkbox" <?php echo $dd; ?> name="yoast_wpseo_json_ld" value="1"
101
+ id="yoast-wpseo-json-ld"><label
102
+ for="yoast-wpseo-json-ld"><?php esc_html_e( "Disable", "wp-seo-structured-data-schema" ) ?></label>
103
+ <p class="description"><?php esc_html_e( "This will remove all default schema generated by Yoast SEO plugin.", "wp-seo-structured-data-schema" ) ?></p>
104
+ </td>
105
+ </tr>
106
+ <tr>
107
+ <th><?php esc_html_e( "YOAST SEO sitelinks searchbox", "wp-seo-structured-data-schema" ) ?></th>
108
+ <td align="left" scope="row">
109
+ <?php $dd = ! empty( $settings['yoast_wpseo_json_ld_search'] ) ? "checked" : null; ?>
110
+ <input type="checkbox" <?php echo $dd; ?> name="yoast_wpseo_json_ld_search" value="1"
111
+ id="yoast-wpseo-json-ld-search"><label
112
+ for="yoast-wpseo-json-ld-search"><?php esc_html_e( "Disable", "wp-seo-structured-data-schema" ) ?></label>
113
+ <p class="description"><?php esc_html_e( "This will remove sitelinks searchbox generated by Yoast SEO plugin.", "wp-seo-structured-data-schema" ) ?></p>
114
+ </td>
115
+ </tr>
116
+ <tr>
117
+ <th><?php esc_html_e( "Woocommerce default schema", "wp-seo-structured-data-schema" ) ?></th>
118
+ <td align="left" scope="row">
119
+ <?php $dd = ! empty( $settings['wc_schema_disable'] ) ? "checked" : null; ?>
120
+ <input type="checkbox" <?php echo $dd; ?> name="wc_schema_disable" value="1"
121
+ id="wc-schema-disable"><label
122
+ for="wc-schema-disable"><?php esc_html_e( "Disable", "wp-seo-structured-data-schema" ) ?></label>
123
+ <p class="description"><?php esc_html_e( "This will remove Woocommerce plugin generated schema.", "wp-seo-structured-data-schema" ) ?></p>
124
+ </td>
125
+ </tr>
126
+ <tr>
127
+ <th><?php esc_html_e( "Easy Digital Download default schema", "wp-seo-structured-data-schema" ) ?></th>
128
+ <td align="left" scope="row">
129
+ <?php $dd = ! empty( $settings['edd_schema_microdata'] ) ? "checked" : null; ?>
130
+ <input type="checkbox" <?php echo $dd; ?> name="edd_schema_microdata" value="1"
131
+ id="edd-schema-microdata"><label
132
+ for="edd-schema-microdata"><?php esc_html_e( "Disable", "wp-seo-structured-data-schema" ) ?></label>
133
+ <p class="description"><?php esc_html_e( "This will remove Easy Digital Download plugin generated schema.", "wp-seo-structured-data-schema" ) ?></p>
134
+ </td>
135
+ </tr>
136
+ <tr>
137
+ <th colspan="2"><h3><?php _e( "System Settings", "wp-seo-structured-data-schema" ) ?></h3></th>
138
  </tr>
139
+ <tr>
140
+ <th><?php _e( "Delete all data", "wp-seo-structured-data-schema" ) ?></th>
141
  <td align="left" scope="row">
142
+ <?php $dd = ! empty( $settings['delete-data'] ) ? "checked" : null; ?>
143
  <input type="checkbox" <?php echo $dd; ?> name="delete-data" value="1"
144
  id="delete-data"><label
145
+ for="delete-data"><?php _e( "Enable", "wp-seo-structured-data-schema" ) ?></label>
146
+ <p class="description"><?php _e( "This will delete all schema created and applied by this plugin when plugin is
147
+ deleted.", "wp-seo-structured-data-schema" ) ?></p>
148
  </td>
149
  </tr>
150
  </table>
151
  <p class="submit"><input type="submit" name="submit" id="tlpSaveButton" class="button button-primary"
152
+ value="<?php _e( 'Save Changes', "wp-seo-structured-data-schema" ); ?>"></p>
153
 
154
+ <?php wp_nonce_field( $KcSeoWPSchema->nonceText(), '_kcseo_nonce' ); ?>
155
  </form>
156
  <div id="response"></div>
157
  </div>
158
+ <?php $KcSeoWPSchema->advertisingBlock(); ?>
159
  </div>
160
 
161
  </div>
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.5.9
7
  * Author: WPSEMPlugins
8
  * Author URI: https://wpsemplugins.com/
9
  * Text Domain: wp-seo-structured-data-schema
@@ -14,6 +14,11 @@
14
  if ( ! defined( 'ABSPATH' ) ) {
15
  exit;
16
  }
 
 
 
 
 
17
  if ( ! defined( 'JSON_UNESCAPED_SLASHES' ) ) {
18
  define( 'JSON_UNESCAPED_SLASHES', 64 );
19
  }
@@ -37,8 +42,7 @@ require( 'lib/init.php' );
37
  register_uninstall_hook( __FILE__, 'KCSEO_uninstall' );
38
 
39
  function KCSEO_uninstall() {
40
- global $KcSeoWPSchema;
41
- $settings = get_option( $KcSeoWPSchema->options['main_settings'] );
42
  if ( ! empty( $settings['delete-data'] ) ) {
43
  $schemaFields = KcSeoOptions::getSchemaTypes();
44
 
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.0
7
  * Author: WPSEMPlugins
8
  * Author URI: https://wpsemplugins.com/
9
  * Text Domain: wp-seo-structured-data-schema
14
  if ( ! defined( 'ABSPATH' ) ) {
15
  exit;
16
  }
17
+ // Define KCSEO_VERSION VERSION.
18
+ if ( ! defined( 'KCSEO_VERSION' ) ) {
19
+ $plugin_data = get_file_data( __FILE__, array( 'version' => 'Version' ), false );
20
+ define( 'KCSEO_VERSION', $plugin_data['version'] );
21
+ }
22
  if ( ! defined( 'JSON_UNESCAPED_SLASHES' ) ) {
23
  define( 'JSON_UNESCAPED_SLASHES', 64 );
24
  }
42
  register_uninstall_hook( __FILE__, 'KCSEO_uninstall' );
43
 
44
  function KCSEO_uninstall() {
45
+ $settings = get_option( kcseo()->options['main_settings'] );
 
46
  if ( ! empty( $settings['delete-data'] ) ) {
47
  $schemaFields = KcSeoOptions::getSchemaTypes();
48