WP SEO Structured Data Schema - Version 2.7.4

Version Description

(Sept 15, 2022) = * Added: New Schema Type TechArticle, MedicalWebPage, CollectionPage;

Download this release

Release Info

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

Code changes from version 2.7.3 to 2.7.4

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.8
7
- Stable tag: 2.7.3
8
  License: GPLv3
9
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
10
 
@@ -130,85 +130,88 @@ You'll find the [FAQ on WPSEMPlugins.com](https://wpsemplugins.com/wordpress-seo
130
 
131
  == Changelog ==
132
 
133
- == 2.7.3 (Apr 04, 2022) =
 
 
 
134
  * Fixed: Support Issue Fixed;
135
 
136
- == 2.7.1 (Nov 23, 2021) =
137
  * Fixed: Some functional issue
138
 
139
- == 2.7.0 (Oct 28, 2021) =
140
  * Added: About Schema
141
  * Added: Contact Schema
142
  * Added: Audio Schema
143
  * Added: Audio and Video schema in Article, NewsArticle & BlogPosting Schema
144
  * Fixed: Some bug and warning type schema.
145
 
146
- == 2.6.17.2 =
147
  * Fix local business @id property
148
 
149
- == 2.6.17.1 =
150
  * Fix post save issue
151
 
152
- == 2.6.17 =
153
  * Update description issue at export
154
 
155
- == 2.6.16 =
156
  * Add WordPress 5.7 compatibility
157
 
158
- == 2.6.15 =
159
  * PHP Bug Fix
160
 
161
- == 2.6.14 =
162
  * Fix video embed URL issue
163
 
164
- == 2.6.13 =
165
  * New schema ( COVID 19 )
166
 
167
- == 2.6.12 =
168
  * Php bug fix
169
 
170
- == 2.6.11 =
171
  * Coding update
172
 
173
- == 2.6.10 =
174
  * Bug fix
175
 
176
- == 2.6.0 =
177
  * Update review Schema.
178
 
179
- == 2.5.9 =
180
  * Fix PHP error
181
 
182
- == 2.5.8 =
183
  * Fix Javascript issue
184
  * Update Contact Type
185
 
186
- == 2.5.7 =
187
  * Add Time for post
188
  * Event Start & End Time
189
  * Fix URL www issue.
190
  * Product Identifier for e-commerce
191
 
192
- == 2.5.6 =
193
  * Fix event
194
  * AMP support
195
  * Fix Spelling
196
 
197
- == 2.5.5 =
198
  * Add Site schema control
199
  * Fix Site schema search link
200
 
201
- == 2.5.4 =
202
  * Add a Hack
203
 
204
- == 2.5.3 =
205
  * Bug fixed
206
 
207
- == 2.5.2 =
208
  * Add Some pro feature list
209
  * Update compatibility with others plugin.
210
 
211
- == 2.5.1 =
212
  * A option for Turn off global schema
213
  * Full Translation support
214
 
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.8
7
+ Stable tag: 2.7.4
8
  License: GPLv3
9
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
10
 
130
 
131
  == Changelog ==
132
 
133
+ = 2.7.4 (Sept 15, 2022) =
134
+ * Added: New Schema Type TechArticle, MedicalWebPage, CollectionPage;
135
+
136
+ = 2.7.3 (Apr 04, 2022) =
137
  * Fixed: Support Issue Fixed;
138
 
139
+ = 2.7.1 (Nov 23, 2021) =
140
  * Fixed: Some functional issue
141
 
142
+ = 2.7.0 (Oct 28, 2021) =
143
  * Added: About Schema
144
  * Added: Contact Schema
145
  * Added: Audio Schema
146
  * Added: Audio and Video schema in Article, NewsArticle & BlogPosting Schema
147
  * Fixed: Some bug and warning type schema.
148
 
149
+ = 2.6.17.2 =
150
  * Fix local business @id property
151
 
152
+ = 2.6.17.1 =
153
  * Fix post save issue
154
 
155
+ = 2.6.17 =
156
  * Update description issue at export
157
 
158
+ = 2.6.16 =
159
  * Add WordPress 5.7 compatibility
160
 
161
+ = 2.6.15 =
162
  * PHP Bug Fix
163
 
164
+ = 2.6.14 =
165
  * Fix video embed URL issue
166
 
167
+ = 2.6.13 =
168
  * New schema ( COVID 19 )
169
 
170
+ = 2.6.12 =
171
  * Php bug fix
172
 
173
+ = 2.6.11 =
174
  * Coding update
175
 
176
+ = 2.6.10 =
177
  * Bug fix
178
 
179
+ = 2.6.0 =
180
  * Update review Schema.
181
 
182
+ = 2.5.9 =
183
  * Fix PHP error
184
 
185
+ = 2.5.8 =
186
  * Fix Javascript issue
187
  * Update Contact Type
188
 
189
+ = 2.5.7 =
190
  * Add Time for post
191
  * Event Start & End Time
192
  * Fix URL www issue.
193
  * Product Identifier for e-commerce
194
 
195
+ = 2.5.6 =
196
  * Fix event
197
  * AMP support
198
  * Fix Spelling
199
 
200
+ = 2.5.5 =
201
  * Add Site schema control
202
  * Fix Site schema search link
203
 
204
+ = 2.5.4 =
205
  * Add a Hack
206
 
207
+ = 2.5.3 =
208
  * Bug fixed
209
 
210
+ = 2.5.2 =
211
  * Add Some pro feature list
212
  * Update compatibility with others plugin.
213
 
214
+ = 2.5.1 =
215
  * A option for Turn off global schema
216
  * Full Translation support
217
 
languages/wp-seo-structured-data-schema.pot CHANGED
@@ -57,11 +57,11 @@ msgstr ""
57
  msgid "Movies"
58
  msgstr ""
59
 
60
- #: ../lib/classes/KcSeoHelper.php:492, ../lib/functions/KcSeoOptions.php:1394
61
  msgid "Music"
62
  msgstr ""
63
 
64
- #: ../lib/classes/KcSeoHelper.php:493, ../lib/functions/KcSeoOptions.php:1398
65
  msgid "Recipe"
66
  msgstr ""
67
 
@@ -69,11 +69,11 @@ msgstr ""
69
  msgid "TV Episode"
70
  msgstr ""
71
 
72
- #: ../lib/classes/KcSeoHelper.php:495, ../lib/functions/KcSeoOptions.php:1406
73
  msgid "QAPage"
74
  msgstr ""
75
 
76
- #: ../lib/classes/KcSeoHelper.php:496, ../lib/functions/KcSeoOptions.php:1410
77
  msgid "Item List"
78
  msgstr ""
79
 
@@ -133,83 +133,83 @@ msgstr ""
133
  msgid "Article"
134
  msgstr ""
135
 
136
- #: ../lib/functions/KcSeoOptions.php:21, ../lib/functions/KcSeoOptions.php:180, ../lib/functions/KcSeoOptions.php:334
137
  msgid "Headline"
138
  msgstr ""
139
 
140
- #: ../lib/functions/KcSeoOptions.php:23, ../lib/functions/KcSeoOptions.php:336
141
  msgid "Article title"
142
  msgstr ""
143
 
144
- #: ../lib/functions/KcSeoOptions.php:27, ../lib/functions/KcSeoOptions.php:186, ../lib/functions/KcSeoOptions.php:340, ../lib/functions/KcSeoOptions.php:1425
145
  msgid "Page URL"
146
  msgstr ""
147
 
148
- #: ../lib/functions/KcSeoOptions.php:29, ../lib/functions/KcSeoOptions.php:188, ../lib/functions/KcSeoOptions.php:342
149
  msgid "The canonical URL of the article page"
150
  msgstr ""
151
 
152
- #: ../lib/functions/KcSeoOptions.php:33
153
  msgid "Author Name"
154
  msgstr ""
155
 
156
- #: ../lib/functions/KcSeoOptions.php:35, ../lib/functions/KcSeoOptions.php:194, ../lib/functions/KcSeoOptions.php:348
157
  msgid "Author display name"
158
  msgstr ""
159
 
160
- #: ../lib/functions/KcSeoOptions.php:39, ../lib/functions/KcSeoOptions.php:198, ../lib/functions/KcSeoOptions.php:352
161
  msgid "Author URL"
162
  msgstr ""
163
 
164
- #: ../lib/functions/KcSeoOptions.php:45
165
  msgid "Article Feature Image"
166
  msgstr ""
167
 
168
- #: ../lib/functions/KcSeoOptions.php:48
169
  msgid "Images should be at least 696 pixels wide.<br>Images should be in .jpg, .png, or. gif format."
170
  msgstr ""
171
 
172
- #: ../lib/functions/KcSeoOptions.php:51, ../lib/functions/KcSeoOptions.php:210, ../lib/functions/KcSeoOptions.php:364, ../lib/functions/KcSeoOptions.php:1431
173
  msgid "Published date"
174
  msgstr ""
175
 
176
- #: ../lib/functions/KcSeoOptions.php:55, ../lib/functions/KcSeoOptions.php:62, ../lib/functions/KcSeoOptions.php:213, ../lib/functions/KcSeoOptions.php:220, ../lib/functions/KcSeoOptions.php:367, ../lib/functions/KcSeoOptions.php:375, ../lib/functions/KcSeoOptions.php:640, ../lib/functions/KcSeoOptions.php:876, ../lib/functions/KcSeoOptions.php:1105, ../lib/functions/KcSeoOptions.php:1354, ../lib/functions/KcSeoOptions.php:1434, ../lib/functions/KcSeoOptions.php:1441
177
  msgid "Like this: 2021-12-25 14:20:00"
178
  msgstr ""
179
 
180
- #: ../lib/functions/KcSeoOptions.php:58, ../lib/functions/KcSeoOptions.php:217, ../lib/functions/KcSeoOptions.php:371
181
  msgid "Modified date"
182
  msgstr ""
183
 
184
- #: ../lib/functions/KcSeoOptions.php:65, ../lib/functions/KcSeoOptions.php:224, ../lib/functions/KcSeoOptions.php:378
185
  msgid "Publisher"
186
  msgstr ""
187
 
188
- #: ../lib/functions/KcSeoOptions.php:67, ../lib/functions/KcSeoOptions.php:226, ../lib/functions/KcSeoOptions.php:380
189
  msgid "Publisher name or Organization name"
190
  msgstr ""
191
 
192
- #: ../lib/functions/KcSeoOptions.php:71, ../lib/functions/KcSeoOptions.php:230, ../lib/functions/KcSeoOptions.php:384, ../lib/views/settings.php:86
193
  msgid "Publisher Logo"
194
  msgstr ""
195
 
196
- #: ../lib/functions/KcSeoOptions.php:73, ../lib/functions/KcSeoOptions.php:232, ../lib/functions/KcSeoOptions.php:386
197
  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>"
198
  msgstr ""
199
 
200
- #: ../lib/functions/KcSeoOptions.php:77, ../lib/functions/KcSeoOptions.php:105, ../lib/functions/KcSeoOptions.php:149, ../lib/functions/KcSeoOptions.php:236, ../lib/functions/KcSeoOptions.php:259, ../lib/functions/KcSeoOptions.php:303, ../lib/functions/KcSeoOptions.php:390, ../lib/functions/KcSeoOptions.php:413, ../lib/functions/KcSeoOptions.php:457, ../lib/functions/KcSeoOptions.php:520, ../lib/functions/KcSeoOptions.php:681, ../lib/functions/KcSeoOptions.php:831, ../lib/functions/KcSeoOptions.php:894, ../lib/functions/KcSeoOptions.php:1008, ../lib/functions/KcSeoOptions.php:1040, ../lib/functions/KcSeoOptions.php:1179, ../lib/functions/KcSeoOptions.php:1286, ../lib/views/schema-options.php:170, ../lib/views/schema-options.php:255
201
  msgid "Description"
202
  msgstr ""
203
 
204
- #: ../lib/functions/KcSeoOptions.php:79, ../lib/functions/KcSeoOptions.php:238, ../lib/functions/KcSeoOptions.php:392
205
  msgid "Short description. New line is not supported."
206
  msgstr ""
207
 
208
- #: ../lib/functions/KcSeoOptions.php:82, ../lib/functions/KcSeoOptions.php:241, ../lib/functions/KcSeoOptions.php:395
209
  msgid "Article body"
210
  msgstr ""
211
 
212
- #: ../lib/functions/KcSeoOptions.php:84, ../lib/functions/KcSeoOptions.php:243
213
  msgid "Article content"
214
  msgstr ""
215
 
@@ -221,291 +221,311 @@ msgstr ""
221
  msgid "A secondary headline for the article."
222
  msgstr ""
223
 
224
- #: ../lib/functions/KcSeoOptions.php:92, ../lib/functions/KcSeoOptions.php:97, ../lib/functions/KcSeoOptions.php:246, ../lib/functions/KcSeoOptions.php:251, ../lib/functions/KcSeoOptions.php:400, ../lib/functions/KcSeoOptions.php:405, ../lib/functions/KcSeoOptions.php:819
225
  msgid "Video"
226
  msgstr ""
227
 
228
- #: ../lib/functions/KcSeoOptions.php:101, ../lib/functions/KcSeoOptions.php:144, ../lib/functions/KcSeoOptions.php:255, ../lib/functions/KcSeoOptions.php:298, ../lib/functions/KcSeoOptions.php:409, ../lib/functions/KcSeoOptions.php:452, ../lib/functions/KcSeoOptions.php:488, ../lib/functions/KcSeoOptions.php:670, ../lib/functions/KcSeoOptions.php:825, ../lib/functions/KcSeoOptions.php:888, ../lib/functions/KcSeoOptions.php:925, ../lib/functions/KcSeoOptions.php:1003, ../lib/functions/KcSeoOptions.php:1035, ../lib/functions/KcSeoOptions.php:1281, ../lib/functions/KcSeoOptions.php:1419, ../lib/functions/KcSeoOptions.php:1466, ../lib/views/schema-options.php:224
229
  msgid "Name"
230
  msgstr ""
231
 
232
- #: ../lib/functions/KcSeoOptions.php:109, ../lib/functions/KcSeoOptions.php:263, ../lib/functions/KcSeoOptions.php:358, ../lib/functions/KcSeoOptions.php:417, ../lib/functions/KcSeoOptions.php:676, ../lib/functions/KcSeoOptions.php:1012, ../lib/functions/KcSeoOptions.php:1044, ../lib/functions/KcSeoOptions.php:1253, ../lib/functions/KcSeoOptions.php:1513, ../lib/views/schema-options.php:247
233
  msgid "Image"
234
  msgstr ""
235
 
236
- #: ../lib/functions/KcSeoOptions.php:113, ../lib/functions/KcSeoOptions.php:159, ../lib/functions/KcSeoOptions.php:267, ../lib/functions/KcSeoOptions.php:313, ../lib/functions/KcSeoOptions.php:421, ../lib/functions/KcSeoOptions.php:467
237
  msgid "Content URL"
238
  msgstr ""
239
 
240
- #: ../lib/functions/KcSeoOptions.php:117, ../lib/functions/KcSeoOptions.php:271, ../lib/functions/KcSeoOptions.php:425
241
  msgid "Embed URL"
242
  msgstr ""
243
 
244
- #: ../lib/functions/KcSeoOptions.php:118, ../lib/functions/KcSeoOptions.php:272, ../lib/functions/KcSeoOptions.php:426, ../lib/functions/KcSeoOptions.php:859, ../lib/functions/KcSeoOptions.php:1054
245
  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."
246
  msgstr ""
247
 
248
- #: ../lib/functions/KcSeoOptions.php:122, ../lib/functions/KcSeoOptions.php:276, ../lib/functions/KcSeoOptions.php:430
249
  msgid "Upload date"
250
  msgstr ""
251
 
252
- #: ../lib/functions/KcSeoOptions.php:125, ../lib/functions/KcSeoOptions.php:279, ../lib/functions/KcSeoOptions.php:433
253
  msgid "Like this: 2021-08-25 14:20:00"
254
  msgstr ""
255
 
256
- #: ../lib/functions/KcSeoOptions.php:129, ../lib/functions/KcSeoOptions.php:154, ../lib/functions/KcSeoOptions.php:283, ../lib/functions/KcSeoOptions.php:308, ../lib/functions/KcSeoOptions.php:437, ../lib/functions/KcSeoOptions.php:462, ../lib/functions/KcSeoOptions.php:851, ../lib/functions/KcSeoOptions.php:906
257
  msgid "Duration"
258
  msgstr ""
259
 
260
- #: ../lib/functions/KcSeoOptions.php:130, ../lib/functions/KcSeoOptions.php:284, ../lib/functions/KcSeoOptions.php:438
261
  msgid "Runtime of the movie in ISO 8601 format (for example, \"PT2H22M\" (142 minutes))."
262
  msgstr ""
263
 
264
- #: ../lib/functions/KcSeoOptions.php:135, ../lib/functions/KcSeoOptions.php:140, ../lib/functions/KcSeoOptions.php:289, ../lib/functions/KcSeoOptions.php:294, ../lib/functions/KcSeoOptions.php:443, ../lib/functions/KcSeoOptions.php:448, ../lib/functions/KcSeoOptions.php:882
265
  msgid "Audio"
266
  msgstr ""
267
 
268
- #: ../lib/functions/KcSeoOptions.php:145, ../lib/functions/KcSeoOptions.php:299, ../lib/functions/KcSeoOptions.php:453, ../lib/functions/KcSeoOptions.php:891
269
  msgid "The title of the audio"
270
  msgstr ""
271
 
272
- #: ../lib/functions/KcSeoOptions.php:150, ../lib/functions/KcSeoOptions.php:304, ../lib/functions/KcSeoOptions.php:458
273
  msgid "The short description of the audio"
274
  msgstr ""
275
 
276
- #: ../lib/functions/KcSeoOptions.php:155, ../lib/functions/KcSeoOptions.php:309, ../lib/functions/KcSeoOptions.php:463, ../lib/functions/KcSeoOptions.php:908
277
  msgid "The duration of the audio in ISO 8601 format.(PT1M33S)"
278
  msgstr ""
279
 
280
- #: ../lib/functions/KcSeoOptions.php:160, ../lib/functions/KcSeoOptions.php:314, ../lib/functions/KcSeoOptions.php:468, ../lib/functions/KcSeoOptions.php:1016, ../lib/functions/KcSeoOptions.php:1048, ../lib/functions/KcSeoOptions.php:1053, ../lib/functions/KcSeoOptions.php:1472
281
  msgid "URL"
282
  msgstr ""
283
 
284
- #: ../lib/functions/KcSeoOptions.php:161, ../lib/functions/KcSeoOptions.php:315, ../lib/functions/KcSeoOptions.php:469, ../lib/functions/KcSeoOptions.php:903
285
  msgid "A URL pointing to the actual audio media file. This file should be in .mp3, .wav, .mpc or other audio file format."
286
  msgstr ""
287
 
288
- #: ../lib/functions/KcSeoOptions.php:165, ../lib/functions/KcSeoOptions.php:319, ../lib/functions/KcSeoOptions.php:473, ../lib/functions/KcSeoOptions.php:912
289
  msgid "Encoding Format"
290
  msgstr ""
291
 
292
- #: ../lib/functions/KcSeoOptions.php:166, ../lib/functions/KcSeoOptions.php:320, ../lib/functions/KcSeoOptions.php:474, ../lib/functions/KcSeoOptions.php:913
293
  msgid "The encoding format of audio like: 'audio/mpeg'"
294
  msgstr ""
295
 
296
  #: ../lib/functions/KcSeoOptions.php:174
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
297
  msgid "Blog Posting"
298
  msgstr ""
299
 
300
- #: ../lib/functions/KcSeoOptions.php:182
301
  msgid "Blog posting title"
302
  msgstr ""
303
 
304
- #: ../lib/functions/KcSeoOptions.php:192
305
  msgid "Author name"
306
  msgstr ""
307
 
308
- #: ../lib/functions/KcSeoOptions.php:204
309
  msgid "Feature Image"
310
  msgstr ""
311
 
312
- #: ../lib/functions/KcSeoOptions.php:206, ../lib/functions/KcSeoOptions.php:360
313
  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."
314
  msgstr ""
315
 
316
- #: ../lib/functions/KcSeoOptions.php:328
317
  msgid "News Article"
318
  msgstr ""
319
 
320
- #: ../lib/functions/KcSeoOptions.php:346, ../lib/functions/KcSeoOptions.php:619, ../lib/functions/KcSeoOptions.php:1095, ../lib/functions/KcSeoOptions.php:1333
321
  msgid "Author"
322
  msgstr ""
323
 
324
- #: ../lib/functions/KcSeoOptions.php:397
325
  msgid "Article body content. New line is not supported."
326
  msgstr ""
327
 
328
- #: ../lib/functions/KcSeoOptions.php:482
329
  msgid "Event"
330
  msgstr ""
331
 
332
- #: ../lib/functions/KcSeoOptions.php:491
333
  msgid "The name of the event."
334
  msgstr ""
335
 
336
- #: ../lib/functions/KcSeoOptions.php:494
337
  msgid "Location name"
338
  msgstr ""
339
 
340
- #: ../lib/functions/KcSeoOptions.php:497
341
  msgid "Event Location name"
342
  msgstr ""
343
 
344
- #: ../lib/functions/KcSeoOptions.php:500
345
  msgid "Location address"
346
  msgstr ""
347
 
348
- #: ../lib/functions/KcSeoOptions.php:503
349
  msgid "The location of for example where the event is happening, an organization is located, or where an action takes place."
350
  msgstr ""
351
 
352
- #: ../lib/functions/KcSeoOptions.php:506
353
  msgid "Start date"
354
  msgstr ""
355
 
356
- #: ../lib/functions/KcSeoOptions.php:510
357
  msgid "Event start date Like : 2017-10-16 4:00 AM"
358
  msgstr ""
359
 
360
- #: ../lib/functions/KcSeoOptions.php:513
361
  msgid "End date"
362
  msgstr ""
363
 
364
- #: ../lib/functions/KcSeoOptions.php:517
365
  msgid "Event end date Like : 2017-10-16 4:00 AM"
366
  msgstr ""
367
 
368
- #: ../lib/functions/KcSeoOptions.php:523
369
  msgid "Event description. New line is not supported."
370
  msgstr ""
371
 
372
- #: ../lib/functions/KcSeoOptions.php:526
373
  msgid "Organizer"
374
  msgstr ""
375
 
376
- #: ../lib/functions/KcSeoOptions.php:529
377
  msgid "The Organizer."
378
  msgstr ""
379
 
380
- #: ../lib/functions/KcSeoOptions.php:532, ../lib/functions/KcSeoOptions.php:535
381
  msgid "Organizer URL"
382
  msgstr ""
383
 
384
- #: ../lib/functions/KcSeoOptions.php:538
385
  msgid "Performer Name"
386
  msgstr ""
387
 
388
- #: ../lib/functions/KcSeoOptions.php:541
389
  msgid "The performer's name."
390
  msgstr ""
391
 
392
- #: ../lib/functions/KcSeoOptions.php:568
393
  msgid "Image URL"
394
  msgstr ""
395
 
396
- #: ../lib/functions/KcSeoOptions.php:571
397
  msgid "URL of an image or logo for the event or tour"
398
  msgstr ""
399
 
400
- #: ../lib/functions/KcSeoOptions.php:574, ../lib/functions/KcSeoOptions.php:765
401
  msgid "Price"
402
  msgstr ""
403
 
404
- #: ../lib/functions/KcSeoOptions.php:578
405
  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>"
406
  msgstr ""
407
 
408
- #: ../lib/functions/KcSeoOptions.php:581, ../lib/functions/KcSeoOptions.php:778
409
  msgid "Price currency"
410
  msgstr ""
411
 
412
- #: ../lib/functions/KcSeoOptions.php:583
413
  msgid "The 3-letter currency code. (USD)"
414
  msgstr ""
415
 
416
- #: ../lib/functions/KcSeoOptions.php:597
417
  msgid "Valid From"
418
  msgstr ""
419
 
420
- #: ../lib/functions/KcSeoOptions.php:608
421
  msgid "A link to the event's details page. <span class='required'>Not required but (Recommended)</span>"
422
  msgstr ""
423
 
424
- #: ../lib/functions/KcSeoOptions.php:611, ../lib/functions/KcSeoOptions.php:1066, ../lib/functions/KcSeoOptions.php:1325
425
  msgid "Review"
426
  msgstr ""
427
 
428
- #: ../lib/functions/KcSeoOptions.php:613, ../lib/functions/KcSeoOptions.php:1327
429
  msgid "To add review schema for this type, complete fields below and enable, others live blank."
430
  msgstr ""
431
 
432
- #: ../lib/functions/KcSeoOptions.php:624, ../lib/functions/KcSeoOptions.php:1020, ../lib/functions/KcSeoOptions.php:1058, ../lib/functions/KcSeoOptions.php:1338
433
  msgid "Author Same As profile link"
434
  msgstr ""
435
 
436
- #: ../lib/functions/KcSeoOptions.php:628, ../lib/functions/KcSeoOptions.php:1342
437
  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"
438
  msgstr ""
439
 
440
- #: ../lib/functions/KcSeoOptions.php:631, ../lib/functions/KcSeoOptions.php:1083, ../lib/functions/KcSeoOptions.php:1345
441
  msgid "Review body"
442
  msgstr ""
443
 
444
- #: ../lib/functions/KcSeoOptions.php:634, ../lib/functions/KcSeoOptions.php:1086, ../lib/functions/KcSeoOptions.php:1348
445
  msgid "The actual body of the review."
446
  msgstr ""
447
 
448
- #: ../lib/functions/KcSeoOptions.php:637, ../lib/functions/KcSeoOptions.php:1102, ../lib/functions/KcSeoOptions.php:1351
449
  msgid "Date of Published"
450
  msgstr ""
451
 
452
- #: ../lib/functions/KcSeoOptions.php:643, ../lib/functions/KcSeoOptions.php:749, ../lib/functions/KcSeoOptions.php:1108, ../lib/functions/KcSeoOptions.php:1357
453
  msgid "Rating value"
454
  msgstr ""
455
 
456
- #: ../lib/functions/KcSeoOptions.php:646, ../lib/functions/KcSeoOptions.php:1111, ../lib/functions/KcSeoOptions.php:1202, ../lib/functions/KcSeoOptions.php:1360
457
  msgid "A numerical quality rating for the item."
458
  msgstr ""
459
 
460
- #: ../lib/functions/KcSeoOptions.php:649, ../lib/functions/KcSeoOptions.php:1114, ../lib/functions/KcSeoOptions.php:1363
461
  msgid "Best rating"
462
  msgstr ""
463
 
464
- #: ../lib/functions/KcSeoOptions.php:652, ../lib/functions/KcSeoOptions.php:1117, ../lib/functions/KcSeoOptions.php:1366
465
  msgid "The highest value allowed in this rating system."
466
  msgstr ""
467
 
468
- #: ../lib/functions/KcSeoOptions.php:655, ../lib/functions/KcSeoOptions.php:1120, ../lib/functions/KcSeoOptions.php:1369
469
  msgid "Worst rating"
470
  msgstr ""
471
 
472
- #: ../lib/functions/KcSeoOptions.php:658, ../lib/functions/KcSeoOptions.php:1123, ../lib/functions/KcSeoOptions.php:1372
473
  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."
474
  msgstr ""
475
 
476
- #: ../lib/functions/KcSeoOptions.php:664
477
  msgid "Product"
478
  msgstr ""
479
 
480
- #: ../lib/functions/KcSeoOptions.php:673
481
  msgid "The name of the product."
482
  msgstr ""
483
 
484
- #: ../lib/functions/KcSeoOptions.php:678
485
  msgid "The URL of a product photo. Pictures clearly showing the product, e.g. against a white background, are preferred."
486
  msgstr ""
487
 
488
- #: ../lib/functions/KcSeoOptions.php:683
489
  msgid "Product description. New line is not supported."
490
  msgstr ""
491
 
492
- #: ../lib/functions/KcSeoOptions.php:686
493
  msgid "SKU"
494
  msgstr ""
495
 
496
- #: ../lib/functions/KcSeoOptions.php:691
497
  msgid "Brand"
498
  msgstr ""
499
 
500
- #: ../lib/functions/KcSeoOptions.php:694
501
  msgid "The brand of the product."
502
  msgstr ""
503
 
504
- #: ../lib/functions/KcSeoOptions.php:697
505
  msgid "Identifier Type"
506
  msgstr ""
507
 
508
- #: ../lib/functions/KcSeoOptions.php:707
509
  msgid ""
510
  "<strong>MPN</strong><br>
511
  " &#8594; MPN(Manufacturer Part Number) Used globally, Alphanumeric digits (various lengths)<br>
@@ -516,519 +536,567 @@ msgid ""
516
  " &#8594; JAN(Japanese Article Number) Used only in Japan, 8 or 13 numeric digits."
517
  msgstr ""
518
 
519
- #: ../lib/functions/KcSeoOptions.php:716
520
  msgid "Identifier"
521
  msgstr ""
522
 
523
- #: ../lib/functions/KcSeoOptions.php:719
524
  msgid "Enter product unique identifier"
525
  msgstr ""
526
 
527
- #: ../lib/functions/KcSeoOptions.php:722
528
  msgid "Product Review & Rating"
529
  msgstr ""
530
 
531
- #: ../lib/functions/KcSeoOptions.php:726
532
  msgid "Review rating value"
533
  msgstr ""
534
 
535
- #: ../lib/functions/KcSeoOptions.php:730, ../lib/functions/KcSeoOptions.php:752
536
  msgid "Rating value. (1 , 2.5, 3, 5 etc)"
537
  msgstr ""
538
 
539
- #: ../lib/functions/KcSeoOptions.php:733
540
  msgid "Review Best rating"
541
  msgstr ""
542
 
543
- #: ../lib/functions/KcSeoOptions.php:739
544
  msgid "Review Worst rating"
545
  msgstr ""
546
 
547
- #: ../lib/functions/KcSeoOptions.php:745
548
  msgid "Review author"
549
  msgstr ""
550
 
551
- #: ../lib/functions/KcSeoOptions.php:755
552
  msgid "Total review count"
553
  msgstr ""
554
 
555
- #: ../lib/functions/KcSeoOptions.php:758
556
  msgid "Review rating value. <span class='required'>This is required if (Rating value) is given</span>"
557
  msgstr ""
558
 
559
- #: ../lib/functions/KcSeoOptions.php:761
560
  msgid "Product Pricing"
561
  msgstr ""
562
 
563
- #: ../lib/functions/KcSeoOptions.php:768
564
  msgid "The lowest available price, including service charges and fees, of this type of ticket."
565
  msgstr ""
566
 
567
- #: ../lib/functions/KcSeoOptions.php:771
568
  msgid "PriceValidUntil"
569
  msgstr ""
570
 
571
- #: ../lib/functions/KcSeoOptions.php:775
572
  msgid "The date (in ISO 8601 date and time format) after which the price will no longer be available."
573
  msgstr ""
574
 
575
- #: ../lib/functions/KcSeoOptions.php:780
576
  msgid "The 3-letter currency code."
577
  msgstr ""
578
 
579
- #: ../lib/functions/KcSeoOptions.php:796
580
  msgid "Select a availability type"
581
  msgstr ""
582
 
583
- #: ../lib/functions/KcSeoOptions.php:808
584
  msgid "Select a condition"
585
  msgstr ""
586
 
587
- #: ../lib/functions/KcSeoOptions.php:811
588
  msgid "Product URL"
589
  msgstr ""
590
 
591
- #: ../lib/functions/KcSeoOptions.php:813
592
  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.)"
593
  msgstr ""
594
 
595
- #: ../lib/functions/KcSeoOptions.php:828
596
  msgid "The title of the video"
597
  msgstr ""
598
 
599
- #: ../lib/functions/KcSeoOptions.php:834
600
  msgid "The description of the video. New line is not supported."
601
  msgstr ""
602
 
603
- #: ../lib/functions/KcSeoOptions.php:841
604
  msgid "A URL pointing to the video thumbnail image file. Images must be at least 160x90 pixels and at most 1920x1080 pixels."
605
  msgstr ""
606
 
607
- #: ../lib/functions/KcSeoOptions.php:844
608
  msgid "Updated date"
609
  msgstr ""
610
 
611
- #: ../lib/functions/KcSeoOptions.php:848
612
  msgid "2021-02-05T08:00:00+08:00"
613
  msgstr ""
614
 
615
- #: ../lib/functions/KcSeoOptions.php:853
616
  msgid "The duration of the video in ISO 8601 format.(PT1M33S)"
617
  msgstr ""
618
 
619
- #: ../lib/functions/KcSeoOptions.php:865
620
  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."
621
  msgstr ""
622
 
623
- #: ../lib/functions/KcSeoOptions.php:868
624
  msgid "Interaction count"
625
  msgstr ""
626
 
627
- #: ../lib/functions/KcSeoOptions.php:870
628
  msgid "The number of times the video has been viewed."
629
  msgstr ""
630
 
631
- #: ../lib/functions/KcSeoOptions.php:873
632
  msgid "Expires"
633
  msgstr ""
634
 
635
- #: ../lib/functions/KcSeoOptions.php:896
636
  msgid "The description of the audio. New line is not supported."
637
  msgstr ""
638
 
639
- #: ../lib/functions/KcSeoOptions.php:919
640
  msgid "Service"
641
  msgstr ""
642
 
643
- #: ../lib/functions/KcSeoOptions.php:928
644
  msgid "The name of the Service."
645
  msgstr ""
646
 
647
- #: ../lib/functions/KcSeoOptions.php:931
648
  msgid "Service type"
649
  msgstr ""
650
 
651
- #: ../lib/functions/KcSeoOptions.php:934
652
  msgid "The type of service being offered, e.g. veterans' benefits, emergency relief, etc."
653
  msgstr ""
654
 
655
- #: ../lib/functions/KcSeoOptions.php:940
656
  msgid "An additional type for the service, typically used for adding more specific types from external vocabularies in microdata syntax."
657
  msgstr ""
658
 
659
- #: ../lib/functions/KcSeoOptions.php:943
660
  msgid "Award"
661
  msgstr ""
662
 
663
- #: ../lib/functions/KcSeoOptions.php:945
664
  msgid "An award won by or for this service."
665
  msgstr ""
666
 
667
- #: ../lib/functions/KcSeoOptions.php:948
668
  msgid "Category"
669
  msgstr ""
670
 
671
- #: ../lib/functions/KcSeoOptions.php:950
672
  msgid "A category for the service."
673
  msgstr ""
674
 
675
- #: ../lib/functions/KcSeoOptions.php:953
676
  msgid "Provider mobility"
677
  msgstr ""
678
 
679
- #: ../lib/functions/KcSeoOptions.php:955
680
  msgid "Indicates the mobility of a provided service (e.g. 'static', 'dynamic')."
681
  msgstr ""
682
 
683
- #: ../lib/functions/KcSeoOptions.php:961
684
  msgid "A short description of the service. New line is not supported."
685
  msgstr ""
686
 
687
- #: ../lib/functions/KcSeoOptions.php:967
688
  msgid "An image of the service. This should be a URL."
689
  msgstr ""
690
 
691
- #: ../lib/functions/KcSeoOptions.php:973
692
  msgid "Indicates a page (or other CreativeWork) for which this thing is the main entity being described."
693
  msgstr ""
694
 
695
- #: ../lib/functions/KcSeoOptions.php:979
696
  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."
697
  msgstr ""
698
 
699
- #: ../lib/functions/KcSeoOptions.php:985
700
  msgid "URL of the service."
701
  msgstr ""
702
 
703
- #: ../lib/functions/KcSeoOptions.php:988
704
  msgid "Alternate name"
705
  msgstr ""
706
 
707
- #: ../lib/functions/KcSeoOptions.php:990
708
  msgid "An alias for the service."
709
  msgstr ""
710
 
711
- #: ../lib/functions/KcSeoOptions.php:996
712
  msgid "About"
713
  msgstr ""
714
 
715
- #: ../lib/functions/KcSeoOptions.php:1022, ../lib/functions/KcSeoOptions.php:1060
716
  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"
717
  msgstr ""
718
 
719
- #: ../lib/functions/KcSeoOptions.php:1028
720
  msgid "Contact"
721
  msgstr ""
722
 
723
- #: ../lib/functions/KcSeoOptions.php:1052
724
  msgid "Video URL"
725
  msgstr ""
726
 
727
- #: ../lib/functions/KcSeoOptions.php:1072
728
  msgid "Notice</span>"
729
  msgstr ""
730
 
731
- #: ../lib/functions/KcSeoOptions.php:1077
732
  msgid "Name of the reviewed item"
733
  msgstr ""
734
 
735
- #: ../lib/functions/KcSeoOptions.php:1080
736
  msgid "The item that is being reviewed."
737
  msgstr ""
738
 
739
- #: ../lib/functions/KcSeoOptions.php:1089
740
  msgid "Review name"
741
  msgstr ""
742
 
743
- #: ../lib/functions/KcSeoOptions.php:1092
744
  msgid "A particular name for the review."
745
  msgstr ""
746
 
747
- #: ../lib/functions/KcSeoOptions.php:1099
748
  msgid "The author of the review. The reviewer’s name needs to be a valid name."
749
  msgstr ""
750
 
751
- #: ../lib/functions/KcSeoOptions.php:1126
752
  msgid "Name of the organization"
753
  msgstr ""
754
 
755
- #: ../lib/functions/KcSeoOptions.php:1128
756
  msgid "The publisher of the review."
757
  msgstr ""
758
 
759
- #: ../lib/functions/KcSeoOptions.php:1134
760
  msgid "Aggregate Ratings"
761
  msgstr ""
762
 
763
- #: ../lib/functions/KcSeoOptions.php:1140
764
  msgid "Schema type"
765
  msgstr ""
766
 
767
- #: ../lib/functions/KcSeoOptions.php:1145
768
  msgid "Use the most appropriate schema type for what is being reviewed."
769
  msgstr ""
770
 
771
- #: ../lib/functions/KcSeoOptions.php:1148
772
  msgid "Name of the item"
773
  msgstr ""
774
 
775
- #: ../lib/functions/KcSeoOptions.php:1151
776
  msgid "The item that is being rated."
777
  msgstr ""
778
 
779
- #: ../lib/functions/KcSeoOptions.php:1164, ../lib/functions/KcSeoOptions.php:1299, ../lib/functions/KcSeoOptions.php:1520, ../lib/views/schema-options.php:118
780
  msgid "The price range of the business, for example $$$."
781
  msgstr ""
782
 
783
- #: ../lib/functions/KcSeoOptions.php:1181
784
  msgid "Description for thr review. New line is not supported."
785
  msgstr ""
786
 
787
- #: ../lib/functions/KcSeoOptions.php:1184
788
  msgid "Rating Count"
789
  msgstr ""
790
 
791
- #: ../lib/functions/KcSeoOptions.php:1188
792
  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>"
793
  msgstr ""
794
 
795
- #: ../lib/functions/KcSeoOptions.php:1191
796
  msgid "Review Count"
797
  msgstr ""
798
 
799
- #: ../lib/functions/KcSeoOptions.php:1195
800
  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."
801
  msgstr ""
802
 
803
- #: ../lib/functions/KcSeoOptions.php:1198
804
  msgid "Rating Value"
805
  msgstr ""
806
 
807
- #: ../lib/functions/KcSeoOptions.php:1205
808
  msgid "Best Rating"
809
  msgstr ""
810
 
811
- #: ../lib/functions/KcSeoOptions.php:1209
812
  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."
813
  msgstr ""
814
 
815
- #: ../lib/functions/KcSeoOptions.php:1212
816
  msgid "Worst Rating"
817
  msgstr ""
818
 
819
- #: ../lib/functions/KcSeoOptions.php:1216
820
  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."
821
  msgstr ""
822
 
823
- #: ../lib/functions/KcSeoOptions.php:1222
824
  msgid "Restaurant"
825
  msgstr ""
826
 
827
- #: ../lib/functions/KcSeoOptions.php:1228
828
  msgid "Name of the Restaurant"
829
  msgstr ""
830
 
831
- #: ../lib/functions/KcSeoOptions.php:1233
832
  msgid "Description of the Restaurant"
833
  msgstr ""
834
 
835
- #: ../lib/functions/KcSeoOptions.php:1235, ../lib/functions/KcSeoOptions.php:1288
836
  msgid "New line is not supported."
837
  msgstr ""
838
 
839
- #: ../lib/functions/KcSeoOptions.php:1238
840
  msgid "Opening Hours"
841
  msgstr ""
842
 
843
- #: ../lib/functions/KcSeoOptions.php:1240
844
  msgid "Mo,Tu,We,Th,Fr,Sa,Su 11:30-23:00"
845
  msgstr ""
846
 
847
- #: ../lib/functions/KcSeoOptions.php:1243, ../lib/functions/KcSeoOptions.php:1320
848
  msgid "Telephone"
849
  msgstr ""
850
 
851
- #: ../lib/functions/KcSeoOptions.php:1245
852
  msgid "+155501003333"
853
  msgstr ""
854
 
855
- #: ../lib/functions/KcSeoOptions.php:1248
856
  msgid "Menu"
857
  msgstr ""
858
 
859
- #: ../lib/functions/KcSeoOptions.php:1250
860
  msgid "http://example.com/menu"
861
  msgstr ""
862
 
863
- #: ../lib/functions/KcSeoOptions.php:1258, ../lib/views/schema-options.php:270
864
  msgid "Address"
865
  msgstr ""
866
 
867
- #: ../lib/functions/KcSeoOptions.php:1262, ../lib/functions/KcSeoOptions.php:1296, ../lib/views/schema-options.php:113
868
  msgid "Price Range"
869
  msgstr ""
870
 
871
- #: ../lib/functions/KcSeoOptions.php:1264
872
  msgid "The price range of the business, for example $$$"
873
  msgstr ""
874
 
875
- #: ../lib/functions/KcSeoOptions.php:1267
876
  msgid "Serves Cuisine"
877
  msgstr ""
878
 
879
- #: ../lib/functions/KcSeoOptions.php:1269, ../lib/views/schema-options.php:159
880
  msgid "The cuisine of the restaurant."
881
  msgstr ""
882
 
883
- #: ../lib/functions/KcSeoOptions.php:1275
884
  msgid "Local Business"
885
  msgstr ""
886
 
887
- #: ../lib/functions/KcSeoOptions.php:1291
888
  msgid "Business Logo"
889
  msgstr ""
890
 
891
- #: ../lib/functions/KcSeoOptions.php:1302
892
  msgid "Address locality"
893
  msgstr ""
894
 
895
- #: ../lib/functions/KcSeoOptions.php:1304
896
  msgid "City (i.e Kansas city)"
897
  msgstr ""
898
 
899
- #: ../lib/functions/KcSeoOptions.php:1307
900
  msgid "Address region"
901
  msgstr ""
902
 
903
- #: ../lib/functions/KcSeoOptions.php:1309
904
  msgid "State (i.e. MO)"
905
  msgstr ""
906
 
907
- #: ../lib/functions/KcSeoOptions.php:1312
908
  msgid "Postal code"
909
  msgstr ""
910
 
911
- #: ../lib/functions/KcSeoOptions.php:1316
912
  msgid "Street address"
913
  msgstr ""
914
 
915
- #: ../lib/functions/KcSeoOptions.php:1378
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
916
  msgid "Book"
917
  msgstr ""
918
 
919
- #: ../lib/functions/KcSeoOptions.php:1382
920
  msgid "Course"
921
  msgstr ""
922
 
923
- #: ../lib/functions/KcSeoOptions.php:1386
924
  msgid "Job Posting"
925
  msgstr ""
926
 
927
- #: ../lib/functions/KcSeoOptions.php:1390
928
  msgid "Movie"
929
  msgstr ""
930
 
931
- #: ../lib/functions/KcSeoOptions.php:1402
932
  msgid "TVEpisode"
933
  msgstr ""
934
 
935
- #: ../lib/functions/KcSeoOptions.php:1413
936
  msgid "Special Announcement"
937
  msgstr ""
938
 
939
- #: ../lib/functions/KcSeoOptions.php:1421
940
  msgid "SpecialAnnouncement.name: Name of the announcement. This text should be present on the underlying page."
941
  msgstr ""
942
 
943
- #: ../lib/functions/KcSeoOptions.php:1427
944
  msgid "SpecialAnnouncement.url: URL of the page containing the announcements. If present, this must match the URL of the page containing the information."
945
  msgstr ""
946
 
947
- #: ../lib/functions/KcSeoOptions.php:1438
948
  msgid "Expires date"
949
  msgstr ""
950
 
951
- #: ../lib/functions/KcSeoOptions.php:1445
952
  msgid "Text"
953
  msgstr ""
954
 
955
- #: ../lib/functions/KcSeoOptions.php:1447
956
  msgid "SpecialAnnouncement.text: Text of the announcements."
957
  msgstr ""
958
 
959
- #: ../lib/functions/KcSeoOptions.php:1451
960
  msgid "Announcement Locations"
961
  msgstr ""
962
 
963
- #: ../lib/functions/KcSeoOptions.php:1457
964
  msgid "Announcement Location"
965
  msgstr ""
966
 
967
- #: ../lib/functions/KcSeoOptions.php:1460
968
  msgid "Type"
969
  msgstr ""
970
 
971
- #: ../lib/functions/KcSeoOptions.php:1468
972
  msgid "SpecialAnnouncement.announcementLocation.name: "
973
  msgstr ""
974
 
975
- #: ../lib/functions/KcSeoOptions.php:1475
976
  msgid "SpecialAnnouncement.announcementLocation.url: URL"
977
  msgstr ""
978
 
979
- #: ../lib/functions/KcSeoOptions.php:1478
980
  msgid "Address: Street"
981
  msgstr ""
982
 
983
- #: ../lib/functions/KcSeoOptions.php:1480
984
  msgid "SpecialAnnouncement.announcementLocation.address.streetAddress: The street address. For example, 1600 Amphitheatre Pkwy."
985
  msgstr ""
986
 
987
- #: ../lib/functions/KcSeoOptions.php:1484
988
  msgid "Address: Locality"
989
  msgstr ""
990
 
991
- #: ../lib/functions/KcSeoOptions.php:1486
992
  msgid "SpecialAnnouncement.announcementLocation.address.addressLocality: The locality in which the street address is, and which is in the region. For example, Mountain View."
993
  msgstr ""
994
 
995
- #: ../lib/functions/KcSeoOptions.php:1490
996
  msgid "Address: Post Code"
997
  msgstr ""
998
 
999
- #: ../lib/functions/KcSeoOptions.php:1492
1000
  msgid "SpecialAnnouncement.announcementLocation.address.postalCode: The postal code. For example, 94043."
1001
  msgstr ""
1002
 
1003
- #: ../lib/functions/KcSeoOptions.php:1496
1004
  msgid "Address: Region"
1005
  msgstr ""
1006
 
1007
- #: ../lib/functions/KcSeoOptions.php:1498
1008
  msgid "SpecialAnnouncement.announcementLocation.address.addressRegion: The region in which the locality is, and which is in the country. For example, California."
1009
  msgstr ""
1010
 
1011
- #: ../lib/functions/KcSeoOptions.php:1502
1012
  msgid "Address: Country"
1013
  msgstr ""
1014
 
1015
- #: ../lib/functions/KcSeoOptions.php:1504
1016
  msgid "SpecialAnnouncement.announcementLocation.address.addressCountry: The country. For example, USA. You can also provide the two-letter ISO 3166-1 alpha-2 country code."
1017
  msgstr ""
1018
 
1019
- #: ../lib/functions/KcSeoOptions.php:1508
1020
  msgid "ID"
1021
  msgstr ""
1022
 
1023
- #: ../lib/functions/KcSeoOptions.php:1510
1024
  msgid "SpecialAnnouncement.announcementLocation.@id: An optional unique identifier so that you can reference pre-existing structured data for this location."
1025
  msgstr ""
1026
 
1027
- #: ../lib/models/KcSeoSchemaModel.php:1031
1028
  msgid "Required"
1029
  msgstr ""
1030
 
1031
- #: ../lib/models/KcSeoSchemaModel.php:1032
1032
  msgid "Recommended"
1033
  msgstr ""
1034
 
57
  msgid "Movies"
58
  msgstr ""
59
 
60
+ #: ../lib/classes/KcSeoHelper.php:492, ../lib/functions/KcSeoOptions.php:1674
61
  msgid "Music"
62
  msgstr ""
63
 
64
+ #: ../lib/classes/KcSeoHelper.php:493, ../lib/functions/KcSeoOptions.php:1678
65
  msgid "Recipe"
66
  msgstr ""
67
 
69
  msgid "TV Episode"
70
  msgstr ""
71
 
72
+ #: ../lib/classes/KcSeoHelper.php:495, ../lib/functions/KcSeoOptions.php:1686
73
  msgid "QAPage"
74
  msgstr ""
75
 
76
+ #: ../lib/classes/KcSeoHelper.php:496, ../lib/functions/KcSeoOptions.php:1690
77
  msgid "Item List"
78
  msgstr ""
79
 
133
  msgid "Article"
134
  msgstr ""
135
 
136
+ #: ../lib/functions/KcSeoOptions.php:21, ../lib/functions/KcSeoOptions.php:180, ../lib/functions/KcSeoOptions.php:279, ../lib/functions/KcSeoOptions.php:433, ../lib/functions/KcSeoOptions.php:1483
137
  msgid "Headline"
138
  msgstr ""
139
 
140
+ #: ../lib/functions/KcSeoOptions.php:23, ../lib/functions/KcSeoOptions.php:182, ../lib/functions/KcSeoOptions.php:265, ../lib/functions/KcSeoOptions.php:435
141
  msgid "Article title"
142
  msgstr ""
143
 
144
+ #: ../lib/functions/KcSeoOptions.php:27, ../lib/functions/KcSeoOptions.php:187, ../lib/functions/KcSeoOptions.php:285, ../lib/functions/KcSeoOptions.php:439, ../lib/functions/KcSeoOptions.php:1705
145
  msgid "Page URL"
146
  msgstr ""
147
 
148
+ #: ../lib/functions/KcSeoOptions.php:29, ../lib/functions/KcSeoOptions.php:189, ../lib/functions/KcSeoOptions.php:287, ../lib/functions/KcSeoOptions.php:441
149
  msgid "The canonical URL of the article page"
150
  msgstr ""
151
 
152
+ #: ../lib/functions/KcSeoOptions.php:33, ../lib/functions/KcSeoOptions.php:203, ../lib/functions/KcSeoOptions.php:1598
153
  msgid "Author Name"
154
  msgstr ""
155
 
156
+ #: ../lib/functions/KcSeoOptions.php:35, ../lib/functions/KcSeoOptions.php:205, ../lib/functions/KcSeoOptions.php:293, ../lib/functions/KcSeoOptions.php:447, ../lib/functions/KcSeoOptions.php:1600
157
  msgid "Author display name"
158
  msgstr ""
159
 
160
+ #: ../lib/functions/KcSeoOptions.php:39, ../lib/functions/KcSeoOptions.php:209, ../lib/functions/KcSeoOptions.php:297, ../lib/functions/KcSeoOptions.php:451, ../lib/functions/KcSeoOptions.php:1604
161
  msgid "Author URL"
162
  msgstr ""
163
 
164
+ #: ../lib/functions/KcSeoOptions.php:45, ../lib/functions/KcSeoOptions.php:220
165
  msgid "Article Feature Image"
166
  msgstr ""
167
 
168
+ #: ../lib/functions/KcSeoOptions.php:48, ../lib/functions/KcSeoOptions.php:223
169
  msgid "Images should be at least 696 pixels wide.<br>Images should be in .jpg, .png, or. gif format."
170
  msgstr ""
171
 
172
+ #: ../lib/functions/KcSeoOptions.php:51, ../lib/functions/KcSeoOptions.php:226, ../lib/functions/KcSeoOptions.php:309, ../lib/functions/KcSeoOptions.php:463, ../lib/functions/KcSeoOptions.php:1505, ../lib/functions/KcSeoOptions.php:1621, ../lib/functions/KcSeoOptions.php:1711
173
  msgid "Published date"
174
  msgstr ""
175
 
176
+ #: ../lib/functions/KcSeoOptions.php:55, ../lib/functions/KcSeoOptions.php:62, ../lib/functions/KcSeoOptions.php:230, ../lib/functions/KcSeoOptions.php:237, ../lib/functions/KcSeoOptions.php:312, ../lib/functions/KcSeoOptions.php:319, ../lib/functions/KcSeoOptions.php:466, ../lib/functions/KcSeoOptions.php:474, ../lib/functions/KcSeoOptions.php:739, ../lib/functions/KcSeoOptions.php:975, ../lib/functions/KcSeoOptions.php:1204, ../lib/functions/KcSeoOptions.php:1453, ../lib/functions/KcSeoOptions.php:1508, ../lib/functions/KcSeoOptions.php:1514, ../lib/functions/KcSeoOptions.php:1618, ../lib/functions/KcSeoOptions.php:1624, ../lib/functions/KcSeoOptions.php:1630, ../lib/functions/KcSeoOptions.php:1714, ../lib/functions/KcSeoOptions.php:1721
177
  msgid "Like this: 2021-12-25 14:20:00"
178
  msgstr ""
179
 
180
+ #: ../lib/functions/KcSeoOptions.php:58, ../lib/functions/KcSeoOptions.php:233, ../lib/functions/KcSeoOptions.php:316, ../lib/functions/KcSeoOptions.php:470, ../lib/functions/KcSeoOptions.php:1511, ../lib/functions/KcSeoOptions.php:1627
181
  msgid "Modified date"
182
  msgstr ""
183
 
184
+ #: ../lib/functions/KcSeoOptions.php:65, ../lib/functions/KcSeoOptions.php:240, ../lib/functions/KcSeoOptions.php:323, ../lib/functions/KcSeoOptions.php:477, ../lib/functions/KcSeoOptions.php:1517, ../lib/functions/KcSeoOptions.php:1633
185
  msgid "Publisher"
186
  msgstr ""
187
 
188
+ #: ../lib/functions/KcSeoOptions.php:67, ../lib/functions/KcSeoOptions.php:242, ../lib/functions/KcSeoOptions.php:325, ../lib/functions/KcSeoOptions.php:479, ../lib/functions/KcSeoOptions.php:1519, ../lib/functions/KcSeoOptions.php:1635
189
  msgid "Publisher name or Organization name"
190
  msgstr ""
191
 
192
+ #: ../lib/functions/KcSeoOptions.php:71, ../lib/functions/KcSeoOptions.php:246, ../lib/functions/KcSeoOptions.php:329, ../lib/functions/KcSeoOptions.php:483, ../lib/functions/KcSeoOptions.php:1522, ../lib/functions/KcSeoOptions.php:1638, ../lib/views/settings.php:86
193
  msgid "Publisher Logo"
194
  msgstr ""
195
 
196
+ #: ../lib/functions/KcSeoOptions.php:73, ../lib/functions/KcSeoOptions.php:248, ../lib/functions/KcSeoOptions.php:331, ../lib/functions/KcSeoOptions.php:485, ../lib/functions/KcSeoOptions.php:1524, ../lib/functions/KcSeoOptions.php:1640
197
  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>"
198
  msgstr ""
199
 
200
+ #: ../lib/functions/KcSeoOptions.php:77, ../lib/functions/KcSeoOptions.php:105, ../lib/functions/KcSeoOptions.php:149, ../lib/functions/KcSeoOptions.php:252, ../lib/functions/KcSeoOptions.php:335, ../lib/functions/KcSeoOptions.php:358, ../lib/functions/KcSeoOptions.php:402, ../lib/functions/KcSeoOptions.php:489, ../lib/functions/KcSeoOptions.php:512, ../lib/functions/KcSeoOptions.php:556, ../lib/functions/KcSeoOptions.php:619, ../lib/functions/KcSeoOptions.php:780, ../lib/functions/KcSeoOptions.php:930, ../lib/functions/KcSeoOptions.php:993, ../lib/functions/KcSeoOptions.php:1107, ../lib/functions/KcSeoOptions.php:1139, ../lib/functions/KcSeoOptions.php:1278, ../lib/functions/KcSeoOptions.php:1385, ../lib/functions/KcSeoOptions.php:1543, ../lib/functions/KcSeoOptions.php:1573, ../lib/views/schema-options.php:170, ../lib/views/schema-options.php:255
201
  msgid "Description"
202
  msgstr ""
203
 
204
+ #: ../lib/functions/KcSeoOptions.php:79, ../lib/functions/KcSeoOptions.php:217, ../lib/functions/KcSeoOptions.php:254, ../lib/functions/KcSeoOptions.php:337, ../lib/functions/KcSeoOptions.php:491, ../lib/functions/KcSeoOptions.php:1545, ../lib/functions/KcSeoOptions.php:1575, ../lib/functions/KcSeoOptions.php:1612
205
  msgid "Short description. New line is not supported."
206
  msgstr ""
207
 
208
+ #: ../lib/functions/KcSeoOptions.php:82, ../lib/functions/KcSeoOptions.php:258, ../lib/functions/KcSeoOptions.php:340, ../lib/functions/KcSeoOptions.php:494
209
  msgid "Article body"
210
  msgstr ""
211
 
212
+ #: ../lib/functions/KcSeoOptions.php:84, ../lib/functions/KcSeoOptions.php:260, ../lib/functions/KcSeoOptions.php:342
213
  msgid "Article content"
214
  msgstr ""
215
 
221
  msgid "A secondary headline for the article."
222
  msgstr ""
223
 
224
+ #: ../lib/functions/KcSeoOptions.php:92, ../lib/functions/KcSeoOptions.php:97, ../lib/functions/KcSeoOptions.php:345, ../lib/functions/KcSeoOptions.php:350, ../lib/functions/KcSeoOptions.php:499, ../lib/functions/KcSeoOptions.php:504, ../lib/functions/KcSeoOptions.php:918
225
  msgid "Video"
226
  msgstr ""
227
 
228
+ #: ../lib/functions/KcSeoOptions.php:101, ../lib/functions/KcSeoOptions.php:144, ../lib/functions/KcSeoOptions.php:354, ../lib/functions/KcSeoOptions.php:397, ../lib/functions/KcSeoOptions.php:508, ../lib/functions/KcSeoOptions.php:551, ../lib/functions/KcSeoOptions.php:587, ../lib/functions/KcSeoOptions.php:769, ../lib/functions/KcSeoOptions.php:924, ../lib/functions/KcSeoOptions.php:987, ../lib/functions/KcSeoOptions.php:1024, ../lib/functions/KcSeoOptions.php:1102, ../lib/functions/KcSeoOptions.php:1134, ../lib/functions/KcSeoOptions.php:1380, ../lib/functions/KcSeoOptions.php:1562, ../lib/functions/KcSeoOptions.php:1699, ../lib/functions/KcSeoOptions.php:1746, ../lib/views/schema-options.php:224
229
  msgid "Name"
230
  msgstr ""
231
 
232
+ #: ../lib/functions/KcSeoOptions.php:109, ../lib/functions/KcSeoOptions.php:362, ../lib/functions/KcSeoOptions.php:457, ../lib/functions/KcSeoOptions.php:516, ../lib/functions/KcSeoOptions.php:775, ../lib/functions/KcSeoOptions.php:1111, ../lib/functions/KcSeoOptions.php:1143, ../lib/functions/KcSeoOptions.php:1352, ../lib/functions/KcSeoOptions.php:1499, ../lib/functions/KcSeoOptions.php:1583, ../lib/functions/KcSeoOptions.php:1793, ../lib/views/schema-options.php:247
233
  msgid "Image"
234
  msgstr ""
235
 
236
+ #: ../lib/functions/KcSeoOptions.php:113, ../lib/functions/KcSeoOptions.php:159, ../lib/functions/KcSeoOptions.php:366, ../lib/functions/KcSeoOptions.php:412, ../lib/functions/KcSeoOptions.php:520, ../lib/functions/KcSeoOptions.php:566
237
  msgid "Content URL"
238
  msgstr ""
239
 
240
+ #: ../lib/functions/KcSeoOptions.php:117, ../lib/functions/KcSeoOptions.php:370, ../lib/functions/KcSeoOptions.php:524
241
  msgid "Embed URL"
242
  msgstr ""
243
 
244
+ #: ../lib/functions/KcSeoOptions.php:118, ../lib/functions/KcSeoOptions.php:371, ../lib/functions/KcSeoOptions.php:525, ../lib/functions/KcSeoOptions.php:958, ../lib/functions/KcSeoOptions.php:1153
245
  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."
246
  msgstr ""
247
 
248
+ #: ../lib/functions/KcSeoOptions.php:122, ../lib/functions/KcSeoOptions.php:375, ../lib/functions/KcSeoOptions.php:529
249
  msgid "Upload date"
250
  msgstr ""
251
 
252
+ #: ../lib/functions/KcSeoOptions.php:125, ../lib/functions/KcSeoOptions.php:378, ../lib/functions/KcSeoOptions.php:532
253
  msgid "Like this: 2021-08-25 14:20:00"
254
  msgstr ""
255
 
256
+ #: ../lib/functions/KcSeoOptions.php:129, ../lib/functions/KcSeoOptions.php:154, ../lib/functions/KcSeoOptions.php:382, ../lib/functions/KcSeoOptions.php:407, ../lib/functions/KcSeoOptions.php:536, ../lib/functions/KcSeoOptions.php:561, ../lib/functions/KcSeoOptions.php:950, ../lib/functions/KcSeoOptions.php:1005
257
  msgid "Duration"
258
  msgstr ""
259
 
260
+ #: ../lib/functions/KcSeoOptions.php:130, ../lib/functions/KcSeoOptions.php:383, ../lib/functions/KcSeoOptions.php:537
261
  msgid "Runtime of the movie in ISO 8601 format (for example, \"PT2H22M\" (142 minutes))."
262
  msgstr ""
263
 
264
+ #: ../lib/functions/KcSeoOptions.php:135, ../lib/functions/KcSeoOptions.php:140, ../lib/functions/KcSeoOptions.php:388, ../lib/functions/KcSeoOptions.php:393, ../lib/functions/KcSeoOptions.php:542, ../lib/functions/KcSeoOptions.php:547, ../lib/functions/KcSeoOptions.php:981
265
  msgid "Audio"
266
  msgstr ""
267
 
268
+ #: ../lib/functions/KcSeoOptions.php:145, ../lib/functions/KcSeoOptions.php:398, ../lib/functions/KcSeoOptions.php:552, ../lib/functions/KcSeoOptions.php:990
269
  msgid "The title of the audio"
270
  msgstr ""
271
 
272
+ #: ../lib/functions/KcSeoOptions.php:150, ../lib/functions/KcSeoOptions.php:403, ../lib/functions/KcSeoOptions.php:557
273
  msgid "The short description of the audio"
274
  msgstr ""
275
 
276
+ #: ../lib/functions/KcSeoOptions.php:155, ../lib/functions/KcSeoOptions.php:408, ../lib/functions/KcSeoOptions.php:562, ../lib/functions/KcSeoOptions.php:1007
277
  msgid "The duration of the audio in ISO 8601 format.(PT1M33S)"
278
  msgstr ""
279
 
280
+ #: ../lib/functions/KcSeoOptions.php:160, ../lib/functions/KcSeoOptions.php:413, ../lib/functions/KcSeoOptions.php:567, ../lib/functions/KcSeoOptions.php:1115, ../lib/functions/KcSeoOptions.php:1147, ../lib/functions/KcSeoOptions.php:1152, ../lib/functions/KcSeoOptions.php:1752
281
  msgid "URL"
282
  msgstr ""
283
 
284
+ #: ../lib/functions/KcSeoOptions.php:161, ../lib/functions/KcSeoOptions.php:414, ../lib/functions/KcSeoOptions.php:568, ../lib/functions/KcSeoOptions.php:1002
285
  msgid "A URL pointing to the actual audio media file. This file should be in .mp3, .wav, .mpc or other audio file format."
286
  msgstr ""
287
 
288
+ #: ../lib/functions/KcSeoOptions.php:165, ../lib/functions/KcSeoOptions.php:418, ../lib/functions/KcSeoOptions.php:572, ../lib/functions/KcSeoOptions.php:1011
289
  msgid "Encoding Format"
290
  msgstr ""
291
 
292
+ #: ../lib/functions/KcSeoOptions.php:166, ../lib/functions/KcSeoOptions.php:419, ../lib/functions/KcSeoOptions.php:573, ../lib/functions/KcSeoOptions.php:1012
293
  msgid "The encoding format of audio like: 'audio/mpeg'"
294
  msgstr ""
295
 
296
  #: ../lib/functions/KcSeoOptions.php:174
297
+ msgid "Tech Article"
298
+ msgstr ""
299
+
300
+ #: ../lib/functions/KcSeoOptions.php:193, ../lib/functions/KcSeoOptions.php:1588
301
+ msgid "Author Type"
302
+ msgstr ""
303
+
304
+ #: ../lib/functions/KcSeoOptions.php:196, ../lib/functions/KcSeoOptions.php:1591
305
+ msgid "Select one"
306
+ msgstr ""
307
+
308
+ #: ../lib/functions/KcSeoOptions.php:215, ../lib/functions/KcSeoOptions.php:1610
309
+ msgid "Author Description"
310
+ msgstr ""
311
+
312
+ #: ../lib/functions/KcSeoOptions.php:263, ../lib/functions/KcSeoOptions.php:1548, ../lib/functions/KcSeoOptions.php:1649
313
+ msgid "Keywords"
314
+ msgstr ""
315
+
316
+ #: ../lib/functions/KcSeoOptions.php:273
317
  msgid "Blog Posting"
318
  msgstr ""
319
 
320
+ #: ../lib/functions/KcSeoOptions.php:281
321
  msgid "Blog posting title"
322
  msgstr ""
323
 
324
+ #: ../lib/functions/KcSeoOptions.php:291
325
  msgid "Author name"
326
  msgstr ""
327
 
328
+ #: ../lib/functions/KcSeoOptions.php:303
329
  msgid "Feature Image"
330
  msgstr ""
331
 
332
+ #: ../lib/functions/KcSeoOptions.php:305, ../lib/functions/KcSeoOptions.php:459
333
  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."
334
  msgstr ""
335
 
336
+ #: ../lib/functions/KcSeoOptions.php:427
337
  msgid "News Article"
338
  msgstr ""
339
 
340
+ #: ../lib/functions/KcSeoOptions.php:445, ../lib/functions/KcSeoOptions.php:718, ../lib/functions/KcSeoOptions.php:1194, ../lib/functions/KcSeoOptions.php:1432
341
  msgid "Author"
342
  msgstr ""
343
 
344
+ #: ../lib/functions/KcSeoOptions.php:496
345
  msgid "Article body content. New line is not supported."
346
  msgstr ""
347
 
348
+ #: ../lib/functions/KcSeoOptions.php:581
349
  msgid "Event"
350
  msgstr ""
351
 
352
+ #: ../lib/functions/KcSeoOptions.php:590
353
  msgid "The name of the event."
354
  msgstr ""
355
 
356
+ #: ../lib/functions/KcSeoOptions.php:593
357
  msgid "Location name"
358
  msgstr ""
359
 
360
+ #: ../lib/functions/KcSeoOptions.php:596
361
  msgid "Event Location name"
362
  msgstr ""
363
 
364
+ #: ../lib/functions/KcSeoOptions.php:599
365
  msgid "Location address"
366
  msgstr ""
367
 
368
+ #: ../lib/functions/KcSeoOptions.php:602
369
  msgid "The location of for example where the event is happening, an organization is located, or where an action takes place."
370
  msgstr ""
371
 
372
+ #: ../lib/functions/KcSeoOptions.php:605
373
  msgid "Start date"
374
  msgstr ""
375
 
376
+ #: ../lib/functions/KcSeoOptions.php:609
377
  msgid "Event start date Like : 2017-10-16 4:00 AM"
378
  msgstr ""
379
 
380
+ #: ../lib/functions/KcSeoOptions.php:612
381
  msgid "End date"
382
  msgstr ""
383
 
384
+ #: ../lib/functions/KcSeoOptions.php:616
385
  msgid "Event end date Like : 2017-10-16 4:00 AM"
386
  msgstr ""
387
 
388
+ #: ../lib/functions/KcSeoOptions.php:622
389
  msgid "Event description. New line is not supported."
390
  msgstr ""
391
 
392
+ #: ../lib/functions/KcSeoOptions.php:625
393
  msgid "Organizer"
394
  msgstr ""
395
 
396
+ #: ../lib/functions/KcSeoOptions.php:628
397
  msgid "The Organizer."
398
  msgstr ""
399
 
400
+ #: ../lib/functions/KcSeoOptions.php:631, ../lib/functions/KcSeoOptions.php:634
401
  msgid "Organizer URL"
402
  msgstr ""
403
 
404
+ #: ../lib/functions/KcSeoOptions.php:637
405
  msgid "Performer Name"
406
  msgstr ""
407
 
408
+ #: ../lib/functions/KcSeoOptions.php:640
409
  msgid "The performer's name."
410
  msgstr ""
411
 
412
+ #: ../lib/functions/KcSeoOptions.php:667
413
  msgid "Image URL"
414
  msgstr ""
415
 
416
+ #: ../lib/functions/KcSeoOptions.php:670
417
  msgid "URL of an image or logo for the event or tour"
418
  msgstr ""
419
 
420
+ #: ../lib/functions/KcSeoOptions.php:673, ../lib/functions/KcSeoOptions.php:864
421
  msgid "Price"
422
  msgstr ""
423
 
424
+ #: ../lib/functions/KcSeoOptions.php:677
425
  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>"
426
  msgstr ""
427
 
428
+ #: ../lib/functions/KcSeoOptions.php:680, ../lib/functions/KcSeoOptions.php:877
429
  msgid "Price currency"
430
  msgstr ""
431
 
432
+ #: ../lib/functions/KcSeoOptions.php:682
433
  msgid "The 3-letter currency code. (USD)"
434
  msgstr ""
435
 
436
+ #: ../lib/functions/KcSeoOptions.php:696
437
  msgid "Valid From"
438
  msgstr ""
439
 
440
+ #: ../lib/functions/KcSeoOptions.php:707
441
  msgid "A link to the event's details page. <span class='required'>Not required but (Recommended)</span>"
442
  msgstr ""
443
 
444
+ #: ../lib/functions/KcSeoOptions.php:710, ../lib/functions/KcSeoOptions.php:1165, ../lib/functions/KcSeoOptions.php:1424
445
  msgid "Review"
446
  msgstr ""
447
 
448
+ #: ../lib/functions/KcSeoOptions.php:712, ../lib/functions/KcSeoOptions.php:1426
449
  msgid "To add review schema for this type, complete fields below and enable, others live blank."
450
  msgstr ""
451
 
452
+ #: ../lib/functions/KcSeoOptions.php:723, ../lib/functions/KcSeoOptions.php:1119, ../lib/functions/KcSeoOptions.php:1157, ../lib/functions/KcSeoOptions.php:1437
453
  msgid "Author Same As profile link"
454
  msgstr ""
455
 
456
+ #: ../lib/functions/KcSeoOptions.php:727, ../lib/functions/KcSeoOptions.php:1441
457
  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"
458
  msgstr ""
459
 
460
+ #: ../lib/functions/KcSeoOptions.php:730, ../lib/functions/KcSeoOptions.php:1182, ../lib/functions/KcSeoOptions.php:1444
461
  msgid "Review body"
462
  msgstr ""
463
 
464
+ #: ../lib/functions/KcSeoOptions.php:733, ../lib/functions/KcSeoOptions.php:1185, ../lib/functions/KcSeoOptions.php:1447
465
  msgid "The actual body of the review."
466
  msgstr ""
467
 
468
+ #: ../lib/functions/KcSeoOptions.php:736, ../lib/functions/KcSeoOptions.php:1201, ../lib/functions/KcSeoOptions.php:1450
469
  msgid "Date of Published"
470
  msgstr ""
471
 
472
+ #: ../lib/functions/KcSeoOptions.php:742, ../lib/functions/KcSeoOptions.php:848, ../lib/functions/KcSeoOptions.php:1207, ../lib/functions/KcSeoOptions.php:1456
473
  msgid "Rating value"
474
  msgstr ""
475
 
476
+ #: ../lib/functions/KcSeoOptions.php:745, ../lib/functions/KcSeoOptions.php:1210, ../lib/functions/KcSeoOptions.php:1301, ../lib/functions/KcSeoOptions.php:1459
477
  msgid "A numerical quality rating for the item."
478
  msgstr ""
479
 
480
+ #: ../lib/functions/KcSeoOptions.php:748, ../lib/functions/KcSeoOptions.php:1213, ../lib/functions/KcSeoOptions.php:1462
481
  msgid "Best rating"
482
  msgstr ""
483
 
484
+ #: ../lib/functions/KcSeoOptions.php:751, ../lib/functions/KcSeoOptions.php:1216, ../lib/functions/KcSeoOptions.php:1465
485
  msgid "The highest value allowed in this rating system."
486
  msgstr ""
487
 
488
+ #: ../lib/functions/KcSeoOptions.php:754, ../lib/functions/KcSeoOptions.php:1219, ../lib/functions/KcSeoOptions.php:1468
489
  msgid "Worst rating"
490
  msgstr ""
491
 
492
+ #: ../lib/functions/KcSeoOptions.php:757, ../lib/functions/KcSeoOptions.php:1222, ../lib/functions/KcSeoOptions.php:1471
493
  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."
494
  msgstr ""
495
 
496
+ #: ../lib/functions/KcSeoOptions.php:763
497
  msgid "Product"
498
  msgstr ""
499
 
500
+ #: ../lib/functions/KcSeoOptions.php:772
501
  msgid "The name of the product."
502
  msgstr ""
503
 
504
+ #: ../lib/functions/KcSeoOptions.php:777
505
  msgid "The URL of a product photo. Pictures clearly showing the product, e.g. against a white background, are preferred."
506
  msgstr ""
507
 
508
+ #: ../lib/functions/KcSeoOptions.php:782
509
  msgid "Product description. New line is not supported."
510
  msgstr ""
511
 
512
+ #: ../lib/functions/KcSeoOptions.php:785
513
  msgid "SKU"
514
  msgstr ""
515
 
516
+ #: ../lib/functions/KcSeoOptions.php:790
517
  msgid "Brand"
518
  msgstr ""
519
 
520
+ #: ../lib/functions/KcSeoOptions.php:793
521
  msgid "The brand of the product."
522
  msgstr ""
523
 
524
+ #: ../lib/functions/KcSeoOptions.php:796
525
  msgid "Identifier Type"
526
  msgstr ""
527
 
528
+ #: ../lib/functions/KcSeoOptions.php:806
529
  msgid ""
530
  "<strong>MPN</strong><br>
531
  " &#8594; MPN(Manufacturer Part Number) Used globally, Alphanumeric digits (various lengths)<br>
536
  " &#8594; JAN(Japanese Article Number) Used only in Japan, 8 or 13 numeric digits."
537
  msgstr ""
538
 
539
+ #: ../lib/functions/KcSeoOptions.php:815
540
  msgid "Identifier"
541
  msgstr ""
542
 
543
+ #: ../lib/functions/KcSeoOptions.php:818
544
  msgid "Enter product unique identifier"
545
  msgstr ""
546
 
547
+ #: ../lib/functions/KcSeoOptions.php:821
548
  msgid "Product Review & Rating"
549
  msgstr ""
550
 
551
+ #: ../lib/functions/KcSeoOptions.php:825
552
  msgid "Review rating value"
553
  msgstr ""
554
 
555
+ #: ../lib/functions/KcSeoOptions.php:829, ../lib/functions/KcSeoOptions.php:851
556
  msgid "Rating value. (1 , 2.5, 3, 5 etc)"
557
  msgstr ""
558
 
559
+ #: ../lib/functions/KcSeoOptions.php:832
560
  msgid "Review Best rating"
561
  msgstr ""
562
 
563
+ #: ../lib/functions/KcSeoOptions.php:838
564
  msgid "Review Worst rating"
565
  msgstr ""
566
 
567
+ #: ../lib/functions/KcSeoOptions.php:844
568
  msgid "Review author"
569
  msgstr ""
570
 
571
+ #: ../lib/functions/KcSeoOptions.php:854
572
  msgid "Total review count"
573
  msgstr ""
574
 
575
+ #: ../lib/functions/KcSeoOptions.php:857
576
  msgid "Review rating value. <span class='required'>This is required if (Rating value) is given</span>"
577
  msgstr ""
578
 
579
+ #: ../lib/functions/KcSeoOptions.php:860
580
  msgid "Product Pricing"
581
  msgstr ""
582
 
583
+ #: ../lib/functions/KcSeoOptions.php:867
584
  msgid "The lowest available price, including service charges and fees, of this type of ticket."
585
  msgstr ""
586
 
587
+ #: ../lib/functions/KcSeoOptions.php:870
588
  msgid "PriceValidUntil"
589
  msgstr ""
590
 
591
+ #: ../lib/functions/KcSeoOptions.php:874
592
  msgid "The date (in ISO 8601 date and time format) after which the price will no longer be available."
593
  msgstr ""
594
 
595
+ #: ../lib/functions/KcSeoOptions.php:879
596
  msgid "The 3-letter currency code."
597
  msgstr ""
598
 
599
+ #: ../lib/functions/KcSeoOptions.php:895
600
  msgid "Select a availability type"
601
  msgstr ""
602
 
603
+ #: ../lib/functions/KcSeoOptions.php:907
604
  msgid "Select a condition"
605
  msgstr ""
606
 
607
+ #: ../lib/functions/KcSeoOptions.php:910
608
  msgid "Product URL"
609
  msgstr ""
610
 
611
+ #: ../lib/functions/KcSeoOptions.php:912
612
  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.)"
613
  msgstr ""
614
 
615
+ #: ../lib/functions/KcSeoOptions.php:927
616
  msgid "The title of the video"
617
  msgstr ""
618
 
619
+ #: ../lib/functions/KcSeoOptions.php:933
620
  msgid "The description of the video. New line is not supported."
621
  msgstr ""
622
 
623
+ #: ../lib/functions/KcSeoOptions.php:940
624
  msgid "A URL pointing to the video thumbnail image file. Images must be at least 160x90 pixels and at most 1920x1080 pixels."
625
  msgstr ""
626
 
627
+ #: ../lib/functions/KcSeoOptions.php:943
628
  msgid "Updated date"
629
  msgstr ""
630
 
631
+ #: ../lib/functions/KcSeoOptions.php:947
632
  msgid "2021-02-05T08:00:00+08:00"
633
  msgstr ""
634
 
635
+ #: ../lib/functions/KcSeoOptions.php:952
636
  msgid "The duration of the video in ISO 8601 format.(PT1M33S)"
637
  msgstr ""
638
 
639
+ #: ../lib/functions/KcSeoOptions.php:964
640
  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."
641
  msgstr ""
642
 
643
+ #: ../lib/functions/KcSeoOptions.php:967
644
  msgid "Interaction count"
645
  msgstr ""
646
 
647
+ #: ../lib/functions/KcSeoOptions.php:969
648
  msgid "The number of times the video has been viewed."
649
  msgstr ""
650
 
651
+ #: ../lib/functions/KcSeoOptions.php:972
652
  msgid "Expires"
653
  msgstr ""
654
 
655
+ #: ../lib/functions/KcSeoOptions.php:995
656
  msgid "The description of the audio. New line is not supported."
657
  msgstr ""
658
 
659
+ #: ../lib/functions/KcSeoOptions.php:1018
660
  msgid "Service"
661
  msgstr ""
662
 
663
+ #: ../lib/functions/KcSeoOptions.php:1027
664
  msgid "The name of the Service."
665
  msgstr ""
666
 
667
+ #: ../lib/functions/KcSeoOptions.php:1030
668
  msgid "Service type"
669
  msgstr ""
670
 
671
+ #: ../lib/functions/KcSeoOptions.php:1033
672
  msgid "The type of service being offered, e.g. veterans' benefits, emergency relief, etc."
673
  msgstr ""
674
 
675
+ #: ../lib/functions/KcSeoOptions.php:1039
676
  msgid "An additional type for the service, typically used for adding more specific types from external vocabularies in microdata syntax."
677
  msgstr ""
678
 
679
+ #: ../lib/functions/KcSeoOptions.php:1042
680
  msgid "Award"
681
  msgstr ""
682
 
683
+ #: ../lib/functions/KcSeoOptions.php:1044
684
  msgid "An award won by or for this service."
685
  msgstr ""
686
 
687
+ #: ../lib/functions/KcSeoOptions.php:1047
688
  msgid "Category"
689
  msgstr ""
690
 
691
+ #: ../lib/functions/KcSeoOptions.php:1049
692
  msgid "A category for the service."
693
  msgstr ""
694
 
695
+ #: ../lib/functions/KcSeoOptions.php:1052
696
  msgid "Provider mobility"
697
  msgstr ""
698
 
699
+ #: ../lib/functions/KcSeoOptions.php:1054
700
  msgid "Indicates the mobility of a provided service (e.g. 'static', 'dynamic')."
701
  msgstr ""
702
 
703
+ #: ../lib/functions/KcSeoOptions.php:1060
704
  msgid "A short description of the service. New line is not supported."
705
  msgstr ""
706
 
707
+ #: ../lib/functions/KcSeoOptions.php:1066
708
  msgid "An image of the service. This should be a URL."
709
  msgstr ""
710
 
711
+ #: ../lib/functions/KcSeoOptions.php:1072
712
  msgid "Indicates a page (or other CreativeWork) for which this thing is the main entity being described."
713
  msgstr ""
714
 
715
+ #: ../lib/functions/KcSeoOptions.php:1078
716
  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."
717
  msgstr ""
718
 
719
+ #: ../lib/functions/KcSeoOptions.php:1084
720
  msgid "URL of the service."
721
  msgstr ""
722
 
723
+ #: ../lib/functions/KcSeoOptions.php:1087
724
  msgid "Alternate name"
725
  msgstr ""
726
 
727
+ #: ../lib/functions/KcSeoOptions.php:1089
728
  msgid "An alias for the service."
729
  msgstr ""
730
 
731
+ #: ../lib/functions/KcSeoOptions.php:1095, ../lib/functions/KcSeoOptions.php:1539
732
  msgid "About"
733
  msgstr ""
734
 
735
+ #: ../lib/functions/KcSeoOptions.php:1121, ../lib/functions/KcSeoOptions.php:1159
736
  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"
737
  msgstr ""
738
 
739
+ #: ../lib/functions/KcSeoOptions.php:1127
740
  msgid "Contact"
741
  msgstr ""
742
 
743
+ #: ../lib/functions/KcSeoOptions.php:1151
744
  msgid "Video URL"
745
  msgstr ""
746
 
747
+ #: ../lib/functions/KcSeoOptions.php:1171
748
  msgid "Notice</span>"
749
  msgstr ""
750
 
751
+ #: ../lib/functions/KcSeoOptions.php:1176
752
  msgid "Name of the reviewed item"
753
  msgstr ""
754
 
755
+ #: ../lib/functions/KcSeoOptions.php:1179
756
  msgid "The item that is being reviewed."
757
  msgstr ""
758
 
759
+ #: ../lib/functions/KcSeoOptions.php:1188
760
  msgid "Review name"
761
  msgstr ""
762
 
763
+ #: ../lib/functions/KcSeoOptions.php:1191
764
  msgid "A particular name for the review."
765
  msgstr ""
766
 
767
+ #: ../lib/functions/KcSeoOptions.php:1198
768
  msgid "The author of the review. The reviewer’s name needs to be a valid name."
769
  msgstr ""
770
 
771
+ #: ../lib/functions/KcSeoOptions.php:1225
772
  msgid "Name of the organization"
773
  msgstr ""
774
 
775
+ #: ../lib/functions/KcSeoOptions.php:1227
776
  msgid "The publisher of the review."
777
  msgstr ""
778
 
779
+ #: ../lib/functions/KcSeoOptions.php:1233
780
  msgid "Aggregate Ratings"
781
  msgstr ""
782
 
783
+ #: ../lib/functions/KcSeoOptions.php:1239
784
  msgid "Schema type"
785
  msgstr ""
786
 
787
+ #: ../lib/functions/KcSeoOptions.php:1244
788
  msgid "Use the most appropriate schema type for what is being reviewed."
789
  msgstr ""
790
 
791
+ #: ../lib/functions/KcSeoOptions.php:1247
792
  msgid "Name of the item"
793
  msgstr ""
794
 
795
+ #: ../lib/functions/KcSeoOptions.php:1250
796
  msgid "The item that is being rated."
797
  msgstr ""
798
 
799
+ #: ../lib/functions/KcSeoOptions.php:1263, ../lib/functions/KcSeoOptions.php:1398, ../lib/functions/KcSeoOptions.php:1800, ../lib/views/schema-options.php:118
800
  msgid "The price range of the business, for example $$$."
801
  msgstr ""
802
 
803
+ #: ../lib/functions/KcSeoOptions.php:1280
804
  msgid "Description for thr review. New line is not supported."
805
  msgstr ""
806
 
807
+ #: ../lib/functions/KcSeoOptions.php:1283
808
  msgid "Rating Count"
809
  msgstr ""
810
 
811
+ #: ../lib/functions/KcSeoOptions.php:1287
812
  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>"
813
  msgstr ""
814
 
815
+ #: ../lib/functions/KcSeoOptions.php:1290
816
  msgid "Review Count"
817
  msgstr ""
818
 
819
+ #: ../lib/functions/KcSeoOptions.php:1294
820
  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."
821
  msgstr ""
822
 
823
+ #: ../lib/functions/KcSeoOptions.php:1297
824
  msgid "Rating Value"
825
  msgstr ""
826
 
827
+ #: ../lib/functions/KcSeoOptions.php:1304
828
  msgid "Best Rating"
829
  msgstr ""
830
 
831
+ #: ../lib/functions/KcSeoOptions.php:1308
832
  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."
833
  msgstr ""
834
 
835
+ #: ../lib/functions/KcSeoOptions.php:1311
836
  msgid "Worst Rating"
837
  msgstr ""
838
 
839
+ #: ../lib/functions/KcSeoOptions.php:1315
840
  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."
841
  msgstr ""
842
 
843
+ #: ../lib/functions/KcSeoOptions.php:1321
844
  msgid "Restaurant"
845
  msgstr ""
846
 
847
+ #: ../lib/functions/KcSeoOptions.php:1327
848
  msgid "Name of the Restaurant"
849
  msgstr ""
850
 
851
+ #: ../lib/functions/KcSeoOptions.php:1332
852
  msgid "Description of the Restaurant"
853
  msgstr ""
854
 
855
+ #: ../lib/functions/KcSeoOptions.php:1334, ../lib/functions/KcSeoOptions.php:1387
856
  msgid "New line is not supported."
857
  msgstr ""
858
 
859
+ #: ../lib/functions/KcSeoOptions.php:1337
860
  msgid "Opening Hours"
861
  msgstr ""
862
 
863
+ #: ../lib/functions/KcSeoOptions.php:1339
864
  msgid "Mo,Tu,We,Th,Fr,Sa,Su 11:30-23:00"
865
  msgstr ""
866
 
867
+ #: ../lib/functions/KcSeoOptions.php:1342, ../lib/functions/KcSeoOptions.php:1419
868
  msgid "Telephone"
869
  msgstr ""
870
 
871
+ #: ../lib/functions/KcSeoOptions.php:1344
872
  msgid "+155501003333"
873
  msgstr ""
874
 
875
+ #: ../lib/functions/KcSeoOptions.php:1347
876
  msgid "Menu"
877
  msgstr ""
878
 
879
+ #: ../lib/functions/KcSeoOptions.php:1349
880
  msgid "http://example.com/menu"
881
  msgstr ""
882
 
883
+ #: ../lib/functions/KcSeoOptions.php:1357, ../lib/views/schema-options.php:270
884
  msgid "Address"
885
  msgstr ""
886
 
887
+ #: ../lib/functions/KcSeoOptions.php:1361, ../lib/functions/KcSeoOptions.php:1395, ../lib/views/schema-options.php:113
888
  msgid "Price Range"
889
  msgstr ""
890
 
891
+ #: ../lib/functions/KcSeoOptions.php:1363
892
  msgid "The price range of the business, for example $$$"
893
  msgstr ""
894
 
895
+ #: ../lib/functions/KcSeoOptions.php:1366
896
  msgid "Serves Cuisine"
897
  msgstr ""
898
 
899
+ #: ../lib/functions/KcSeoOptions.php:1368, ../lib/views/schema-options.php:159
900
  msgid "The cuisine of the restaurant."
901
  msgstr ""
902
 
903
+ #: ../lib/functions/KcSeoOptions.php:1374
904
  msgid "Local Business"
905
  msgstr ""
906
 
907
+ #: ../lib/functions/KcSeoOptions.php:1390
908
  msgid "Business Logo"
909
  msgstr ""
910
 
911
+ #: ../lib/functions/KcSeoOptions.php:1401
912
  msgid "Address locality"
913
  msgstr ""
914
 
915
+ #: ../lib/functions/KcSeoOptions.php:1403
916
  msgid "City (i.e Kansas city)"
917
  msgstr ""
918
 
919
+ #: ../lib/functions/KcSeoOptions.php:1406
920
  msgid "Address region"
921
  msgstr ""
922
 
923
+ #: ../lib/functions/KcSeoOptions.php:1408
924
  msgid "State (i.e. MO)"
925
  msgstr ""
926
 
927
+ #: ../lib/functions/KcSeoOptions.php:1411
928
  msgid "Postal code"
929
  msgstr ""
930
 
931
+ #: ../lib/functions/KcSeoOptions.php:1415
932
  msgid "Street address"
933
  msgstr ""
934
 
935
+ #: ../lib/functions/KcSeoOptions.php:1477
936
+ msgid "Medical WebPage"
937
+ msgstr ""
938
+
939
+ #: ../lib/functions/KcSeoOptions.php:1485, ../lib/functions/KcSeoOptions.php:1564
940
+ msgid "Medical title"
941
+ msgstr ""
942
+
943
+ #: ../lib/functions/KcSeoOptions.php:1489
944
+ msgid "Webpage url"
945
+ msgstr ""
946
+
947
+ #: ../lib/functions/KcSeoOptions.php:1491, ../lib/functions/KcSeoOptions.php:1570
948
+ msgid "Web Page Url"
949
+ msgstr ""
950
+
951
+ #: ../lib/functions/KcSeoOptions.php:1494
952
+ msgid "Specialty url"
953
+ msgstr ""
954
+
955
+ #: ../lib/functions/KcSeoOptions.php:1496
956
+ msgid "Specialty Url"
957
+ msgstr ""
958
+
959
+ #: ../lib/functions/KcSeoOptions.php:1528, ../lib/functions/KcSeoOptions.php:1643
960
+ msgid "Last Reviewed"
961
+ msgstr ""
962
+
963
+ #: ../lib/functions/KcSeoOptions.php:1531, ../lib/functions/KcSeoOptions.php:1646
964
+ msgid "Like this: 2021-12-25"
965
+ msgstr ""
966
+
967
+ #: ../lib/functions/KcSeoOptions.php:1535
968
+ msgid "Main Content of Page"
969
+ msgstr ""
970
+
971
+ #: ../lib/functions/KcSeoOptions.php:1556
972
+ msgid "Collection Page"
973
+ msgstr ""
974
+
975
+ #: ../lib/functions/KcSeoOptions.php:1568
976
+ msgid "Url"
977
+ msgstr ""
978
+
979
+ #: ../lib/functions/KcSeoOptions.php:1615
980
+ msgid "Date Created"
981
+ msgstr ""
982
+
983
+ #: ../lib/functions/KcSeoOptions.php:1658
984
  msgid "Book"
985
  msgstr ""
986
 
987
+ #: ../lib/functions/KcSeoOptions.php:1662
988
  msgid "Course"
989
  msgstr ""
990
 
991
+ #: ../lib/functions/KcSeoOptions.php:1666
992
  msgid "Job Posting"
993
  msgstr ""
994
 
995
+ #: ../lib/functions/KcSeoOptions.php:1670
996
  msgid "Movie"
997
  msgstr ""
998
 
999
+ #: ../lib/functions/KcSeoOptions.php:1682
1000
  msgid "TVEpisode"
1001
  msgstr ""
1002
 
1003
+ #: ../lib/functions/KcSeoOptions.php:1693
1004
  msgid "Special Announcement"
1005
  msgstr ""
1006
 
1007
+ #: ../lib/functions/KcSeoOptions.php:1701
1008
  msgid "SpecialAnnouncement.name: Name of the announcement. This text should be present on the underlying page."
1009
  msgstr ""
1010
 
1011
+ #: ../lib/functions/KcSeoOptions.php:1707
1012
  msgid "SpecialAnnouncement.url: URL of the page containing the announcements. If present, this must match the URL of the page containing the information."
1013
  msgstr ""
1014
 
1015
+ #: ../lib/functions/KcSeoOptions.php:1718
1016
  msgid "Expires date"
1017
  msgstr ""
1018
 
1019
+ #: ../lib/functions/KcSeoOptions.php:1725
1020
  msgid "Text"
1021
  msgstr ""
1022
 
1023
+ #: ../lib/functions/KcSeoOptions.php:1727
1024
  msgid "SpecialAnnouncement.text: Text of the announcements."
1025
  msgstr ""
1026
 
1027
+ #: ../lib/functions/KcSeoOptions.php:1731
1028
  msgid "Announcement Locations"
1029
  msgstr ""
1030
 
1031
+ #: ../lib/functions/KcSeoOptions.php:1737
1032
  msgid "Announcement Location"
1033
  msgstr ""
1034
 
1035
+ #: ../lib/functions/KcSeoOptions.php:1740
1036
  msgid "Type"
1037
  msgstr ""
1038
 
1039
+ #: ../lib/functions/KcSeoOptions.php:1748
1040
  msgid "SpecialAnnouncement.announcementLocation.name: "
1041
  msgstr ""
1042
 
1043
+ #: ../lib/functions/KcSeoOptions.php:1755
1044
  msgid "SpecialAnnouncement.announcementLocation.url: URL"
1045
  msgstr ""
1046
 
1047
+ #: ../lib/functions/KcSeoOptions.php:1758
1048
  msgid "Address: Street"
1049
  msgstr ""
1050
 
1051
+ #: ../lib/functions/KcSeoOptions.php:1760
1052
  msgid "SpecialAnnouncement.announcementLocation.address.streetAddress: The street address. For example, 1600 Amphitheatre Pkwy."
1053
  msgstr ""
1054
 
1055
+ #: ../lib/functions/KcSeoOptions.php:1764
1056
  msgid "Address: Locality"
1057
  msgstr ""
1058
 
1059
+ #: ../lib/functions/KcSeoOptions.php:1766
1060
  msgid "SpecialAnnouncement.announcementLocation.address.addressLocality: The locality in which the street address is, and which is in the region. For example, Mountain View."
1061
  msgstr ""
1062
 
1063
+ #: ../lib/functions/KcSeoOptions.php:1770
1064
  msgid "Address: Post Code"
1065
  msgstr ""
1066
 
1067
+ #: ../lib/functions/KcSeoOptions.php:1772
1068
  msgid "SpecialAnnouncement.announcementLocation.address.postalCode: The postal code. For example, 94043."
1069
  msgstr ""
1070
 
1071
+ #: ../lib/functions/KcSeoOptions.php:1776
1072
  msgid "Address: Region"
1073
  msgstr ""
1074
 
1075
+ #: ../lib/functions/KcSeoOptions.php:1778
1076
  msgid "SpecialAnnouncement.announcementLocation.address.addressRegion: The region in which the locality is, and which is in the country. For example, California."
1077
  msgstr ""
1078
 
1079
+ #: ../lib/functions/KcSeoOptions.php:1782
1080
  msgid "Address: Country"
1081
  msgstr ""
1082
 
1083
+ #: ../lib/functions/KcSeoOptions.php:1784
1084
  msgid "SpecialAnnouncement.announcementLocation.address.addressCountry: The country. For example, USA. You can also provide the two-letter ISO 3166-1 alpha-2 country code."
1085
  msgstr ""
1086
 
1087
+ #: ../lib/functions/KcSeoOptions.php:1788
1088
  msgid "ID"
1089
  msgstr ""
1090
 
1091
+ #: ../lib/functions/KcSeoOptions.php:1790
1092
  msgid "SpecialAnnouncement.announcementLocation.@id: An optional unique identifier so that you can reference pre-existing structured data for this location."
1093
  msgstr ""
1094
 
1095
+ #: ../lib/models/KcSeoSchemaModel.php:1275
1096
  msgid "Required"
1097
  msgstr ""
1098
 
1099
+ #: ../lib/models/KcSeoSchemaModel.php:1276
1100
  msgid "Recommended"
1101
  msgstr ""
1102
 
lib/functions/KcSeoOptions.php CHANGED
@@ -169,6 +169,105 @@ class KcSeoOptions
169
  ],
170
  )
171
  ),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
172
  'blog_posting' => array(
173
  'pro' => false,
174
  'title' => __('Blog Posting', "wp-seo-structured-data-schema"),
@@ -1373,6 +1472,187 @@ class KcSeoOptions
1373
  )
1374
  )
1375
  ),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1376
  'book' => array(
1377
  'pro' => true,
1378
  'title' => __("Book", "wp-seo-structured-data-schema"),
169
  ],
170
  )
171
  ),
172
+ 'TechArticle' => array(
173
+ 'pro' => false,
174
+ 'title' => __('Tech Article', "wp-seo-structured-data-schema"),
175
+ 'fields' => array(
176
+ 'active' => array(
177
+ 'type' => 'checkbox'
178
+ ),
179
+ 'headline' => array(
180
+ 'title' => __('Headline', "wp-seo-structured-data-schema"),
181
+ 'type' => 'text',
182
+ 'desc' => __('Article title', "wp-seo-structured-data-schema"),
183
+ 'required' => true
184
+ ),
185
+
186
+ 'mainEntityOfPage' => array(
187
+ 'title' => __('Page URL', "wp-seo-structured-data-schema"),
188
+ 'type' => 'url',
189
+ 'desc' => __('The canonical URL of the article page', "wp-seo-structured-data-schema"),
190
+ 'required' => true
191
+ ),
192
+ 'author_type' => array(
193
+ 'title' => __('Author Type', "wp-seo-structured-data-schema"),
194
+ 'type' => 'select',
195
+ 'recommended' => true,
196
+ 'empty' => __("Select one", "wp-seo-structured-data-schema"),
197
+ 'options' => array(
198
+ 'Person' => 'Person',
199
+ 'Organization' => 'Organization'
200
+ ),
201
+ ),
202
+ 'author' => array(
203
+ 'title' => __('Author Name', "wp-seo-structured-data-schema"),
204
+ 'type' => 'text',
205
+ 'desc' => __('Author display name', "wp-seo-structured-data-schema"),
206
+ 'required' => true
207
+ ),
208
+ 'author_url' => array(
209
+ 'title' => __('Author URL', "wp-seo-structured-data-schema"),
210
+ 'type' => 'url',
211
+ 'required' => true,
212
+ 'default' => $author_url,
213
+ ),
214
+ 'author_description' => array(
215
+ 'title' => __('Author Description', "wp-seo-structured-data-schema"),
216
+ 'type' => 'textarea',
217
+ 'desc' => __('Short description. New line is not supported.', "wp-seo-structured-data-schema")
218
+ ),
219
+ 'image' => array(
220
+ 'title' => __('Article Feature Image', "wp-seo-structured-data-schema"),
221
+ 'type' => 'image',
222
+ 'required' => true,
223
+ 'desc' => __('Images should be at least 696 pixels wide.<br>Images should be in .jpg, .png, or. gif format.', "wp-seo-structured-data-schema")
224
+ ),
225
+ 'datePublished' => array(
226
+ 'title' => __('Published date', "wp-seo-structured-data-schema"),
227
+ 'type' => 'text',
228
+ 'class' => 'kcseo-date',
229
+ 'required' => true,
230
+ 'desc' => __('Like this: 2021-12-25 14:20:00', "wp-seo-structured-data-schema")
231
+ ),
232
+ 'dateModified' => array(
233
+ 'title' => __('Modified date', "wp-seo-structured-data-schema"),
234
+ 'type' => 'text',
235
+ 'class' => 'kcseo-date',
236
+ 'required' => true,
237
+ 'desc' => __('Like this: 2021-12-25 14:20:00', "wp-seo-structured-data-schema")
238
+ ),
239
+ 'publisher' => array(
240
+ 'title' => __('Publisher', "wp-seo-structured-data-schema"),
241
+ 'type' => 'text',
242
+ 'desc' => __('Publisher name or Organization name', "wp-seo-structured-data-schema"),
243
+ 'required' => true
244
+ ),
245
+ 'publisherImage' => array(
246
+ 'title' => __('Publisher Logo', "wp-seo-structured-data-schema"),
247
+ 'type' => 'image',
248
+ 'desc' => __('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>', "wp-seo-structured-data-schema"),
249
+ 'required' => true
250
+ ),
251
+ 'description' => array(
252
+ 'title' => __('Description', "wp-seo-structured-data-schema"),
253
+ 'type' => 'textarea',
254
+ 'desc' => __('Short description. New line is not supported.', "wp-seo-structured-data-schema")
255
+ ),
256
+
257
+ 'articleBody' => array(
258
+ 'title' => __('Article body', "wp-seo-structured-data-schema"),
259
+ 'type' => 'textarea',
260
+ 'desc' => __('Article content', "wp-seo-structured-data-schema")
261
+ ),
262
+ 'keywords' => array(
263
+ 'title' => __('Keywords', "wp-seo-structured-data-schema"),
264
+ 'type' => 'text',
265
+ 'desc' => __('Article title', "wp-seo-structured-data-schema"),
266
+ 'required' => true
267
+ ),
268
+
269
+ )
270
+ ),
271
  'blog_posting' => array(
272
  'pro' => false,
273
  'title' => __('Blog Posting', "wp-seo-structured-data-schema"),
1472
  )
1473
  )
1474
  ),
1475
+ 'MedicalWebPage' => array(
1476
+ 'pro' => false,
1477
+ 'title' => __('Medical WebPage', "wp-seo-structured-data-schema"),
1478
+ 'fields' => array(
1479
+ 'active' => array(
1480
+ 'type' => 'checkbox'
1481
+ ),
1482
+ 'headline' => array(
1483
+ 'title' => __('Headline', "wp-seo-structured-data-schema"),
1484
+ 'type' => 'text',
1485
+ 'desc' => __('Medical title', "wp-seo-structured-data-schema"),
1486
+ 'required' => true
1487
+ ),
1488
+ 'webpage_url' => array(
1489
+ 'title' => __('Webpage url', "wp-seo-structured-data-schema"),
1490
+ 'type' => 'url',
1491
+ 'desc' => __('Web Page Url', "wp-seo-structured-data-schema"),
1492
+ ),
1493
+ 'specialty_url' => array(
1494
+ 'title' => __('Specialty url', "wp-seo-structured-data-schema"),
1495
+ 'type' => 'url',
1496
+ 'desc' => __('Specialty Url', "wp-seo-structured-data-schema"),
1497
+ ),
1498
+ 'image' => array(
1499
+ 'title' => __('Image', "wp-seo-structured-data-schema"),
1500
+ 'type' => 'image',
1501
+ 'required' => true,
1502
+ ),
1503
+ // dfasdf.
1504
+ 'datePublished' => array(
1505
+ 'title' => __('Published date', "wp-seo-structured-data-schema"),
1506
+ 'type' => 'text',
1507
+ 'class' => 'kcseo-date',
1508
+ 'desc' => __('Like this: 2021-12-25 14:20:00', "wp-seo-structured-data-schema")
1509
+ ),
1510
+ 'dateModified' => array(
1511
+ 'title' => __('Modified date', "wp-seo-structured-data-schema"),
1512
+ 'type' => 'text',
1513
+ 'class' => 'kcseo-date',
1514
+ 'desc' => __('Like this: 2021-12-25 14:20:00', "wp-seo-structured-data-schema")
1515
+ ),
1516
+ 'publisher' => array(
1517
+ 'title' => __('Publisher', "wp-seo-structured-data-schema"),
1518
+ 'type' => 'text',
1519
+ 'desc' => __('Publisher name or Organization name', "wp-seo-structured-data-schema"),
1520
+ ),
1521
+ 'publisherImage' => array(
1522
+ 'title' => __('Publisher Logo', "wp-seo-structured-data-schema"),
1523
+ 'type' => 'image',
1524
+ 'desc' => __('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>', "wp-seo-structured-data-schema"),
1525
+ ),
1526
+
1527
+ 'lastreviewed' => array(
1528
+ 'title' => __('Last Reviewed', "wp-seo-structured-data-schema"),
1529
+ 'type' => 'text',
1530
+ 'class' => 'kcseo-date',
1531
+ 'desc' => __('Like this: 2021-12-25', "wp-seo-structured-data-schema")
1532
+ ),
1533
+
1534
+ 'maincontentofpage' => array(
1535
+ 'title' => __('Main Content of Page', "wp-seo-structured-data-schema"),
1536
+ 'type' => 'text'
1537
+ ),
1538
+ 'about' => array(
1539
+ 'title' => __('About', "wp-seo-structured-data-schema"),
1540
+ 'type' => 'text'
1541
+ ),
1542
+ 'description' => array(
1543
+ 'title' => __('Description', "wp-seo-structured-data-schema"),
1544
+ 'type' => 'textarea',
1545
+ 'desc' => __('Short description. New line is not supported.', "wp-seo-structured-data-schema")
1546
+ ),
1547
+ 'keywords' => array(
1548
+ 'title' => __('Keywords', "wp-seo-structured-data-schema"),
1549
+ 'type' => 'text',
1550
+ ),
1551
+
1552
+ )
1553
+ ),
1554
+ 'CollectionPage' => array(
1555
+ 'pro' => false,
1556
+ 'title' => __('Collection Page', "wp-seo-structured-data-schema"),
1557
+ 'fields' => array(
1558
+ 'active' => array(
1559
+ 'type' => 'checkbox'
1560
+ ),
1561
+ 'name' => array(
1562
+ 'title' => __('Name', "wp-seo-structured-data-schema"),
1563
+ 'type' => 'text',
1564
+ 'desc' => __('Medical title', "wp-seo-structured-data-schema"),
1565
+ 'required' => true
1566
+ ),
1567
+ 'webpage_url' => array(
1568
+ 'title' => __('Url', "wp-seo-structured-data-schema"),
1569
+ 'type' => 'url',
1570
+ 'desc' => __('Web Page Url', "wp-seo-structured-data-schema"),
1571
+ ),
1572
+ 'description' => array(
1573
+ 'title' => __('Description', "wp-seo-structured-data-schema"),
1574
+ 'type' => 'textarea',
1575
+ 'desc' => __('Short description. New line is not supported.', "wp-seo-structured-data-schema")
1576
+ ),
1577
+ // 'maincontentofpage' => array(
1578
+ // 'title' => __('Main Content of Page', "wp-seo-structured-data-schema"),
1579
+ // 'type' => 'text'
1580
+ // ),
1581
+
1582
+ 'image' => array(
1583
+ 'title' => __('Image', "wp-seo-structured-data-schema"),
1584
+ 'type' => 'image',
1585
+ 'required' => true,
1586
+ ),
1587
+ 'author_type' => array(
1588
+ 'title' => __('Author Type', "wp-seo-structured-data-schema"),
1589
+ 'type' => 'select',
1590
+ 'recommended' => true,
1591
+ 'empty' => __("Select one", "wp-seo-structured-data-schema"),
1592
+ 'options' => array(
1593
+ 'Person' => 'Person',
1594
+ 'Organization' => 'Organization'
1595
+ ),
1596
+ ),
1597
+ 'author' => array(
1598
+ 'title' => __('Author Name', "wp-seo-structured-data-schema"),
1599
+ 'type' => 'text',
1600
+ 'desc' => __('Author display name', "wp-seo-structured-data-schema"),
1601
+ 'required' => true
1602
+ ),
1603
+ 'author_url' => array(
1604
+ 'title' => __('Author URL', "wp-seo-structured-data-schema"),
1605
+ 'type' => 'url',
1606
+ 'required' => true,
1607
+ 'default' => $author_url,
1608
+ ),
1609
+ 'author_description' => array(
1610
+ 'title' => __('Author Description', "wp-seo-structured-data-schema"),
1611
+ 'type' => 'textarea',
1612
+ 'desc' => __('Short description. New line is not supported.', "wp-seo-structured-data-schema")
1613
+ ),
1614
+ 'DateCreated' => array(
1615
+ 'title' => __('Date Created', "wp-seo-structured-data-schema"),
1616
+ 'type' => 'text',
1617
+ 'class' => 'kcseo-date',
1618
+ 'desc' => __('Like this: 2021-12-25 14:20:00', "wp-seo-structured-data-schema")
1619
+ ),
1620
+ 'datePublished' => array(
1621
+ 'title' => __('Published date', "wp-seo-structured-data-schema"),
1622
+ 'type' => 'text',
1623
+ 'class' => 'kcseo-date',
1624
+ 'desc' => __('Like this: 2021-12-25 14:20:00', "wp-seo-structured-data-schema")
1625
+ ),
1626
+ 'dateModified' => array(
1627
+ 'title' => __('Modified date', "wp-seo-structured-data-schema"),
1628
+ 'type' => 'text',
1629
+ 'class' => 'kcseo-date',
1630
+ 'desc' => __('Like this: 2021-12-25 14:20:00', "wp-seo-structured-data-schema")
1631
+ ),
1632
+ 'publisher' => array(
1633
+ 'title' => __('Publisher', "wp-seo-structured-data-schema"),
1634
+ 'type' => 'text',
1635
+ 'desc' => __('Publisher name or Organization name', "wp-seo-structured-data-schema"),
1636
+ ),
1637
+ 'publisherImage' => array(
1638
+ 'title' => __('Publisher Logo', "wp-seo-structured-data-schema"),
1639
+ 'type' => 'image',
1640
+ 'desc' => __('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>', "wp-seo-structured-data-schema"),
1641
+ ),
1642
+ 'lastreviewed' => array(
1643
+ 'title' => __('Last Reviewed', "wp-seo-structured-data-schema"),
1644
+ 'type' => 'text',
1645
+ 'class' => 'kcseo-date',
1646
+ 'desc' => __('Like this: 2021-12-25', "wp-seo-structured-data-schema")
1647
+ ),
1648
+ 'keywords' => array(
1649
+ 'title' => __('Keywords', "wp-seo-structured-data-schema"),
1650
+ 'type' => 'text',
1651
+ ),
1652
+
1653
+ )
1654
+ ),
1655
+
1656
  'book' => array(
1657
  'pro' => true,
1658
  'title' => __("Book", "wp-seo-structured-data-schema"),
lib/models/KcSeoSchemaModel.php CHANGED
@@ -1,1202 +1,1452 @@
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" => "https://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['author_url']) ) {
38
- $article["author"]['url'] = $KcSeoWPSchema->sanitizeOutPut($metaData['author_url'], 'url');
39
- }
40
- }
41
- if (!empty($metaData['publisher'])) {
42
- if (!empty($metaData['publisherImage'])) {
43
- $img = $KcSeoWPSchema->imageInfo(absint($metaData['publisherImage']));
44
- $plA = array(
45
- "@type" => "ImageObject",
46
- "url" => $KcSeoWPSchema->sanitizeOutPut($img['url'], 'url'),
47
- "height" => $img['height'],
48
- "width" => $img['width']
49
- );
50
- } else {
51
- $plA = array();
52
- }
53
- $article["publisher"] = array(
54
- "@type" => "Organization",
55
- "name" => $KcSeoWPSchema->sanitizeOutPut($metaData['publisher']),
56
- "logo" => $plA
57
- );
58
- }
59
- if (!empty($metaData['alternativeHeadline'])) {
60
- $article["alternativeHeadline"] = $KcSeoWPSchema->sanitizeOutPut($metaData['alternativeHeadline']);
61
- }
62
- if (!empty($metaData['image'])) {
63
- $img = $KcSeoWPSchema->imageInfo(absint($metaData['image']));
64
- $article["image"] = array(
65
- "@type" => "ImageObject",
66
- "url" => $KcSeoWPSchema->sanitizeOutPut($img['url'], 'url'),
67
- "height" => $img['height'],
68
- "width" => $img['width']
69
- );
70
- }
71
- if (!empty($metaData['datePublished'])) {
72
- $article["datePublished"] = $KcSeoWPSchema->sanitizeOutPut($metaData['datePublished']);
73
- }
74
- if (!empty($metaData['dateModified'])) {
75
- $article["dateModified"] = $KcSeoWPSchema->sanitizeOutPut($metaData['dateModified']);
76
- }
77
- if (!empty($metaData['description'])) {
78
- $article["description"] = $KcSeoWPSchema->sanitizeOutPut($metaData['description'],
79
- 'textarea');
80
- }
81
- if (!empty($metaData['articleBody'])) {
82
- $article["articleBody"] = $KcSeoWPSchema->sanitizeOutPut($metaData['articleBody'],
83
- 'textarea');
84
- }
85
 
86
- if ( isset($metaData['video']) && is_array($metaData['video']) ) {
87
- $article_video = array();
88
- foreach ($metaData['video'] as $video_single) {
89
- if ( $video_single['name'] && $video_single['embedUrl'] ) {
90
- $video_single_schema = array(
91
- "@type" => "VideoObject",
92
- "name" => $video_single['name'] ? $KcSeoWPSchema->sanitizeOutPut($video_single['name']) : '',
93
- "description" => $video_single['description'] ? $KcSeoWPSchema->sanitizeOutPut($video_single['description']) : '',
94
- "contentUrl" => $video_single['contentUrl'] ? $KcSeoWPSchema->sanitizeOutPut($video_single['contentUrl']) : '',
95
- "embedUrl" => $video_single['embedUrl'] ? $KcSeoWPSchema->sanitizeOutPut($video_single['embedUrl']) : '',
96
- "uploadDate" => $video_single['uploadDate'] ? $KcSeoWPSchema->sanitizeOutPut($video_single['uploadDate']) : '',
97
- "duration" => $video_single['duration'] ? $KcSeoWPSchema->sanitizeOutPut($video_single['duration']) : '',
98
- );
99
- if (!empty($video_single['thumbnailUrl'])) {
100
- $img = $KcSeoWPSchema->imageInfo(absint($video_single['thumbnailUrl']));
101
- $video_single_schema["thumbnailUrl"] = $KcSeoWPSchema->sanitizeOutPut($img['url'], 'url');
102
- }
103
-
104
- $article_video = $video_single_schema;
105
- }
106
- }
107
- if ( $article_video ) {
108
- $article['video'] = $article_video;
109
- }
110
- }
111
-
112
- if ( isset($metaData['audio']) && is_array($metaData['audio']) ) {
113
- $article_audio = array();
114
- foreach ($metaData['audio'] as $audio_single) {
115
- if ( $audio_single['name'] && $audio_single['contentUrl'] ) {
116
- $audio_single_schema = array(
117
- "@type" => "AudioObject",
118
- "name" => $audio_single['name'] ? $KcSeoWPSchema->sanitizeOutPut($audio_single['name']) : '',
119
- "description" => $audio_single['description'] ? $KcSeoWPSchema->sanitizeOutPut($audio_single['description']) : '',
120
- "duration" => $audio_single['duration'] ? $KcSeoWPSchema->sanitizeOutPut($audio_single['duration']) : '',
121
- "contentUrl" => $audio_single['contentUrl'] ? $KcSeoWPSchema->sanitizeOutPut($audio_single['contentUrl']) : '',
122
- "encodingFormat" => $audio_single['encodingFormat'] ? $KcSeoWPSchema->sanitizeOutPut($audio_single['encodingFormat']) : '',
123
- );
124
-
125
- $article_audio = $audio_single_schema;
126
- }
127
- }
128
- if ( $article_audio ) {
129
- $article['audio'] = $article_audio;
130
- }
131
- }
132
-
133
- $html .= $this->get_jsonEncode(apply_filters('kcseo_snippet_article', $article, $metaData));
134
- break;
135
-
136
- case "news_article":
137
- $newsArticle = array(
138
- "@context" => "https://schema.org",
139
- "@type" => "NewsArticle"
140
- );
141
- if (!empty($metaData['headline'])) {
142
- $newsArticle["headline"] = $KcSeoWPSchema->sanitizeOutPut($metaData['headline']);
143
- }
144
- if (!empty($metaData['mainEntityOfPage'])) {
145
- $newsArticle["mainEntityOfPage"] = array(
146
- "@type" => "WebPage",
147
- "@id" => $KcSeoWPSchema->sanitizeOutPut($metaData["mainEntityOfPage"])
148
- );
149
- }
150
- if (!empty($metaData['author'])) {
151
- $newsArticle["author"] = array(
152
- "@type" => "Person",
153
- "name" => $KcSeoWPSchema->sanitizeOutPut($metaData['author'])
154
- );
155
-
156
- if ( !empty($metaData['author_url']) ) {
157
- $newsArticle["author"]['url'] = $KcSeoWPSchema->sanitizeOutPut($metaData['author_url'], 'url');
158
- }
159
- }
160
- if (!empty($metaData['image'])) {
161
- $img = $KcSeoWPSchema->imageInfo(absint($metaData['image']));
162
- $newsArticle["image"] = array(
163
- "@type" => "ImageObject",
164
- "url" => $KcSeoWPSchema->sanitizeOutPut($img['url'], 'url'),
165
- "height" => $img['height'],
166
- "width" => $img['width']
167
- );
168
- }
169
- if (!empty($metaData['datePublished'])) {
170
- $newsArticle["datePublished"] = $KcSeoWPSchema->sanitizeOutPut($metaData['datePublished']);
171
- }
172
- if (!empty($metaData['dateModified'])) {
173
- $newsArticle["dateModified"] = $KcSeoWPSchema->sanitizeOutPut($metaData['dateModified']);
174
- }
175
- if (!empty($metaData['publisher'])) {
176
- if (!empty($metaData['publisherImage'])) {
177
- $img = $KcSeoWPSchema->imageInfo(absint($metaData['publisherImage']));
178
- $plA = array(
179
- "@type" => "ImageObject",
180
- "url" => $KcSeoWPSchema->sanitizeOutPut($img['url'], 'url'),
181
- "height" => $img['height'],
182
- "width" => $img['width']
183
- );
184
- } else {
185
- $plA = array();
186
- }
187
- $newsArticle["publisher"] = array(
188
- "@type" => "Organization",
189
- "name" => $KcSeoWPSchema->sanitizeOutPut($metaData['publisher']),
190
- "logo" => $plA
191
- );
192
- }
193
- if (!empty($metaData['description'])) {
194
- $newsArticle["description"] = $KcSeoWPSchema->sanitizeOutPut($metaData['description'],
195
- 'textarea');
196
- }
197
- if (!empty($metaData['articleBody'])) {
198
- $newsArticle["articleBody"] = $KcSeoWPSchema->sanitizeOutPut($metaData['articleBody'],
199
- 'textarea');
200
- }
201
 
202
- if ( isset($metaData['video']) && is_array($metaData['video']) ) {
203
- $news_article_video = array();
204
- foreach ($metaData['video'] as $video_single) {
205
- if ( $video_single['name'] && $video_single['embedUrl'] ) {
206
- $video_single_schema = array(
207
- "@type" => "VideoObject",
208
- "name" => $video_single['name'] ? $KcSeoWPSchema->sanitizeOutPut($video_single['name']) : '',
209
- "description" => $video_single['description'] ? $KcSeoWPSchema->sanitizeOutPut($video_single['description']) : '',
210
- "contentUrl" => $video_single['contentUrl'] ? $KcSeoWPSchema->sanitizeOutPut($video_single['contentUrl']) : '',
211
- "embedUrl" => $video_single['embedUrl'] ? $KcSeoWPSchema->sanitizeOutPut($video_single['embedUrl']) : '',
212
- "uploadDate" => $video_single['uploadDate'] ? $KcSeoWPSchema->sanitizeOutPut($video_single['uploadDate']) : '',
213
- "duration" => $video_single['duration'] ? $KcSeoWPSchema->sanitizeOutPut($video_single['duration']) : '',
214
- );
215
- if (!empty($video_single['thumbnailUrl'])) {
216
- $img = $KcSeoWPSchema->imageInfo(absint($video_single['thumbnailUrl']));
217
- $video_single_schema["thumbnailUrl"] = $KcSeoWPSchema->sanitizeOutPut($img['url'], 'url');
218
- }
219
-
220
- $news_article_video = $video_single_schema;
221
- }
222
- }
223
- if ( $news_article_video ) {
224
- $newsArticle['video'] = $news_article_video;
225
- }
226
- }
227
-
228
- if ( isset($metaData['audio']) && is_array($metaData['audio']) ) {
229
- $news_article_audio = array();
230
- foreach ($metaData['audio'] as $audio_single) {
231
- if ( $audio_single['name'] && $audio_single['contentUrl'] ) {
232
- $audio_single_schema = array(
233
- "@type" => "AudioObject",
234
- "name" => $audio_single['name'] ? $KcSeoWPSchema->sanitizeOutPut($audio_single['name']) : '',
235
- "description" => $audio_single['description'] ? $KcSeoWPSchema->sanitizeOutPut($audio_single['description']) : '',
236
- "duration" => $audio_single['duration'] ? $KcSeoWPSchema->sanitizeOutPut($audio_single['duration']) : '',
237
- "contentUrl" => $audio_single['contentUrl'] ? $KcSeoWPSchema->sanitizeOutPut($audio_single['contentUrl']) : '',
238
- "encodingFormat" => $audio_single['encodingFormat'] ? $KcSeoWPSchema->sanitizeOutPut($audio_single['encodingFormat']) : '',
239
- );
240
-
241
- $news_article_audio = $audio_single_schema;
242
- }
243
- }
244
- if ( $news_article_audio ) {
245
- $newsArticle['audio'] = $news_article_audio;
246
- }
247
- }
248
-
249
- $html .= $this->get_jsonEncode(apply_filters('kcseo_snippet_news_article', $newsArticle, $metaData));
250
- break;
251
-
252
- case "blog_posting":
253
- $blogPosting = array(
254
- "@context" => "https://schema.org",
255
- "@type" => "BlogPosting"
256
- );
257
- if (!empty($metaData['headline'])) {
258
- $blogPosting["headline"] = $KcSeoWPSchema->sanitizeOutPut($metaData['headline']);
259
- }
260
- if (!empty($metaData['mainEntityOfPage'])) {
261
- $blogPosting["mainEntityOfPage"] = array(
262
- "@type" => "WebPage",
263
- "@id" => $KcSeoWPSchema->sanitizeOutPut($metaData["mainEntityOfPage"])
264
- );
265
- }
266
- if (!empty($metaData['author'])) {
267
- $blogPosting["author"] = array(
268
- "@type" => "Person",
269
- "name" => $KcSeoWPSchema->sanitizeOutPut($metaData['author'])
270
- );
271
-
272
- if ( !empty($metaData['author_url']) ) {
273
- $blogPosting["author"]['url'] = $KcSeoWPSchema->sanitizeOutPut($metaData['author_url'], 'url');
274
- }
275
- }
276
- if (!empty($metaData['image'])) {
277
- $img = $KcSeoWPSchema->imageInfo(absint($metaData['image']));
278
- $blogPosting["image"] = array(
279
- "@type" => "ImageObject",
280
- "url" => $KcSeoWPSchema->sanitizeOutPut($img['url'], 'url'),
281
- "height" => $img['height'],
282
- "width" => $img['width']
283
- );
284
- }
285
- if (!empty($metaData['datePublished'])) {
286
- $blogPosting["datePublished"] = $KcSeoWPSchema->sanitizeOutPut($metaData['datePublished']);
287
- }
288
- if (!empty($metaData['dateModified'])) {
289
- $blogPosting["dateModified"] = $KcSeoWPSchema->sanitizeOutPut($metaData['dateModified']);
290
- }
291
- if (!empty($metaData['publisher'])) {
292
- if (!empty($metaData['publisherImage'])) {
293
- $img = $KcSeoWPSchema->imageInfo(absint($metaData['publisherImage']));
294
- $plA = array(
295
- "@type" => "ImageObject",
296
- "url" => $KcSeoWPSchema->sanitizeOutPut($img['url'], 'url'),
297
- "height" => $img['height'],
298
- "width" => $img['width']
299
- );
300
- } else {
301
- $plA = array();
302
- }
303
- $blogPosting["publisher"] = array(
304
- "@type" => "Organization",
305
- "name" => $KcSeoWPSchema->sanitizeOutPut($metaData['publisher']),
306
- "logo" => $plA
307
- );
308
- }
309
- if (!empty($metaData['description'])) {
310
- $blogPosting["description"] = $KcSeoWPSchema->sanitizeOutPut($metaData['description'],
311
- 'textarea');
312
- }
313
- if (!empty($metaData['articleBody'])) {
314
- $blogPosting["articleBody"] = $KcSeoWPSchema->sanitizeOutPut($metaData['articleBody'],
315
- 'textarea');
316
- }
317
 
318
- if ( isset($metaData['video']) && is_array($metaData['video']) ) {
319
- $blog_posting_video = array();
320
- foreach ($metaData['video'] as $video_single) {
321
- if ( $video_single['name'] && $video_single['embedUrl'] ) {
322
- $video_single_schema = array(
323
- "@type" => "VideoObject",
324
- "name" => $video_single['name'] ? $KcSeoWPSchema->sanitizeOutPut($video_single['name']) : '',
325
- "description" => $video_single['description'] ? $KcSeoWPSchema->sanitizeOutPut($video_single['description']) : '',
326
- "contentUrl" => $video_single['contentUrl'] ? $KcSeoWPSchema->sanitizeOutPut($video_single['contentUrl']) : '',
327
- "embedUrl" => $video_single['embedUrl'] ? $KcSeoWPSchema->sanitizeOutPut($video_single['embedUrl']) : '',
328
- "uploadDate" => $video_single['uploadDate'] ? $KcSeoWPSchema->sanitizeOutPut($video_single['uploadDate']) : '',
329
- "duration" => $video_single['duration'] ? $KcSeoWPSchema->sanitizeOutPut($video_single['duration']) : '',
330
- );
331
- if (!empty($video_single['thumbnailUrl'])) {
332
- $img = $KcSeoWPSchema->imageInfo(absint($video_single['thumbnailUrl']));
333
- $video_single_schema["thumbnailUrl"] = $KcSeoWPSchema->sanitizeOutPut($img['url'], 'url');
334
- }
335
-
336
- $blog_posting_video = $video_single_schema;
337
- }
338
- }
339
- if ( $blog_posting_video ) {
340
- $blogPosting['video'] = $blog_posting_video;
341
- }
342
- }
343
-
344
- if ( isset($metaData['audio']) && is_array($metaData['audio']) ) {
345
- $blog_posting_audio = array();
346
- foreach ($metaData['audio'] as $audio_single) {
347
- if ( $audio_single['name'] && $audio_single['contentUrl'] ) {
348
- $audio_single_schema = array(
349
- "@type" => "AudioObject",
350
- "name" => $audio_single['name'] ? $KcSeoWPSchema->sanitizeOutPut($audio_single['name']) : '',
351
- "description" => $audio_single['description'] ? $KcSeoWPSchema->sanitizeOutPut($audio_single['description']) : '',
352
- "duration" => $audio_single['duration'] ? $KcSeoWPSchema->sanitizeOutPut($audio_single['duration']) : '',
353
- "contentUrl" => $audio_single['contentUrl'] ? $KcSeoWPSchema->sanitizeOutPut($audio_single['contentUrl']) : '',
354
- "encodingFormat" => $audio_single['encodingFormat'] ? $KcSeoWPSchema->sanitizeOutPut($audio_single['encodingFormat']) : '',
355
- );
356
-
357
- $blog_posting_audio = $audio_single_schema;
358
- }
359
- }
360
- if ( $blog_posting_audio ) {
361
- $blogPosting['audio'] = $blog_posting_audio;
362
- }
363
- }
364
 
365
- $html .= $this->get_jsonEncode(apply_filters('kcseo_snippet_blog_posting', $blogPosting, $metaData));
366
- break;
367
 
368
- case 'event':
369
- $event = array(
370
- "@context" => "https://schema.org",
371
- "@type" => "Event"
372
- );
373
- if (!empty($metaData['name'])) {
374
- $event["name"] = $KcSeoWPSchema->sanitizeOutPut($metaData['name']);
375
- }
376
- if (!empty($metaData['startDate'])) {
377
- $event["startDate"] = $KcSeoWPSchema->sanitizeOutPut($metaData['startDate']);
378
- }
379
- if (!empty($metaData['endDate'])) {
380
- $event["endDate"] = $KcSeoWPSchema->sanitizeOutPut($metaData['endDate']);
381
- }
382
- if (!empty($metaData['description'])) {
383
- $event["description"] = $KcSeoWPSchema->sanitizeOutPut($metaData['description'],
384
- 'textarea');
385
- }
386
- if (!empty($metaData['performerName'])) {
387
- $event["performer"] = array(
388
- "@type" => "Person",
389
- "name" => $KcSeoWPSchema->sanitizeOutPut($metaData['performerName'])
390
- );
391
- }
392
- if (!empty($metaData['image'])) {
393
- $event["image"] = $KcSeoWPSchema->sanitizeOutPut($metaData['image'], 'url');
394
- }
395
-
396
- if (!empty($metaData['organizer'])) {
397
- $event['organizer'] = [
398
- "@type" => "Organization",
399
- "name" =>$KcSeoWPSchema->sanitizeOutPut($metaData['organizer'], 'text'),
400
- "url" => $KcSeoWPSchema->sanitizeOutPut($metaData['organizerUrl'], 'url')
401
- ];
402
- }
403
- if (!empty($metaData['eventStatus'])) {
404
- $event['eventStatus'] = $KcSeoWPSchema->sanitizeOutPut($metaData['eventStatus']);
405
- }
406
- if (!empty($metaData['EventAttendanceMode'])) {
407
- $event['EventAttendanceMode'] = $KcSeoWPSchema->sanitizeOutPut($metaData['EventAttendanceMode']);
408
  }
 
 
 
 
 
 
 
 
 
 
 
409
 
410
- if (!empty($metaData['locationName'])) {
411
- $event["location"] = array(
412
- "@type" => "Place",
413
- "name" => $KcSeoWPSchema->sanitizeOutPut($metaData['locationName']),
414
- "address" => $KcSeoWPSchema->sanitizeOutPut($metaData['locationAddress'])
415
- );
416
- }
417
- if (!empty($metaData['price'])) {
418
- $event["offers"] = array(
419
- "@type" => "Offer",
420
- "price" => $KcSeoWPSchema->sanitizeOutPut($metaData['price'])
421
- );
422
- if (!empty($metaData['priceCurrency'])) {
423
- $event["offers"]['priceCurrency'] = $KcSeoWPSchema->sanitizeOutPut($metaData['priceCurrency']);
424
- }
425
- if (!empty($metaData['url'])) {
426
- $event["offers"]['url'] = $KcSeoWPSchema->sanitizeOutPut($metaData['url'], 'url');
427
- }
428
- if (!empty($metaData['availability'])) {
429
- $event["offers"]['availability'] = $KcSeoWPSchema->sanitizeOutPut($metaData['availability']);
430
- }
431
- if (!empty($metaData['validFrom'])) {
432
- $event["offers"]['validFrom'] = $KcSeoWPSchema->sanitizeOutPut($metaData['validFrom']);
433
- }
434
- }
435
- if (!empty($metaData['url'])) {
436
- $event["url"] = $KcSeoWPSchema->sanitizeOutPut($metaData['url'], 'url');
437
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
438
 
439
- $html .= $this->get_jsonEncode(apply_filters('kcseo_snippet_event', $event, $metaData));
440
- if (isset($metaData['review_active'])) {
441
- $event_review = array(
442
- "@context" => "https://schema.org",
443
- "@type" => "Review"
444
- );
445
-
446
- if (isset($metaData['review_datePublished']) && !empty($metaData['review_datePublished'])) {
447
- $event_review["datePublished"] = $KcSeoWPSchema->sanitizeOutPut($metaData['review_datePublished']);
448
- }
449
- if (isset($metaData['review_body']) && !empty($metaData['review_body'])) {
450
- $event_review["reviewBody"] = $KcSeoWPSchema->sanitizeOutPut($metaData['review_body'], 'textarea');
451
- }
452
- unset($event['@context']);
453
- $event_review["itemReviewed"] = $event;
454
- if (!empty($metaData['review_author'])) {
455
- $event_review["author"] = array(
456
- "@type" => "Person",
457
- "name" => $KcSeoWPSchema->sanitizeOutPut($metaData['review_author'])
458
- );
459
-
460
- if (isset($metaData['review_author_sameAs']) && !empty($metaData['review_author_sameAs'])) {
461
- $sameAs = KcSeoHelper::get_same_as($KcSeoWPSchema->sanitizeOutPut($metaData['review_author_sameAs'], "textarea"));
462
- if (!empty($sameAs)) {
463
- $event_review["author"]["sameAs"] = $sameAs;
464
- }
465
- }
466
- }
467
- if (isset($metaData['review_ratingValue'])) {
468
- $event_review["reviewRating"] = array(
469
- "@type" => "Rating",
470
- "ratingValue" => $KcSeoWPSchema->sanitizeOutPut($metaData['review_ratingValue'], 'number')
471
- );
472
- if (isset($metaData['review_bestRating'])) {
473
- $event_review["reviewRating"]["bestRating"] = $KcSeoWPSchema->sanitizeOutPut($metaData['review_bestRating'], 'number');
474
- }
475
- if (isset($metaData['review_worstRating'])) {
476
- $event_review["reviewRating"]["worstRating"] = $KcSeoWPSchema->sanitizeOutPut($metaData['review_worstRating'], 'number');
477
- }
478
- }
479
-
480
-
481
- $html .= $this->get_jsonEncode(apply_filters('kcseo_snippet_event_review', $event_review, $metaData));
482
- }
483
- break;
484
-
485
- case 'product':
486
- $product = array(
487
- "@context" => "https://schema.org",
488
- "@type" => "Product"
489
- );
490
- if (!empty($metaData['name'])) {
491
- $product["name"] = $KcSeoWPSchema->sanitizeOutPut($metaData['name']);
492
- }
493
- if (!empty($metaData['image'])) {
494
- $img = $KcSeoWPSchema->imageInfo(absint($metaData['image']));
495
- $product["image"] = $KcSeoWPSchema->sanitizeOutPut($img['url'], 'url');
496
- }
497
- if (!empty($metaData['description'])) {
498
- $product["description"] = $KcSeoWPSchema->sanitizeOutPut($metaData['description']);
499
- }
500
- /* product identifier */
501
- if (!empty($metaData['sku'])) {
502
- $product["sku"] = $KcSeoWPSchema->sanitizeOutPut($metaData['sku']);
503
- }
504
- if (!empty($metaData['brand'])) {
505
- $product['brand'] = [
506
- "@type" => "Brand",
507
- "name" => $KcSeoWPSchema->sanitizeOutPut($metaData['brand'])
508
- ];
509
- }
510
- if (!empty($metaData['identifier_type']) && !empty($metaData['identifier'])) {
511
- $product[$metaData['identifier_type']] = $KcSeoWPSchema->sanitizeOutPut($metaData['identifier']);
512
- }
513
- if (!empty($metaData['ratingValue'])) {
514
- $product["aggregateRating"] = array(
515
- "@type" => "AggregateRating",
516
- "ratingValue" => !empty($metaData['ratingValue']) ? $KcSeoWPSchema->sanitizeOutPut($metaData['ratingValue']) : null,
517
- "reviewCount" => !empty($metaData['reviewCount']) ? $KcSeoWPSchema->sanitizeOutPut($metaData['reviewCount']) : null
518
- );
519
- }
520
- if (!empty($metaData['reviewRatingValue']) || !empty($metaData['reviewBestRating']) || !empty($metaData['reviewWorstRating'])) {
521
- $product["review"] = array(
522
- "@type" => "Review",
523
- "reviewRating" => array(
524
- "@type" => "Rating",
525
- "ratingValue" => !empty($metaData['reviewRatingValue']) ? $KcSeoWPSchema->sanitizeOutPut($metaData['reviewRatingValue']) : null,
526
- "bestRating" => !empty($metaData['reviewBestRating']) ? $KcSeoWPSchema->sanitizeOutPut($metaData['reviewBestRating']) : null,
527
- "worstRating" => !empty($metaData['reviewWorstRating']) ? $KcSeoWPSchema->sanitizeOutPut($metaData['reviewWorstRating']) : null
528
- ),
529
- "author" => array(
530
- "@type" => "Person",
531
- "name" => !empty($metaData['reviewAuthor']) ? $KcSeoWPSchema->sanitizeOutPut($metaData['reviewAuthor']) : null
532
- )
533
- );
534
- }
535
- if (!empty($metaData['price'])) {
536
- $product["offers"] = array(
537
- "@type" => "Offer",
538
- "price" => $KcSeoWPSchema->sanitizeOutPut($metaData['price']),
539
- "priceValidUntil" => $KcSeoWPSchema->sanitizeOutPut($metaData['priceValidUntil']),
540
- "priceCurrency" => !empty($metaData['priceCurrency']) ? $KcSeoWPSchema->sanitizeOutPut($metaData['priceCurrency']) : null,
541
- "itemCondition" => !empty($metaData['itemCondition']) ? $KcSeoWPSchema->sanitizeOutPut($metaData['itemCondition']) : null,
542
- "availability" => !empty($metaData['availability']) ? $KcSeoWPSchema->sanitizeOutPut($metaData['availability']) : null,
543
- "url" => !empty($metaData['url']) ? $KcSeoWPSchema->sanitizeOutPut($metaData['url']) : null
544
- );
545
- }
546
- $html .= $this->get_jsonEncode(apply_filters('kcseo_snippet_product', $product, $metaData));
547
- break;
548
-
549
- case 'video':
550
- $video = array(
551
- "@context" => "https://schema.org",
552
- "@type" => "VideoObject"
553
- );
554
- if (!empty($metaData['name'])) {
555
- $video["name"] = $KcSeoWPSchema->sanitizeOutPut($metaData['name']);
556
- }
557
- if (!empty($metaData['description'])) {
558
- $video["description"] = $KcSeoWPSchema->sanitizeOutPut($metaData['description'], 'textarea');
559
- }
560
- if (!empty($metaData['thumbnailUrl'])) {
561
- $video["thumbnailUrl"] = $KcSeoWPSchema->sanitizeOutPut($metaData['thumbnailUrl'], 'url');
562
- }
563
- if (!empty($metaData['uploadDate'])) {
564
- $video["uploadDate"] = $KcSeoWPSchema->sanitizeOutPut($metaData['uploadDate']);
565
- }
566
- if (!empty($metaData['duration'])) {
567
- $video["duration"] = $KcSeoWPSchema->sanitizeOutPut($metaData['duration']);
568
- }
569
- if (!empty($metaData['contentUrl'])) {
570
- $video["contentUrl"] = $KcSeoWPSchema->sanitizeOutPut($metaData['contentUrl'], 'url');
571
- }
572
- if (!empty($metaData['embedUrl'])) {
573
- $video["embedUrl"] = $KcSeoWPSchema->sanitizeOutPut($metaData['embedUrl'], 'url');
574
- }
575
- if (!empty($metaData['interactionCount'])) {
576
- $video["interactionCount"] = $KcSeoWPSchema->sanitizeOutPut($metaData['interactionCount']);
577
- }
578
- if (!empty($metaData['expires'])) {
579
- $video["expires"] = $KcSeoWPSchema->sanitizeOutPut($metaData['expires']);
580
- }
581
- $html .= $this->get_jsonEncode(apply_filters('kcseo_snippet_video', $video, $metaData));
582
- break;
583
-
584
- case 'audio':
585
- $audio = array(
586
- "@context" => "https://schema.org",
587
- "@type" => "AudioObject"
588
- );
589
- if (!empty($metaData['name'])) {
590
- $audio["name"] = $KcSeoWPSchema->sanitizeOutPut($metaData['name']);
591
- }
592
- if (!empty($metaData['description'])) {
593
- $audio["description"] = $KcSeoWPSchema->sanitizeOutPut($metaData['description'], 'textarea');
594
- }
595
- if (!empty($metaData['contentUrl'])) {
596
- $audio["contentUrl"] = $KcSeoWPSchema->sanitizeOutPut($metaData['contentUrl'], 'url');
597
- }
598
- if (!empty($metaData['duration'])) {
599
- $audio["duration"] = $KcSeoWPSchema->sanitizeOutPut($metaData['duration']);
600
- }
601
- if (!empty($metaData['encodingFormat'])) {
602
- $audio["encodingFormat"] = $KcSeoWPSchema->sanitizeOutPut($metaData['encodingFormat']);
603
- }
604
- $html .= $this->get_jsonEncode(apply_filters('kcseo_snippet_audio', $audio, $metaData));
605
- break;
606
-
607
- case 'service':
608
- $service = array(
609
- "@context" => "https://schema.org",
610
- "@type" => "Service"
611
- );
612
- if (!empty($metaData['name'])) {
613
- $service["name"] = $KcSeoWPSchema->sanitizeOutPut($metaData['name']);
614
- }
615
- if (!empty($metaData['serviceType'])) {
616
- $service["serviceType"] = $KcSeoWPSchema->sanitizeOutPut($metaData['serviceType']);
617
- }
618
- if (!empty($metaData['award'])) {
619
- $service["award"] = $KcSeoWPSchema->sanitizeOutPut($metaData['award']);
620
- }
621
- if (!empty($metaData['category'])) {
622
- $service["category"] = $KcSeoWPSchema->sanitizeOutPut($metaData['category']);
623
- }
624
- if (!empty($metaData['providerMobility'])) {
625
- $service["providerMobility"] = $KcSeoWPSchema->sanitizeOutPut($metaData['providerMobility']);
626
- }
627
- if (!empty($metaData['additionalType'])) {
628
- $service["additionalType"] = $KcSeoWPSchema->sanitizeOutPut($metaData['additionalType']);
629
- }
630
- if (!empty($metaData['alternateName'])) {
631
- $service["alternateName"] = $KcSeoWPSchema->sanitizeOutPut($metaData['alternateName']);
632
- }
633
- if (!empty($metaData['image'])) {
634
- $service["image"] = $KcSeoWPSchema->sanitizeOutPut($metaData['image']);
635
- }
636
- if (!empty($metaData['mainEntityOfPage'])) {
637
- $service["mainEntityOfPage"] = $KcSeoWPSchema->sanitizeOutPut($metaData['mainEntityOfPage']);
638
- }
639
- if (!empty($metaData['sameAs'])) {
640
- $service["sameAs"] = $KcSeoWPSchema->sanitizeOutPut($metaData['sameAs']);
641
- }
642
- if (!empty($metaData['url'])) {
643
- $service["url"] = $KcSeoWPSchema->sanitizeOutPut($metaData['url'], 'url');
644
- }
645
- $html .= $this->get_jsonEncode(apply_filters('kcseo_snippet_service', $service, $metaData));
646
- break;
647
-
648
- case 'about':
649
- $aboutSchema = array(
650
- "@context" => "https://schema.org",
651
- "@type" => "AboutPage"
652
- );
653
-
654
- if (!empty($metaData['name'])) {
655
- $aboutSchema["name"] = $KcSeoWPSchema->sanitizeOutPut($metaData['name']);
656
- }
657
- if (!empty($metaData['description'])) {
658
- $aboutSchema["description"] = $KcSeoWPSchema->sanitizeOutPut($metaData['description'],
659
- 'textarea');
660
- }
661
- if (!empty($metaData['image'])) {
662
- $img = $KcSeoWPSchema->imageInfo(absint($metaData['image']));
663
- $aboutSchema["image"] = array(
664
- "@type" => "ImageObject",
665
- "url" => $KcSeoWPSchema->sanitizeOutPut($img['url'], 'url'),
666
- "height" => $img['height'],
667
- "width" => $img['width']
668
- );
669
- }
670
- if (!empty($metaData['url'])) {
671
- $aboutSchema["url"] = $KcSeoWPSchema->sanitizeOutPut($metaData['url'], 'url');
672
- }
673
-
674
- if (isset($metaData['sameAs']) && !empty($metaData['sameAs'])) {
675
- $sameAs = KcSeoHelper::get_same_as($KcSeoWPSchema->sanitizeOutPut($metaData['sameAs'], "textarea"));
676
- if (!empty($sameAs)) {
677
- $aboutSchema["sameAs"] = $sameAs;
678
- }
679
- }
680
-
681
- $html .= $this->get_jsonEncode(apply_filters('kcseo_snippet_about', $aboutSchema, $metaData));
682
- break;
683
-
684
- case 'contact':
685
- $contactSchema = array(
686
- "@context" => "https://schema.org",
687
- "@type" => "ContactPage"
688
- );
689
-
690
- if (!empty($metaData['name'])) {
691
- $contactSchema["name"] = $KcSeoWPSchema->sanitizeOutPut($metaData['name']);
692
- }
693
- if (!empty($metaData['description'])) {
694
- $contactSchema["description"] = $KcSeoWPSchema->sanitizeOutPut($metaData['description'],
695
- 'textarea');
696
- }
697
- if (!empty($metaData['image'])) {
698
- $img = $KcSeoWPSchema->imageInfo(absint($metaData['image']));
699
- $contactSchema["image"] = array(
700
- "@type" => "ImageObject",
701
- "url" => $KcSeoWPSchema->sanitizeOutPut($img['url'], 'url'),
702
- "height" => $img['height'],
703
- "width" => $img['width']
704
- );
705
- }
706
- if (!empty($metaData['url'])) {
707
- $contactSchema["url"] = $KcSeoWPSchema->sanitizeOutPut($metaData['url'], 'url');
708
- }
709
-
710
- $html .= $this->get_jsonEncode(apply_filters('kcseo_snippet_contact', $contactSchema, $metaData));
711
- break;
712
-
713
- case 'review':
714
- $review = array(
715
- "@context" => "https://schema.org",
716
- "@type" => "Review"
717
- );
718
- if (!empty($metaData['itemName'])) {
719
- $review["itemReviewed"] = array(
720
- "@type" => "product",
721
- "name" => $KcSeoWPSchema->sanitizeOutPut($metaData['itemName'])
722
- );
723
- }
724
- if (!empty($metaData['ratingValue'])) {
725
- $review["reviewRating"] = array(
726
- "@type" => "Rating",
727
- "ratingValue" => $KcSeoWPSchema->sanitizeOutPut($metaData['ratingValue']),
728
- "bestRating" => $KcSeoWPSchema->sanitizeOutPut($metaData['bestRating']),
729
- "worstRating" => $KcSeoWPSchema->sanitizeOutPut($metaData['worstRating'])
730
- );
731
- }
732
- if (!empty($metaData['name'])) {
733
- $review["name"] = $KcSeoWPSchema->sanitizeOutPut($metaData['name']);
734
- }
735
- if (!empty($metaData['author'])) {
736
- $review["author"] = array(
737
- "@type" => "Person",
738
- "name" => $KcSeoWPSchema->sanitizeOutPut($metaData['author'])
739
- );
740
- }
741
- if (!empty($metaData['reviewBody'])) {
742
- $review["reviewBody"] = $KcSeoWPSchema->sanitizeOutPut($metaData['reviewBody']);
743
- }
744
- if (!empty($metaData['datePublished'])) {
745
- $review["datePublished"] = $KcSeoWPSchema->sanitizeOutPut($metaData['datePublished']);
746
- }
747
- if (!empty($metaData['publisher'])) {
748
- $review["publisher"] = array(
749
- "@type" => "Organization",
750
- "name" => $KcSeoWPSchema->sanitizeOutPut($metaData['publisher'])
751
- );
752
- }
753
- $html .= $this->get_jsonEncode(apply_filters('kcseo_snippet_review', $review, $metaData));
754
- break;
755
- case 'aggregate_rating':
756
- $aRating = array(
757
- "@context" => "https://schema.org",
758
- "@type" => !empty($metaData['schema_type']) ? $metaData['schema_type'] : "LocalBusiness"
759
- );
760
- if ("LocalBusiness" === $aRating['@type']) {
761
- $aRating['@id'] = get_home_url();
762
- }
763
- if (!empty($metaData['name'])) {
764
- $aRating["name"] = $KcSeoWPSchema->sanitizeOutPut($metaData['name']);
765
- }
766
- if (!empty($metaData['description'])) {
767
- $aRating["description"] = $KcSeoWPSchema->sanitizeOutPut($metaData['description'],
768
- 'textarea');
769
- }
770
- if ($aRating["@type"] != "Organization") {
771
- if (!empty($metaData['image'])) {
772
- $img = $KcSeoWPSchema->imageInfo(absint($metaData['image']));
773
- $aRating["image"] = array(
774
- "@type" => "ImageObject",
775
- "url" => $KcSeoWPSchema->sanitizeOutPut($img['url'], 'url'),
776
- "height" => $img['height'],
777
- "width" => $img['width']
778
- );
779
- }
780
- if (!empty($metaData['priceRange'])) {
781
- $aRating["priceRange"] = $KcSeoWPSchema->sanitizeOutPut($metaData['priceRange']);
782
- }
783
- if (!empty($metaData['telephone'])) {
784
- $aRating["telephone"] = $KcSeoWPSchema->sanitizeOutPut($metaData['telephone']);
785
- }
786
-
787
- if (!empty($metaData['address'])) {
788
- $aRating["address"] = $KcSeoWPSchema->sanitizeOutPut($metaData['address']);
789
- }
790
- }
791
 
792
- if (!empty($metaData['ratingValue'])) {
793
- $rValue = array();
794
- $rValue["@type"] = "AggregateRating";
795
- $rValue["ratingValue"] = $KcSeoWPSchema->sanitizeOutPut($metaData['ratingValue']);
796
- if (!empty($metaData['bestRating'])) {
797
- $rValue["bestRating"] = $KcSeoWPSchema->sanitizeOutPut($metaData['bestRating']);
798
- }
799
- if (!empty($metaData['worstRating'])) {
800
- $rValue["worstRating"] = $KcSeoWPSchema->sanitizeOutPut($metaData['worstRating']);
801
- }
802
- if (!empty($metaData['ratingCount'])) {
803
- $rValue["ratingCount"] = $KcSeoWPSchema->sanitizeOutPut($metaData['ratingCount']);
804
- }
805
-
806
- $aRating["aggregateRating"] = $rValue;
807
- }
808
- $html .= $this->get_jsonEncode(apply_filters('kcseo_snippet_aggregate_rating', $aRating, $metaData));
809
- break;
810
-
811
- case 'restaurant':
812
- $restaurant = array(
813
- "@context" => "https://schema.org",
814
- "@type" => "Restaurant"
815
- );
816
- if (!empty($metaData['name'])) {
817
- $restaurant["name"] = $KcSeoWPSchema->sanitizeOutPut($metaData['name']);
818
- }
819
- if (!empty($metaData['description'])) {
820
- $restaurant["description"] = $KcSeoWPSchema->sanitizeOutPut($metaData['description'],
821
- 'textarea');
822
- }
823
- if (!empty($metaData['openingHours'])) {
824
- $restaurant["openingHours"] = $KcSeoWPSchema->sanitizeOutPut($metaData['openingHours'],
825
- 'textarea');
826
- }
827
- if (!empty($metaData['telephone'])) {
828
- $restaurant["telephone"] = $KcSeoWPSchema->sanitizeOutPut($metaData['telephone']);
829
- }
830
- if (!empty($metaData['menu'])) {
831
- $restaurant["menu"] = $KcSeoWPSchema->sanitizeOutPut($metaData['menu'], 'url');
832
- }
833
- if (!empty($metaData['image'])) {
834
- $img = $KcSeoWPSchema->imageInfo(absint($metaData['image']));
835
- $restaurant["image"] = $KcSeoWPSchema->sanitizeOutPut($img['url'], 'url');
836
- }
837
- if (!empty($metaData['address'])) {
838
- $restaurant["address"] = $KcSeoWPSchema->sanitizeOutPut($metaData['address'], 'textarea');
839
- }
840
- if (!empty($metaData['priceRange'])) {
841
- $restaurant["priceRange"] = $KcSeoWPSchema->sanitizeOutPut($metaData['priceRange']);
842
- }
843
- if (!empty($metaData['servesCuisine'])) {
844
- $restaurant["servesCuisine"] = $KcSeoWPSchema->sanitizeOutPut($metaData['servesCuisine']);
845
- }
846
- $html .= $this->get_jsonEncode(apply_filters('kcseo_snippet_restaurant', $restaurant, $metaData));
847
- break;
848
-
849
- case 'localBusiness':
850
- $local_business = array(
851
- "@context" => "https://schema.org",
852
- "@type" => "LocalBusiness",
853
- '@id' => get_home_url()
854
- );
855
- if (!empty($metaData['name'])) {
856
- $local_business["name"] = $KcSeoWPSchema->sanitizeOutPut($metaData['name']);
857
- }
858
- if (!empty($metaData['description'])) {
859
- $local_business["description"] = $KcSeoWPSchema->sanitizeOutPut($metaData['description'],
860
- 'textarea');
861
- }
862
- if (!empty($metaData['image'])) {
863
- $img = $KcSeoWPSchema->imageInfo(absint($metaData['image']));
864
- $local_business["image"] = $KcSeoWPSchema->sanitizeOutPut($img['url'], 'url');
865
- }
866
- if (!empty($metaData['priceRange'])) {
867
- $local_business["priceRange"] = $KcSeoWPSchema->sanitizeOutPut($metaData['priceRange']);
868
- }
869
- if (!empty($metaData['addressLocality']) || !empty($metaData['addressRegion'])
870
- || !empty($metaData['postalCode']) || !empty($metaData['streetAddress'])) {
871
- $local_business["address"] = array(
872
- "@type" => "PostalAddress",
873
- "addressLocality" => $KcSeoWPSchema->sanitizeOutPut($metaData['addressLocality']),
874
- "addressRegion" => $KcSeoWPSchema->sanitizeOutPut($metaData['addressRegion']),
875
- "postalCode" => $KcSeoWPSchema->sanitizeOutPut($metaData['postalCode']),
876
- "streetAddress" => $KcSeoWPSchema->sanitizeOutPut($metaData['streetAddress'])
877
- );
878
- }
879
 
880
- if (!empty($metaData['telephone'])) {
881
- $local_business["telephone"] = $KcSeoWPSchema->sanitizeOutPut($metaData['telephone']);
882
- }
883
- $html .= $this->get_jsonEncode(apply_filters('kcseo_snippet_local_business', $local_business, $metaData));
884
- if (isset($metaData['review_active'])) {
885
- $local_business_review = array(
886
- "@context" => "https://schema.org",
887
- "@type" => "Review",
888
- );
889
- if (isset($metaData['review_datePublished']) && !empty($metaData['review_datePublished'])) {
890
- $local_business_review["datePublished"] = $KcSeoWPSchema->sanitizeOutPut($metaData['review_datePublished']);
891
- }
892
- if (isset($metaData['review_body']) && !empty($metaData['review_body'])) {
893
- $local_business_review["reviewBody"] = $KcSeoWPSchema->sanitizeOutPut($metaData['review_body'], 'textarea');
894
- }
895
-
896
- unset($local_business['@context']);
897
- if (isset($local_business["description"])) {
898
- $local_business_review["description"] = KcSeoHelper::filter_content($local_business["description"], 200);
899
- unset($local_business["description"]);
900
- }
901
- if (isset($metaData['review_sameAs']) && !empty($metaData['review_sameAs'])) {
902
- $sameAs = KcSeoHelper::get_same_as($KcSeoWPSchema->sanitizeOutPut($metaData['review_sameAs'], "textarea"));
903
- if (!empty($sameAs)) {
904
- $local_business["sameAs"] = $sameAs;
905
- }
906
- }
907
-
908
- $local_business_review["itemReviewed"] = $local_business;
909
- if (!empty($metaData['review_author'])) {
910
- $local_business_review["author"] = array(
911
- "@type" => "Person",
912
- "name" => $KcSeoWPSchema->sanitizeOutPut($metaData['review_author'])
913
- );
914
-
915
- if (isset($metaData['review_author_sameAs']) && !empty($metaData['review_author_sameAs'])) {
916
- $sameAs = KcSeoHelper::get_same_as($KcSeoWPSchema->sanitizeOutPut($metaData['review_author_sameAs'], "textarea"));
917
- if (!empty($sameAs)) {
918
- $local_business_review["author"]["sameAs"] = $sameAs;
919
- }
920
- }
921
- }
922
- if (isset($metaData['review_ratingValue'])) {
923
- $local_business_review["reviewRating"] = array(
924
- "@type" => "Rating",
925
- "ratingValue" => $KcSeoWPSchema->sanitizeOutPut($metaData['review_ratingValue'], 'number')
926
- );
927
- if (isset($metaData['review_bestRating'])) {
928
- $local_business_review["reviewRating"]["bestRating"] = $KcSeoWPSchema->sanitizeOutPut($metaData['review_bestRating'], 'number');
929
- }
930
- if (isset($metaData['review_worstRating'])) {
931
- $local_business_review["reviewRating"]["worstRating"] = $KcSeoWPSchema->sanitizeOutPut($metaData['review_worstRating'], 'number');
932
- }
933
- }
934
- $html .= $this->get_jsonEncode(apply_filters('kcseo_snippet_local_business_review', $local_business_review, $metaData));
935
- }
936
- break;
937
- case 'specialAnnouncement':
938
- $announcement = array(
939
- "@context" => "https://schema.org",
940
- "@type" => "SpecialAnnouncement",
941
- "category" => "https://www.wikidata.org/wiki/Q81068910"
942
- );
943
- if (!empty($metaData['name'])) {
944
- $announcement['name'] = $KcSeoWPSchema->sanitizeOutPut($metaData['name']);
945
- }
946
- if (!empty($metaData['datePublished'])) {
947
- $announcement['datePosted'] = $KcSeoWPSchema->sanitizeOutPut($metaData['datePublished']);
948
- }
949
- if (!empty($metaData['expires'])) {
950
- $announcement['expires'] = $KcSeoWPSchema->sanitizeOutPut($metaData['expires']);
951
- }
952
- if (!empty($metaData['text'])) {
953
- $announcement['text'] = $KcSeoWPSchema->sanitizeOutPut($metaData['text'], 'textarea');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
954
  }
955
- if (!empty($metaData['url'])) {
956
- $announcement['url'] = $KcSeoWPSchema->sanitizeOutPut($metaData['url'], 'url');
957
  }
958
- if (isset($metaData['locations']) && is_array($metaData['locations']) && !empty($metaData['locations'])) {
959
- $locations_schema = [];
960
- foreach ($metaData['locations'] as $position => $location) {
961
- if ($location['type']) {
962
- $location_schema = array(
963
- "@type" => $KcSeoWPSchema->sanitizeOutPut($location['type']),
964
- 'name' => !empty($location['name']) ? $KcSeoWPSchema->sanitizeOutPut($location['name']) : "",
965
- 'url' => !empty($location['url']) ? $KcSeoWPSchema->sanitizeOutPut($location['url'], 'url') : '',
966
- "address" => [
967
- "@type" => "PostalAddress",
968
- ]
969
- );
970
- if (!empty($location['id'])) {
971
- $location_schema['@id'] = $KcSeoWPSchema->sanitizeOutPut($location['id']);
972
- }
973
- if (!empty($location['image'])) {
974
- $img = $KcSeoWPSchema->imageInfo(absint($location['image']));
975
- $location_schema["image"] = $KcSeoWPSchema->sanitizeOutPut($img['url'], 'url');
976
- }
977
- if (!empty($location['url'])) {
978
- $location_schema['url'] = $KcSeoWPSchema->sanitizeOutPut($location['url'], 'url');
979
- }
980
- if (!empty($location['address_street'])) {
981
- $location_schema['address']['streetAddress'] = $KcSeoWPSchema->sanitizeOutPut($location['address_street']);
982
- }
983
- if (!empty($location['address_locality'])) {
984
- $location_schema['address']['addressLocality'] = $KcSeoWPSchema->sanitizeOutPut($location['address_locality']);
985
- }
986
- if (!empty($location['address_post_code'])) {
987
- $location_schema['address']['postalCode'] = $KcSeoWPSchema->sanitizeOutPut($location['address_post_code']);
988
- }
989
- if (!empty($location['address_region'])) {
990
- $location_schema['address']['addressRegion'] = $KcSeoWPSchema->sanitizeOutPut($location['address_region']);
991
- }
992
- if (!empty($location['address_country'])) {
993
- $location_schema['address']['addressCountry'] = $KcSeoWPSchema->sanitizeOutPut($location['address_country']);
994
- }
995
- if (!empty($location['priceRange'])) {
996
- $location_schema["priceRange"] = $KcSeoWPSchema->sanitizeOutPut($location['priceRange']);
997
- }
998
- if (!empty($location['telephone'])) {
999
- $location_schema["telephone"] = $KcSeoWPSchema->sanitizeOutPut($location['telephone']);
1000
- }
1001
- array_push($locations_schema, $location_schema);
1002
- }
1003
-
1004
- }
1005
- if (count($locations_schema) === 1) {
1006
- $announcement['announcementLocation'] = $locations_schema[0];
1007
- } else {
1008
- $announcement['announcementLocation'] = $locations_schema;
1009
- }
1010
  }
1011
- $html .= $this->get_jsonEncode(apply_filters('kcseo_snippet_item_list', $announcement, $metaData));
1012
- break;
1013
- default:
1014
- break;
1015
- }
1016
-
1017
- }
1018
-
1019
- return $html;
1020
- }
1021
-
1022
- function get_field($data) {
1023
- $html = null;
1024
- global $KcSeoWPSchema;
1025
- $id = $data['id'];
1026
- $name = $data['name'];
1027
- $value = $data['value'];
1028
- $attr = !empty($data['attr']) ? $data['attr'] : null;
1029
-
1030
- $class = isset($data['class']) ? ($data['class'] ? $data['class'] : null) : null;
1031
- $require = (isset($data['required']) ? ($data['required'] ? sprintf('<span data-kcseo-tooltip="%s" class="required">*</span>', __("Required", "wp-seo-structured-data-schema")) : null) : null);
1032
- $recommended = (isset($data['recommended']) ? ($data['recommended'] ? sprintf('<span data-kcseo-tooltip="%s" class="recommended">*</span>', __("Recommended", "wp-seo-structured-data-schema")) : null) : null);
1033
- $title = (isset($data['title']) ? ($data['title'] ? $data['title'] : null) : null);
1034
- $desc = (isset($data['desc']) ? ($data['desc'] ? $data['desc'] : null) : null);
1035
- $holderClass = (!empty($data['holderClass']) ? $data['holderClass'] : null);
1036
-
1037
- switch ($data['type']) {
1038
- case 'checkbox':
1039
- $checked = ($value ? "checked" : null);
1040
- $html .= "<div class='kSeo-checkbox-wrapper'>";
1041
- $html .= "<label for='{$id}'><input type='checkbox' id='{$id}' class='{$class}' name='{$name}' {$checked} value='1' /> Enable</label>";
1042
- $html .= "</div>";
1043
- break;
1044
- case 'text':
1045
- $html .= "<input type='text' id='{$id}' class='{$class}' {$attr} name='{$name}' value='" . esc_html($value) . "' />";
1046
- break;
1047
- case 'number':
1048
- if ($data['fieldId'] == 'price') {
1049
- $html .= "<input type='number' step='any' id='{$id}' class='{$class}' {$attr} name='{$name}' value='" . esc_attr($value) . "' />";
1050
- } else {
1051
- $html .= "<input type='number' id='{$id}' class='{$class}' name='{$name}' {$attr} value='" . esc_attr($value) . "' />";
1052
- }
1053
- break;
1054
- case 'textarea':
1055
- $html .= "<textarea id='{$id}' class='{$class}' {$attr} name='{$name}' >" . wp_kses($value,
1056
- array()) . "</textarea>";
1057
- break;
1058
- case 'image':
1059
- $html .= '<div class="kSeo-image">';
1060
- $ImageId = !empty($value) ? absint($value) : 0;
1061
- $image = $ingInfo = null;
1062
- if ($ImageId) {
1063
- $image = wp_get_attachment_image($ImageId, "thumbnail");
1064
- $imgData = $KcSeoWPSchema->imageInfo($ImageId);
1065
- $ingInfo .= "<span><strong>URL: </strong>{$imgData['url']}</span>";
1066
- $ingInfo .= "<span><strong>Width: </strong>{$imgData['width']}px</span>";
1067
- $ingInfo .= "<span><strong>Height: </strong>{$imgData['height']}px</span>";
1068
- }
1069
- $html .= "<div class='kSeo-image-wrapper'>";
1070
- $html .= '<span class="kSeoImgAdd"><span class="dashicons dashicons-plus-alt"></span></span>';
1071
- $html .= '<span class="kSeoImgRemove ' . ($image ? null : "kSeo-hidden") . '"><span class="dashicons dashicons-trash"></span></span>';
1072
- $html .= '<div class="kSeo-image-preview">' . $image . '</div>';
1073
- $html .= "<input type='hidden' name='{$name}' value='" . absint($ImageId) . "' />";
1074
- $html .= "</div>";
1075
- $html .= "<div class='image-info'>{$ingInfo}</div>";
1076
- $html .= '</div>';
1077
- break;
1078
- case 'select':
1079
- $html .= "<select name='{$name}' {$attr} class='select2 {$class}' id='{$id}'>";
1080
- if (!empty($data['empty'])) {
1081
- $html .= "<option value=''>{$data['empty']}</option>";
1082
- }
1083
- if (!empty($data['options']) && is_array($data['options'])) {
1084
- if ($this->isAssoc($data['options'])) {
1085
- foreach ($data['options'] as $optKey => $optValue) {
1086
- $slt = ($optKey == $value ? "selected" : null);
1087
- $html .= "<option value='" . esc_attr($optKey) . "' {$slt}>" . esc_html($optValue) . "</option>";
1088
- }
1089
- } else {
1090
- foreach ($data['options'] as $optValue) {
1091
- $slt = ($optValue == $value ? "selected" : null);
1092
- $html .= "<option value='" . esc_attr($optValue) . "' {$slt}>" . esc_html($optValue) . "</option>";
1093
- }
1094
  }
1095
- }
1096
- $html .= "</select>";
1097
- break;
1098
- case 'schema_type':
1099
- $html .= "<select name='{$name}' class='select2 {$class}' id='{$id}'>";
1100
- if (!empty($data['empty'])) {
1101
- $html .= "<option value=''>{$data['empty']}</option>";
1102
- }
1103
-
1104
- foreach ($data['options'] as $key => $site) {
1105
- if (is_array($site)) {
1106
- $slt = ($key == $value ? "selected" : null);
1107
- $html .= "<option value='$key' $slt>&nbsp;&nbsp;&nbsp;$key</option>";
1108
- foreach ($site as $inKey => $inSite) {
1109
- if (is_array($inSite)) {
1110
- $slt = ($inKey == $value ? "selected" : null);
1111
- $html .= "<option value='$inKey' $slt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$inKey</option>";
1112
- foreach ($inSite as $inInKey => $inInSite) {
1113
- if (is_array($inInSite)) {
1114
- $slt = ($inInKey == $value ? "selected" : null);
1115
- $html .= "<option value='$inInKey' $slt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$inInKey</option>";
1116
- foreach ($inInSite as $iSite) {
1117
- $slt = ($iSite == $value ? "selected" : null);
1118
- $html .= "<option value='$iSite' $slt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$iSite</option>";
1119
- }
1120
- } else {
1121
- $slt = ($inInSite == $value ? "selected" : null);
1122
- $html .= "<option value='$inInSite' $slt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$inInSite</option>";
1123
- }
1124
- }
1125
- } else {
1126
- $slt = ($inSite == $value ? "selected" : null);
1127
- $html .= "<option value='$inSite' $slt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$inSite</option>";
1128
- }
1129
- }
1130
- } else {
1131
- $slt = ($site == $value ? "selected" : null);
1132
- $html .= "<option value='$site' $slt>$site</option>";
1133
  }
1134
- }
1135
- $html .= "</select>";
1136
- break;
1137
- default:
1138
- $html .= "<input id='{$id}' type='{$data['type']}' {$attr} value='" . esc_attr($value) . "' name='$name' />";
1139
- break;
1140
-
1141
- }
1142
- $label = "<label class='field-label' for='{$id}'>{$title}{$require}{$recommended}</label>";
1143
- $field_html = sprintf('<div class="field-content" id="%s-content">%s<p class="description">%s</div>', $id, $html, $desc);
1144
- if ($data['type'] == 'heading') {
1145
- $holderClass .= ' kcseo-heading-container';
1146
- $label = '';
1147
- $field_html = sprintf('<div class="kcseo-section-title-wrap">%s%s</div>',
1148
- $title ? sprintf('<h5>%s</h5>', $title) : '',
1149
- $desc ? sprintf('<p class="description">%s</p>', $desc) : null
1150
- );
1151
- }
1152
-
1153
- $html = sprintf('<div class="field-container %s" id="%s-container">%s%s</div>',
1154
- $holderClass,
1155
- $id,
1156
- $label,
1157
- $field_html
1158
- );
1159
-
1160
- return $html;
1161
- }
1162
-
1163
- /**
1164
- * @param array $data
1165
- *
1166
- * @return string|null
1167
- */
1168
- function get_jsonEncode($data = array()) {
1169
- $html = null;
1170
- if (!empty($data) && is_array($data)) {
1171
- $html .= '<script type="application/ld+json">' . json_encode($data,
1172
- JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES) . '</script>';
1173
- }
1174
-
1175
- return $html;
1176
- }
1177
-
1178
- function imgInfo($url = null) {
1179
- $img = array();
1180
- if ($url) {
1181
- $imgA = @getimagesize($url);
1182
- if (is_array($imgA) && !empty($imgA)) {
1183
- $img['width'] = $imgA[0];
1184
- $img['height'] = $imgA[1];
1185
- } else {
1186
- $img['width'] = 0;
1187
- $img['height'] = 0;
1188
- }
1189
- }
1190
-
1191
- return $img;
1192
- }
1193
-
1194
- function isAssoc($array) {
1195
- $keys = array_keys($array);
1196
-
1197
- return $keys !== array_keys($keys);
1198
- }
1199
-
1200
-
1201
- }
1202
- 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 = [
19
+ '@context' => 'https://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'] = [
27
+ '@type' => 'WebPage',
28
+ '@id' => $KcSeoWPSchema->sanitizeOutPut( $metaData['mainEntityOfPage'] ),
29
+ ];
30
+ }
31
+ if ( ! empty( $metaData['author'] ) ) {
32
+ $article['author'] = [
33
+ '@type' => 'Person',
34
+ 'name' => $KcSeoWPSchema->sanitizeOutPut( $metaData['author'] ),
35
+ ];
36
 
37
+ if ( ! empty( $metaData['author_url'] ) ) {
38
+ $article['author']['url'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['author_url'], 'url' );
39
+ }
40
+ }
41
+ if ( ! empty( $metaData['publisher'] ) ) {
42
+ if ( ! empty( $metaData['publisherImage'] ) ) {
43
+ $img = $KcSeoWPSchema->imageInfo( absint( $metaData['publisherImage'] ) );
44
+ $plA = [
45
+ '@type' => 'ImageObject',
46
+ 'url' => $KcSeoWPSchema->sanitizeOutPut( $img['url'], 'url' ),
47
+ 'height' => $img['height'],
48
+ 'width' => $img['width'],
49
+ ];
50
+ } else {
51
+ $plA = [];
52
+ }
53
+ $article['publisher'] = [
54
+ '@type' => 'Organization',
55
+ 'name' => $KcSeoWPSchema->sanitizeOutPut( $metaData['publisher'] ),
56
+ 'logo' => $plA,
57
+ ];
58
+ }
59
+ if ( ! empty( $metaData['alternativeHeadline'] ) ) {
60
+ $article['alternativeHeadline'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['alternativeHeadline'] );
61
+ }
62
+ if ( ! empty( $metaData['image'] ) ) {
63
+ $img = $KcSeoWPSchema->imageInfo( absint( $metaData['image'] ) );
64
+ $article['image'] = [
65
+ '@type' => 'ImageObject',
66
+ 'url' => $KcSeoWPSchema->sanitizeOutPut( $img['url'], 'url' ),
67
+ 'height' => $img['height'],
68
+ 'width' => $img['width'],
69
+ ];
70
+ }
71
+ if ( ! empty( $metaData['datePublished'] ) ) {
72
+ $article['datePublished'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['datePublished'] );
73
+ }
74
+ if ( ! empty( $metaData['dateModified'] ) ) {
75
+ $article['dateModified'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['dateModified'] );
76
+ }
77
+ if ( ! empty( $metaData['description'] ) ) {
78
+ $article['description'] = $KcSeoWPSchema->sanitizeOutPut(
79
+ $metaData['description'],
80
+ 'textarea'
81
+ );
82
+ }
83
+ if ( ! empty( $metaData['articleBody'] ) ) {
84
+ $article['articleBody'] = $KcSeoWPSchema->sanitizeOutPut(
85
+ $metaData['articleBody'],
86
+ 'textarea'
87
+ );
88
+ }
89
 
90
+ if ( isset( $metaData['video'] ) && is_array( $metaData['video'] ) ) {
91
+ $article_video = [];
92
+ foreach ( $metaData['video'] as $video_single ) {
93
+ if ( $video_single['name'] && $video_single['embedUrl'] ) {
94
+ $video_single_schema = [
95
+ '@type' => 'VideoObject',
96
+ 'name' => $video_single['name'] ? $KcSeoWPSchema->sanitizeOutPut( $video_single['name'] ) : '',
97
+ 'description' => $video_single['description'] ? $KcSeoWPSchema->sanitizeOutPut( $video_single['description'] ) : '',
98
+ 'contentUrl' => $video_single['contentUrl'] ? $KcSeoWPSchema->sanitizeOutPut( $video_single['contentUrl'] ) : '',
99
+ 'embedUrl' => $video_single['embedUrl'] ? $KcSeoWPSchema->sanitizeOutPut( $video_single['embedUrl'] ) : '',
100
+ 'uploadDate' => $video_single['uploadDate'] ? $KcSeoWPSchema->sanitizeOutPut( $video_single['uploadDate'] ) : '',
101
+ 'duration' => $video_single['duration'] ? $KcSeoWPSchema->sanitizeOutPut( $video_single['duration'] ) : '',
102
+ ];
103
+ if ( ! empty( $video_single['thumbnailUrl'] ) ) {
104
+ $img = $KcSeoWPSchema->imageInfo( absint( $video_single['thumbnailUrl'] ) );
105
+ $video_single_schema['thumbnailUrl'] = $KcSeoWPSchema->sanitizeOutPut( $img['url'], 'url' );
106
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
107
 
108
+ $article_video = $video_single_schema;
109
+ }
110
+ }
111
+ if ( $article_video ) {
112
+ $article['video'] = $article_video;
113
+ }
114
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
115
 
116
+ if ( isset( $metaData['audio'] ) && is_array( $metaData['audio'] ) ) {
117
+ $article_audio = [];
118
+ foreach ( $metaData['audio'] as $audio_single ) {
119
+ if ( $audio_single['name'] && $audio_single['contentUrl'] ) {
120
+ $audio_single_schema = [
121
+ '@type' => 'AudioObject',
122
+ 'name' => $audio_single['name'] ? $KcSeoWPSchema->sanitizeOutPut( $audio_single['name'] ) : '',
123
+ 'description' => $audio_single['description'] ? $KcSeoWPSchema->sanitizeOutPut( $audio_single['description'] ) : '',
124
+ 'duration' => $audio_single['duration'] ? $KcSeoWPSchema->sanitizeOutPut( $audio_single['duration'] ) : '',
125
+ 'contentUrl' => $audio_single['contentUrl'] ? $KcSeoWPSchema->sanitizeOutPut( $audio_single['contentUrl'] ) : '',
126
+ 'encodingFormat' => $audio_single['encodingFormat'] ? $KcSeoWPSchema->sanitizeOutPut( $audio_single['encodingFormat'] ) : '',
127
+ ];
128
+
129
+ $article_audio = $audio_single_schema;
130
+ }
131
+ }
132
+ if ( $article_audio ) {
133
+ $article['audio'] = $article_audio;
134
+ }
135
+ }
136
+
137
+ $html .= $this->get_jsonEncode( apply_filters( 'kcseo_snippet_article', $article, $metaData ) );
138
+ break;
139
+ case 'TechArticle':
140
+ $techarticle = [
141
+ '@context' => 'https://schema.org',
142
+ '@type' => 'TechArticle',
143
+ ];
144
+ if ( ! empty( $metaData['headline'] ) ) {
145
+ $techarticle['headline'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['headline'] );
146
+ }
147
+ if ( ! empty( $metaData['mainEntityOfPage'] ) ) {
148
+ $techarticle['mainEntityOfPage'] = [
149
+ '@type' => 'WebPage',
150
+ '@id' => $KcSeoWPSchema->sanitizeOutPut( $metaData['mainEntityOfPage'] ),
151
+ ];
152
+ }
153
+ if ( ! empty( $metaData['author'] ) ) {
154
+ $techarticle['author'] = [
155
+ '@type' => 'Person',
156
+ 'name' => $KcSeoWPSchema->sanitizeOutPut( $metaData['author'] ),
157
+ ];
158
+ if ( ! empty( $metaData['author_type'] ) ) {
159
+ $techarticle['author']['@type'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['author_type'] );
160
+ }
161
+ if ( ! empty( $metaData['author_url'] ) ) {
162
+ $techarticle['author']['url'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['author_url'], 'url' );
163
+ }
164
+ if ( ! empty( $metaData['author_description'] ) ) {
165
+ $techarticle['author']['description'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['author_description'], 'url' );
166
+ }
167
+ }
168
+
169
+ if ( ! empty( $metaData['image'] ) ) {
170
+ $img = $KcSeoWPSchema->imageInfo( absint( $metaData['image'] ) );
171
+ $techarticle['image'] = [
172
+ '@type' => 'ImageObject',
173
+ 'url' => $KcSeoWPSchema->sanitizeOutPut( $img['url'], 'url' ),
174
+ 'height' => $img['height'],
175
+ 'width' => $img['width'],
176
+ ];
177
+ }
178
+ if ( ! empty( $metaData['datePublished'] ) ) {
179
+ $techarticle['datePublished'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['datePublished'] );
180
+ }
181
+ if ( ! empty( $metaData['dateModified'] ) ) {
182
+ $techarticle['dateModified'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['dateModified'] );
183
+ }
184
+
185
+ if ( ! empty( $metaData['publisher'] ) ) {
186
+ if ( ! empty( $metaData['publisherImage'] ) ) {
187
+ $img = $KcSeoWPSchema->imageInfo( absint( $metaData['publisherImage'] ) );
188
+ $plA = [
189
+ '@type' => 'ImageObject',
190
+ 'url' => $KcSeoWPSchema->sanitizeOutPut( $img['url'], 'url' ),
191
+ 'height' => $img['height'],
192
+ 'width' => $img['width'],
193
+ ];
194
+ } else {
195
+ $plA = [];
196
+ }
197
+ $techarticle['publisher'] = [
198
+ '@type' => 'Organization',
199
+ 'name' => $KcSeoWPSchema->sanitizeOutPut( $metaData['publisher'] ),
200
+ 'logo' => $plA,
201
+ ];
202
+ }
203
+
204
+ if ( ! empty( $metaData['description'] ) ) {
205
+ $techarticle['description'] = $KcSeoWPSchema->sanitizeOutPut(
206
+ $metaData['description'],
207
+ 'textarea'
208
+ );
209
+ }
210
+ if ( ! empty( $metaData['articleBody'] ) ) {
211
+ $techarticle['articleBody'] = $KcSeoWPSchema->sanitizeOutPut(
212
+ $metaData['articleBody'],
213
+ 'textarea'
214
+ );
215
+ }
216
+ if ( ! empty( $metaData['keywords'] ) ) {
217
+ $techarticle['keywords'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['keywords'] );
218
+ }
219
+
220
+ $html .= $this->get_jsonEncode( apply_filters( 'kcseo_snippet_article', $techarticle, $metaData ) );
221
+ break;
222
+
223
+ case 'news_article':
224
+ $newsArticle = [
225
+ '@context' => 'https://schema.org',
226
+ '@type' => 'NewsArticle',
227
+ ];
228
+ if ( ! empty( $metaData['headline'] ) ) {
229
+ $newsArticle['headline'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['headline'] );
230
+ }
231
+ if ( ! empty( $metaData['mainEntityOfPage'] ) ) {
232
+ $newsArticle['mainEntityOfPage'] = [
233
+ '@type' => 'WebPage',
234
+ '@id' => $KcSeoWPSchema->sanitizeOutPut( $metaData['mainEntityOfPage'] ),
235
+ ];
236
+ }
237
+ if ( ! empty( $metaData['author'] ) ) {
238
+ $newsArticle['author'] = [
239
+ '@type' => 'Person',
240
+ 'name' => $KcSeoWPSchema->sanitizeOutPut( $metaData['author'] ),
241
+ ];
242
+
243
+ if ( ! empty( $metaData['author_url'] ) ) {
244
+ $newsArticle['author']['url'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['author_url'], 'url' );
245
+ }
246
+ }
247
+ if ( ! empty( $metaData['image'] ) ) {
248
+ $img = $KcSeoWPSchema->imageInfo( absint( $metaData['image'] ) );
249
+ $newsArticle['image'] = [
250
+ '@type' => 'ImageObject',
251
+ 'url' => $KcSeoWPSchema->sanitizeOutPut( $img['url'], 'url' ),
252
+ 'height' => $img['height'],
253
+ 'width' => $img['width'],
254
+ ];
255
+ }
256
+ if ( ! empty( $metaData['datePublished'] ) ) {
257
+ $newsArticle['datePublished'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['datePublished'] );
258
+ }
259
+ if ( ! empty( $metaData['dateModified'] ) ) {
260
+ $newsArticle['dateModified'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['dateModified'] );
261
+ }
262
+ if ( ! empty( $metaData['publisher'] ) ) {
263
+ if ( ! empty( $metaData['publisherImage'] ) ) {
264
+ $img = $KcSeoWPSchema->imageInfo( absint( $metaData['publisherImage'] ) );
265
+ $plA = [
266
+ '@type' => 'ImageObject',
267
+ 'url' => $KcSeoWPSchema->sanitizeOutPut( $img['url'], 'url' ),
268
+ 'height' => $img['height'],
269
+ 'width' => $img['width'],
270
+ ];
271
+ } else {
272
+ $plA = [];
273
+ }
274
+ $newsArticle['publisher'] = [
275
+ '@type' => 'Organization',
276
+ 'name' => $KcSeoWPSchema->sanitizeOutPut( $metaData['publisher'] ),
277
+ 'logo' => $plA,
278
+ ];
279
+ }
280
+ if ( ! empty( $metaData['description'] ) ) {
281
+ $newsArticle['description'] = $KcSeoWPSchema->sanitizeOutPut(
282
+ $metaData['description'],
283
+ 'textarea'
284
+ );
285
+ }
286
+ if ( ! empty( $metaData['articleBody'] ) ) {
287
+ $newsArticle['articleBody'] = $KcSeoWPSchema->sanitizeOutPut(
288
+ $metaData['articleBody'],
289
+ 'textarea'
290
+ );
291
+ }
292
+
293
+ if ( isset( $metaData['video'] ) && is_array( $metaData['video'] ) ) {
294
+ $news_article_video = [];
295
+ foreach ( $metaData['video'] as $video_single ) {
296
+ if ( $video_single['name'] && $video_single['embedUrl'] ) {
297
+ $video_single_schema = [
298
+ '@type' => 'VideoObject',
299
+ 'name' => $video_single['name'] ? $KcSeoWPSchema->sanitizeOutPut( $video_single['name'] ) : '',
300
+ 'description' => $video_single['description'] ? $KcSeoWPSchema->sanitizeOutPut( $video_single['description'] ) : '',
301
+ 'contentUrl' => $video_single['contentUrl'] ? $KcSeoWPSchema->sanitizeOutPut( $video_single['contentUrl'] ) : '',
302
+ 'embedUrl' => $video_single['embedUrl'] ? $KcSeoWPSchema->sanitizeOutPut( $video_single['embedUrl'] ) : '',
303
+ 'uploadDate' => $video_single['uploadDate'] ? $KcSeoWPSchema->sanitizeOutPut( $video_single['uploadDate'] ) : '',
304
+ 'duration' => $video_single['duration'] ? $KcSeoWPSchema->sanitizeOutPut( $video_single['duration'] ) : '',
305
+ ];
306
+ if ( ! empty( $video_single['thumbnailUrl'] ) ) {
307
+ $img = $KcSeoWPSchema->imageInfo( absint( $video_single['thumbnailUrl'] ) );
308
+ $video_single_schema['thumbnailUrl'] = $KcSeoWPSchema->sanitizeOutPut( $img['url'], 'url' );
309
+ }
310
+
311
+ $news_article_video = $video_single_schema;
312
+ }
313
+ }
314
+ if ( $news_article_video ) {
315
+ $newsArticle['video'] = $news_article_video;
316
+ }
317
+ }
318
+
319
+ if ( isset( $metaData['audio'] ) && is_array( $metaData['audio'] ) ) {
320
+ $news_article_audio = [];
321
+ foreach ( $metaData['audio'] as $audio_single ) {
322
+ if ( $audio_single['name'] && $audio_single['contentUrl'] ) {
323
+ $audio_single_schema = [
324
+ '@type' => 'AudioObject',
325
+ 'name' => $audio_single['name'] ? $KcSeoWPSchema->sanitizeOutPut( $audio_single['name'] ) : '',
326
+ 'description' => $audio_single['description'] ? $KcSeoWPSchema->sanitizeOutPut( $audio_single['description'] ) : '',
327
+ 'duration' => $audio_single['duration'] ? $KcSeoWPSchema->sanitizeOutPut( $audio_single['duration'] ) : '',
328
+ 'contentUrl' => $audio_single['contentUrl'] ? $KcSeoWPSchema->sanitizeOutPut( $audio_single['contentUrl'] ) : '',
329
+ 'encodingFormat' => $audio_single['encodingFormat'] ? $KcSeoWPSchema->sanitizeOutPut( $audio_single['encodingFormat'] ) : '',
330
+ ];
331
+
332
+ $news_article_audio = $audio_single_schema;
333
+ }
334
+ }
335
+ if ( $news_article_audio ) {
336
+ $newsArticle['audio'] = $news_article_audio;
337
+ }
338
+ }
339
+
340
+ $html .= $this->get_jsonEncode( apply_filters( 'kcseo_snippet_news_article', $newsArticle, $metaData ) );
341
+ break;
342
+
343
+ case 'blog_posting':
344
+ $blogPosting = [
345
+ '@context' => 'https://schema.org',
346
+ '@type' => 'BlogPosting',
347
+ ];
348
+ if ( ! empty( $metaData['headline'] ) ) {
349
+ $blogPosting['headline'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['headline'] );
350
+ }
351
+ if ( ! empty( $metaData['mainEntityOfPage'] ) ) {
352
+ $blogPosting['mainEntityOfPage'] = [
353
+ '@type' => 'WebPage',
354
+ '@id' => $KcSeoWPSchema->sanitizeOutPut( $metaData['mainEntityOfPage'] ),
355
+ ];
356
+ }
357
+ if ( ! empty( $metaData['author'] ) ) {
358
+ $blogPosting['author'] = [
359
+ '@type' => 'Person',
360
+ 'name' => $KcSeoWPSchema->sanitizeOutPut( $metaData['author'] ),
361
+ ];
362
+
363
+ if ( ! empty( $metaData['author_url'] ) ) {
364
+ $blogPosting['author']['url'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['author_url'], 'url' );
365
+ }
366
+ }
367
+ if ( ! empty( $metaData['image'] ) ) {
368
+ $img = $KcSeoWPSchema->imageInfo( absint( $metaData['image'] ) );
369
+ $blogPosting['image'] = [
370
+ '@type' => 'ImageObject',
371
+ 'url' => $KcSeoWPSchema->sanitizeOutPut( $img['url'], 'url' ),
372
+ 'height' => $img['height'],
373
+ 'width' => $img['width'],
374
+ ];
375
+ }
376
+ if ( ! empty( $metaData['datePublished'] ) ) {
377
+ $blogPosting['datePublished'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['datePublished'] );
378
+ }
379
+ if ( ! empty( $metaData['dateModified'] ) ) {
380
+ $blogPosting['dateModified'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['dateModified'] );
381
+ }
382
+ if ( ! empty( $metaData['publisher'] ) ) {
383
+ if ( ! empty( $metaData['publisherImage'] ) ) {
384
+ $img = $KcSeoWPSchema->imageInfo( absint( $metaData['publisherImage'] ) );
385
+ $plA = [
386
+ '@type' => 'ImageObject',
387
+ 'url' => $KcSeoWPSchema->sanitizeOutPut( $img['url'], 'url' ),
388
+ 'height' => $img['height'],
389
+ 'width' => $img['width'],
390
+ ];
391
+ } else {
392
+ $plA = [];
393
+ }
394
+ $blogPosting['publisher'] = [
395
+ '@type' => 'Organization',
396
+ 'name' => $KcSeoWPSchema->sanitizeOutPut( $metaData['publisher'] ),
397
+ 'logo' => $plA,
398
+ ];
399
+ }
400
+ if ( ! empty( $metaData['description'] ) ) {
401
+ $blogPosting['description'] = $KcSeoWPSchema->sanitizeOutPut(
402
+ $metaData['description'],
403
+ 'textarea'
404
+ );
405
+ }
406
+ if ( ! empty( $metaData['articleBody'] ) ) {
407
+ $blogPosting['articleBody'] = $KcSeoWPSchema->sanitizeOutPut(
408
+ $metaData['articleBody'],
409
+ 'textarea'
410
+ );
411
+ }
412
+
413
+ if ( isset( $metaData['video'] ) && is_array( $metaData['video'] ) ) {
414
+ $blog_posting_video = [];
415
+ foreach ( $metaData['video'] as $video_single ) {
416
+ if ( $video_single['name'] && $video_single['embedUrl'] ) {
417
+ $video_single_schema = [
418
+ '@type' => 'VideoObject',
419
+ 'name' => $video_single['name'] ? $KcSeoWPSchema->sanitizeOutPut( $video_single['name'] ) : '',
420
+ 'description' => $video_single['description'] ? $KcSeoWPSchema->sanitizeOutPut( $video_single['description'] ) : '',
421
+ 'contentUrl' => $video_single['contentUrl'] ? $KcSeoWPSchema->sanitizeOutPut( $video_single['contentUrl'] ) : '',
422
+ 'embedUrl' => $video_single['embedUrl'] ? $KcSeoWPSchema->sanitizeOutPut( $video_single['embedUrl'] ) : '',
423
+ 'uploadDate' => $video_single['uploadDate'] ? $KcSeoWPSchema->sanitizeOutPut( $video_single['uploadDate'] ) : '',
424
+ 'duration' => $video_single['duration'] ? $KcSeoWPSchema->sanitizeOutPut( $video_single['duration'] ) : '',
425
+ ];
426
+ if ( ! empty( $video_single['thumbnailUrl'] ) ) {
427
+ $img = $KcSeoWPSchema->imageInfo( absint( $video_single['thumbnailUrl'] ) );
428
+ $video_single_schema['thumbnailUrl'] = $KcSeoWPSchema->sanitizeOutPut( $img['url'], 'url' );
429
+ }
430
+
431
+ $blog_posting_video = $video_single_schema;
432
+ }
433
+ }
434
+ if ( $blog_posting_video ) {
435
+ $blogPosting['video'] = $blog_posting_video;
436
+ }
437
+ }
438
+
439
+ if ( isset( $metaData['audio'] ) && is_array( $metaData['audio'] ) ) {
440
+ $blog_posting_audio = [];
441
+ foreach ( $metaData['audio'] as $audio_single ) {
442
+ if ( $audio_single['name'] && $audio_single['contentUrl'] ) {
443
+ $audio_single_schema = [
444
+ '@type' => 'AudioObject',
445
+ 'name' => $audio_single['name'] ? $KcSeoWPSchema->sanitizeOutPut( $audio_single['name'] ) : '',
446
+ 'description' => $audio_single['description'] ? $KcSeoWPSchema->sanitizeOutPut( $audio_single['description'] ) : '',
447
+ 'duration' => $audio_single['duration'] ? $KcSeoWPSchema->sanitizeOutPut( $audio_single['duration'] ) : '',
448
+ 'contentUrl' => $audio_single['contentUrl'] ? $KcSeoWPSchema->sanitizeOutPut( $audio_single['contentUrl'] ) : '',
449
+ 'encodingFormat' => $audio_single['encodingFormat'] ? $KcSeoWPSchema->sanitizeOutPut( $audio_single['encodingFormat'] ) : '',
450
+ ];
451
+
452
+ $blog_posting_audio = $audio_single_schema;
453
+ }
454
+ }
455
+ if ( $blog_posting_audio ) {
456
+ $blogPosting['audio'] = $blog_posting_audio;
457
+ }
458
+ }
459
+
460
+ $html .= $this->get_jsonEncode( apply_filters( 'kcseo_snippet_blog_posting', $blogPosting, $metaData ) );
461
+ break;
462
+
463
+ case 'event':
464
+ $event = [
465
+ '@context' => 'https://schema.org',
466
+ '@type' => 'Event',
467
+ ];
468
+ if ( ! empty( $metaData['name'] ) ) {
469
+ $event['name'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['name'] );
470
+ }
471
+ if ( ! empty( $metaData['startDate'] ) ) {
472
+ $event['startDate'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['startDate'] );
473
+ }
474
+ if ( ! empty( $metaData['endDate'] ) ) {
475
+ $event['endDate'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['endDate'] );
476
+ }
477
+ if ( ! empty( $metaData['description'] ) ) {
478
+ $event['description'] = $KcSeoWPSchema->sanitizeOutPut(
479
+ $metaData['description'],
480
+ 'textarea'
481
+ );
482
+ }
483
+ if ( ! empty( $metaData['performerName'] ) ) {
484
+ $event['performer'] = [
485
+ '@type' => 'Person',
486
+ 'name' => $KcSeoWPSchema->sanitizeOutPut( $metaData['performerName'] ),
487
+ ];
488
+ }
489
+ if ( ! empty( $metaData['image'] ) ) {
490
+ $event['image'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['image'], 'url' );
491
+ }
492
+
493
+ if ( ! empty( $metaData['organizer'] ) ) {
494
+ $event['organizer'] = [
495
+ '@type' => 'Organization',
496
+ 'name' => $KcSeoWPSchema->sanitizeOutPut( $metaData['organizer'], 'text' ),
497
+ 'url' => $KcSeoWPSchema->sanitizeOutPut( $metaData['organizerUrl'], 'url' ),
498
+ ];
499
+ }
500
+ if ( ! empty( $metaData['eventStatus'] ) ) {
501
+ $event['eventStatus'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['eventStatus'] );
502
+ }
503
+ if ( ! empty( $metaData['EventAttendanceMode'] ) ) {
504
+ $event['EventAttendanceMode'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['EventAttendanceMode'] );
505
+ }
506
+
507
+ if ( ! empty( $metaData['locationName'] ) ) {
508
+ $event['location'] = [
509
+ '@type' => 'Place',
510
+ 'name' => $KcSeoWPSchema->sanitizeOutPut( $metaData['locationName'] ),
511
+ 'address' => $KcSeoWPSchema->sanitizeOutPut( $metaData['locationAddress'] ),
512
+ ];
513
+ }
514
+ if ( ! empty( $metaData['price'] ) ) {
515
+ $event['offers'] = [
516
+ '@type' => 'Offer',
517
+ 'price' => $KcSeoWPSchema->sanitizeOutPut( $metaData['price'] ),
518
+ ];
519
+ if ( ! empty( $metaData['priceCurrency'] ) ) {
520
+ $event['offers']['priceCurrency'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['priceCurrency'] );
521
+ }
522
+ if ( ! empty( $metaData['url'] ) ) {
523
+ $event['offers']['url'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['url'], 'url' );
524
+ }
525
+ if ( ! empty( $metaData['availability'] ) ) {
526
+ $event['offers']['availability'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['availability'] );
527
+ }
528
+ if ( ! empty( $metaData['validFrom'] ) ) {
529
+ $event['offers']['validFrom'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['validFrom'] );
530
+ }
531
+ }
532
+ if ( ! empty( $metaData['url'] ) ) {
533
+ $event['url'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['url'], 'url' );
534
+ }
535
+
536
+ $html .= $this->get_jsonEncode( apply_filters( 'kcseo_snippet_event', $event, $metaData ) );
537
+ if ( isset( $metaData['review_active'] ) ) {
538
+ $event_review = [
539
+ '@context' => 'https://schema.org',
540
+ '@type' => 'Review',
541
+ ];
542
+
543
+ if ( isset( $metaData['review_datePublished'] ) && ! empty( $metaData['review_datePublished'] ) ) {
544
+ $event_review['datePublished'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['review_datePublished'] );
545
+ }
546
+ if ( isset( $metaData['review_body'] ) && ! empty( $metaData['review_body'] ) ) {
547
+ $event_review['reviewBody'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['review_body'], 'textarea' );
548
+ }
549
+ unset( $event['@context'] );
550
+ $event_review['itemReviewed'] = $event;
551
+ if ( ! empty( $metaData['review_author'] ) ) {
552
+ $event_review['author'] = [
553
+ '@type' => 'Person',
554
+ 'name' => $KcSeoWPSchema->sanitizeOutPut( $metaData['review_author'] ),
555
+ ];
556
+
557
+ if ( isset( $metaData['review_author_sameAs'] ) && ! empty( $metaData['review_author_sameAs'] ) ) {
558
+ $sameAs = KcSeoHelper::get_same_as( $KcSeoWPSchema->sanitizeOutPut( $metaData['review_author_sameAs'], 'textarea' ) );
559
+ if ( ! empty( $sameAs ) ) {
560
+ $event_review['author']['sameAs'] = $sameAs;
561
+ }
562
+ }
563
+ }
564
+ if ( isset( $metaData['review_ratingValue'] ) ) {
565
+ $event_review['reviewRating'] = [
566
+ '@type' => 'Rating',
567
+ 'ratingValue' => $KcSeoWPSchema->sanitizeOutPut( $metaData['review_ratingValue'], 'number' ),
568
+ ];
569
+ if ( isset( $metaData['review_bestRating'] ) ) {
570
+ $event_review['reviewRating']['bestRating'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['review_bestRating'], 'number' );
571
+ }
572
+ if ( isset( $metaData['review_worstRating'] ) ) {
573
+ $event_review['reviewRating']['worstRating'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['review_worstRating'], 'number' );
574
+ }
575
+ }
576
+
577
+ $html .= $this->get_jsonEncode( apply_filters( 'kcseo_snippet_event_review', $event_review, $metaData ) );
578
+ }
579
+ break;
580
+
581
+ case 'product':
582
+ $product = [
583
+ '@context' => 'https://schema.org',
584
+ '@type' => 'Product',
585
+ ];
586
+ if ( ! empty( $metaData['name'] ) ) {
587
+ $product['name'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['name'] );
588
+ }
589
+ if ( ! empty( $metaData['image'] ) ) {
590
+ $img = $KcSeoWPSchema->imageInfo( absint( $metaData['image'] ) );
591
+ $product['image'] = $KcSeoWPSchema->sanitizeOutPut( $img['url'], 'url' );
592
+ }
593
+ if ( ! empty( $metaData['description'] ) ) {
594
+ $product['description'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['description'] );
595
+ }
596
+ /* product identifier */
597
+ if ( ! empty( $metaData['sku'] ) ) {
598
+ $product['sku'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['sku'] );
599
+ }
600
+ if ( ! empty( $metaData['brand'] ) ) {
601
+ $product['brand'] = [
602
+ '@type' => 'Brand',
603
+ 'name' => $KcSeoWPSchema->sanitizeOutPut( $metaData['brand'] ),
604
+ ];
605
+ }
606
+ if ( ! empty( $metaData['identifier_type'] ) && ! empty( $metaData['identifier'] ) ) {
607
+ $product[ $metaData['identifier_type'] ] = $KcSeoWPSchema->sanitizeOutPut( $metaData['identifier'] );
608
+ }
609
+ if ( ! empty( $metaData['ratingValue'] ) ) {
610
+ $product['aggregateRating'] = [
611
+ '@type' => 'AggregateRating',
612
+ 'ratingValue' => ! empty( $metaData['ratingValue'] ) ? $KcSeoWPSchema->sanitizeOutPut( $metaData['ratingValue'] ) : null,
613
+ 'reviewCount' => ! empty( $metaData['reviewCount'] ) ? $KcSeoWPSchema->sanitizeOutPut( $metaData['reviewCount'] ) : null,
614
+ ];
615
+ }
616
+ if ( ! empty( $metaData['reviewRatingValue'] ) || ! empty( $metaData['reviewBestRating'] ) || ! empty( $metaData['reviewWorstRating'] ) ) {
617
+ $product['review'] = [
618
+ '@type' => 'Review',
619
+ 'reviewRating' => [
620
+ '@type' => 'Rating',
621
+ 'ratingValue' => ! empty( $metaData['reviewRatingValue'] ) ? $KcSeoWPSchema->sanitizeOutPut( $metaData['reviewRatingValue'] ) : null,
622
+ 'bestRating' => ! empty( $metaData['reviewBestRating'] ) ? $KcSeoWPSchema->sanitizeOutPut( $metaData['reviewBestRating'] ) : null,
623
+ 'worstRating' => ! empty( $metaData['reviewWorstRating'] ) ? $KcSeoWPSchema->sanitizeOutPut( $metaData['reviewWorstRating'] ) : null,
624
+ ],
625
+ 'author' => [
626
+ '@type' => 'Person',
627
+ 'name' => ! empty( $metaData['reviewAuthor'] ) ? $KcSeoWPSchema->sanitizeOutPut( $metaData['reviewAuthor'] ) : null,
628
+ ],
629
+ ];
630
+ }
631
+ if ( ! empty( $metaData['price'] ) ) {
632
+ $product['offers'] = [
633
+ '@type' => 'Offer',
634
+ 'price' => $KcSeoWPSchema->sanitizeOutPut( $metaData['price'] ),
635
+ 'priceValidUntil' => $KcSeoWPSchema->sanitizeOutPut( $metaData['priceValidUntil'] ),
636
+ 'priceCurrency' => ! empty( $metaData['priceCurrency'] ) ? $KcSeoWPSchema->sanitizeOutPut( $metaData['priceCurrency'] ) : null,
637
+ 'itemCondition' => ! empty( $metaData['itemCondition'] ) ? $KcSeoWPSchema->sanitizeOutPut( $metaData['itemCondition'] ) : null,
638
+ 'availability' => ! empty( $metaData['availability'] ) ? $KcSeoWPSchema->sanitizeOutPut( $metaData['availability'] ) : null,
639
+ 'url' => ! empty( $metaData['url'] ) ? $KcSeoWPSchema->sanitizeOutPut( $metaData['url'] ) : null,
640
+ ];
641
+ }
642
+ $html .= $this->get_jsonEncode( apply_filters( 'kcseo_snippet_product', $product, $metaData ) );
643
+ break;
644
+
645
+ case 'video':
646
+ $video = [
647
+ '@context' => 'https://schema.org',
648
+ '@type' => 'VideoObject',
649
+ ];
650
+ if ( ! empty( $metaData['name'] ) ) {
651
+ $video['name'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['name'] );
652
+ }
653
+ if ( ! empty( $metaData['description'] ) ) {
654
+ $video['description'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['description'], 'textarea' );
655
+ }
656
+ if ( ! empty( $metaData['thumbnailUrl'] ) ) {
657
+ $video['thumbnailUrl'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['thumbnailUrl'], 'url' );
658
+ }
659
+ if ( ! empty( $metaData['uploadDate'] ) ) {
660
+ $video['uploadDate'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['uploadDate'] );
661
+ }
662
+ if ( ! empty( $metaData['duration'] ) ) {
663
+ $video['duration'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['duration'] );
664
+ }
665
+ if ( ! empty( $metaData['contentUrl'] ) ) {
666
+ $video['contentUrl'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['contentUrl'], 'url' );
667
+ }
668
+ if ( ! empty( $metaData['embedUrl'] ) ) {
669
+ $video['embedUrl'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['embedUrl'], 'url' );
670
+ }
671
+ if ( ! empty( $metaData['interactionCount'] ) ) {
672
+ $video['interactionCount'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['interactionCount'] );
673
+ }
674
+ if ( ! empty( $metaData['expires'] ) ) {
675
+ $video['expires'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['expires'] );
676
+ }
677
+ $html .= $this->get_jsonEncode( apply_filters( 'kcseo_snippet_video', $video, $metaData ) );
678
+ break;
679
+
680
+ case 'audio':
681
+ $audio = [
682
+ '@context' => 'https://schema.org',
683
+ '@type' => 'AudioObject',
684
+ ];
685
+ if ( ! empty( $metaData['name'] ) ) {
686
+ $audio['name'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['name'] );
687
+ }
688
+ if ( ! empty( $metaData['description'] ) ) {
689
+ $audio['description'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['description'], 'textarea' );
690
+ }
691
+ if ( ! empty( $metaData['contentUrl'] ) ) {
692
+ $audio['contentUrl'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['contentUrl'], 'url' );
693
+ }
694
+ if ( ! empty( $metaData['duration'] ) ) {
695
+ $audio['duration'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['duration'] );
696
+ }
697
+ if ( ! empty( $metaData['encodingFormat'] ) ) {
698
+ $audio['encodingFormat'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['encodingFormat'] );
699
+ }
700
+ $html .= $this->get_jsonEncode( apply_filters( 'kcseo_snippet_audio', $audio, $metaData ) );
701
+ break;
702
+
703
+ case 'service':
704
+ $service = [
705
+ '@context' => 'https://schema.org',
706
+ '@type' => 'Service',
707
+ ];
708
+ if ( ! empty( $metaData['name'] ) ) {
709
+ $service['name'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['name'] );
710
+ }
711
+ if ( ! empty( $metaData['serviceType'] ) ) {
712
+ $service['serviceType'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['serviceType'] );
713
+ }
714
+ if ( ! empty( $metaData['award'] ) ) {
715
+ $service['award'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['award'] );
716
+ }
717
+ if ( ! empty( $metaData['category'] ) ) {
718
+ $service['category'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['category'] );
719
+ }
720
+ if ( ! empty( $metaData['providerMobility'] ) ) {
721
+ $service['providerMobility'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['providerMobility'] );
722
+ }
723
+ if ( ! empty( $metaData['additionalType'] ) ) {
724
+ $service['additionalType'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['additionalType'] );
725
+ }
726
+ if ( ! empty( $metaData['alternateName'] ) ) {
727
+ $service['alternateName'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['alternateName'] );
728
+ }
729
+ if ( ! empty( $metaData['image'] ) ) {
730
+ $service['image'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['image'] );
731
+ }
732
+ if ( ! empty( $metaData['mainEntityOfPage'] ) ) {
733
+ $service['mainEntityOfPage'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['mainEntityOfPage'] );
734
+ }
735
+ if ( ! empty( $metaData['sameAs'] ) ) {
736
+ $service['sameAs'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['sameAs'] );
737
+ }
738
+ if ( ! empty( $metaData['url'] ) ) {
739
+ $service['url'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['url'], 'url' );
740
+ }
741
+ $html .= $this->get_jsonEncode( apply_filters( 'kcseo_snippet_service', $service, $metaData ) );
742
+ break;
743
+
744
+ case 'about':
745
+ $aboutSchema = [
746
+ '@context' => 'https://schema.org',
747
+ '@type' => 'AboutPage',
748
+ ];
749
+
750
+ if ( ! empty( $metaData['name'] ) ) {
751
+ $aboutSchema['name'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['name'] );
752
+ }
753
+ if ( ! empty( $metaData['description'] ) ) {
754
+ $aboutSchema['description'] = $KcSeoWPSchema->sanitizeOutPut(
755
+ $metaData['description'],
756
+ 'textarea'
757
+ );
758
+ }
759
+ if ( ! empty( $metaData['image'] ) ) {
760
+ $img = $KcSeoWPSchema->imageInfo( absint( $metaData['image'] ) );
761
+ $aboutSchema['image'] = [
762
+ '@type' => 'ImageObject',
763
+ 'url' => $KcSeoWPSchema->sanitizeOutPut( $img['url'], 'url' ),
764
+ 'height' => $img['height'],
765
+ 'width' => $img['width'],
766
+ ];
767
+ }
768
+ if ( ! empty( $metaData['url'] ) ) {
769
+ $aboutSchema['url'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['url'], 'url' );
770
+ }
771
+
772
+ if ( isset( $metaData['sameAs'] ) && ! empty( $metaData['sameAs'] ) ) {
773
+ $sameAs = KcSeoHelper::get_same_as( $KcSeoWPSchema->sanitizeOutPut( $metaData['sameAs'], 'textarea' ) );
774
+ if ( ! empty( $sameAs ) ) {
775
+ $aboutSchema['sameAs'] = $sameAs;
776
+ }
777
+ }
778
+
779
+ $html .= $this->get_jsonEncode( apply_filters( 'kcseo_snippet_about', $aboutSchema, $metaData ) );
780
+ break;
781
+
782
+ case 'contact':
783
+ $contactSchema = [
784
+ '@context' => 'https://schema.org',
785
+ '@type' => 'ContactPage',
786
+ ];
787
+
788
+ if ( ! empty( $metaData['name'] ) ) {
789
+ $contactSchema['name'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['name'] );
790
+ }
791
+ if ( ! empty( $metaData['description'] ) ) {
792
+ $contactSchema['description'] = $KcSeoWPSchema->sanitizeOutPut(
793
+ $metaData['description'],
794
+ 'textarea'
795
+ );
796
+ }
797
+ if ( ! empty( $metaData['image'] ) ) {
798
+ $img = $KcSeoWPSchema->imageInfo( absint( $metaData['image'] ) );
799
+ $contactSchema['image'] = [
800
+ '@type' => 'ImageObject',
801
+ 'url' => $KcSeoWPSchema->sanitizeOutPut( $img['url'], 'url' ),
802
+ 'height' => $img['height'],
803
+ 'width' => $img['width'],
804
+ ];
805
+ }
806
+ if ( ! empty( $metaData['url'] ) ) {
807
+ $contactSchema['url'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['url'], 'url' );
808
+ }
809
+
810
+ $html .= $this->get_jsonEncode( apply_filters( 'kcseo_snippet_contact', $contactSchema, $metaData ) );
811
+ break;
812
+
813
+ case 'review':
814
+ $review = [
815
+ '@context' => 'https://schema.org',
816
+ '@type' => 'Review',
817
+ ];
818
+ if ( ! empty( $metaData['itemName'] ) ) {
819
+ $review['itemReviewed'] = [
820
+ '@type' => 'product',
821
+ 'name' => $KcSeoWPSchema->sanitizeOutPut( $metaData['itemName'] ),
822
+ ];
823
+ }
824
+ if ( ! empty( $metaData['ratingValue'] ) ) {
825
+ $review['reviewRating'] = [
826
+ '@type' => 'Rating',
827
+ 'ratingValue' => $KcSeoWPSchema->sanitizeOutPut( $metaData['ratingValue'] ),
828
+ 'bestRating' => $KcSeoWPSchema->sanitizeOutPut( $metaData['bestRating'] ),
829
+ 'worstRating' => $KcSeoWPSchema->sanitizeOutPut( $metaData['worstRating'] ),
830
+ ];
831
+ }
832
+ if ( ! empty( $metaData['name'] ) ) {
833
+ $review['name'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['name'] );
834
+ }
835
+ if ( ! empty( $metaData['author'] ) ) {
836
+ $review['author'] = [
837
+ '@type' => 'Person',
838
+ 'name' => $KcSeoWPSchema->sanitizeOutPut( $metaData['author'] ),
839
+ ];
840
+ }
841
+ if ( ! empty( $metaData['reviewBody'] ) ) {
842
+ $review['reviewBody'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['reviewBody'] );
843
+ }
844
+ if ( ! empty( $metaData['datePublished'] ) ) {
845
+ $review['datePublished'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['datePublished'] );
846
+ }
847
+ if ( ! empty( $metaData['publisher'] ) ) {
848
+ $review['publisher'] = [
849
+ '@type' => 'Organization',
850
+ 'name' => $KcSeoWPSchema->sanitizeOutPut( $metaData['publisher'] ),
851
+ ];
852
+ }
853
+ $html .= $this->get_jsonEncode( apply_filters( 'kcseo_snippet_review', $review, $metaData ) );
854
+ break;
855
+ case 'aggregate_rating':
856
+ $aRating = [
857
+ '@context' => 'https://schema.org',
858
+ '@type' => ! empty( $metaData['schema_type'] ) ? $metaData['schema_type'] : 'LocalBusiness',
859
+ ];
860
+ if ( 'LocalBusiness' === $aRating['@type'] ) {
861
+ $aRating['@id'] = get_home_url();
862
+ }
863
+ if ( ! empty( $metaData['name'] ) ) {
864
+ $aRating['name'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['name'] );
865
+ }
866
+ if ( ! empty( $metaData['description'] ) ) {
867
+ $aRating['description'] = $KcSeoWPSchema->sanitizeOutPut(
868
+ $metaData['description'],
869
+ 'textarea'
870
+ );
871
+ }
872
+ if ( $aRating['@type'] != 'Organization' ) {
873
+ if ( ! empty( $metaData['image'] ) ) {
874
+ $img = $KcSeoWPSchema->imageInfo( absint( $metaData['image'] ) );
875
+ $aRating['image'] = [
876
+ '@type' => 'ImageObject',
877
+ 'url' => $KcSeoWPSchema->sanitizeOutPut( $img['url'], 'url' ),
878
+ 'height' => $img['height'],
879
+ 'width' => $img['width'],
880
+ ];
881
+ }
882
+ if ( ! empty( $metaData['priceRange'] ) ) {
883
+ $aRating['priceRange'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['priceRange'] );
884
+ }
885
+ if ( ! empty( $metaData['telephone'] ) ) {
886
+ $aRating['telephone'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['telephone'] );
887
+ }
888
+
889
+ if ( ! empty( $metaData['address'] ) ) {
890
+ $aRating['address'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['address'] );
891
+ }
892
+ }
893
+
894
+ if ( ! empty( $metaData['ratingValue'] ) ) {
895
+ $rValue = [];
896
+ $rValue['@type'] = 'AggregateRating';
897
+ $rValue['ratingValue'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['ratingValue'] );
898
+ if ( ! empty( $metaData['bestRating'] ) ) {
899
+ $rValue['bestRating'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['bestRating'] );
900
+ }
901
+ if ( ! empty( $metaData['worstRating'] ) ) {
902
+ $rValue['worstRating'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['worstRating'] );
903
+ }
904
+ if ( ! empty( $metaData['ratingCount'] ) ) {
905
+ $rValue['ratingCount'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['ratingCount'] );
906
+ }
907
+
908
+ $aRating['aggregateRating'] = $rValue;
909
+ }
910
+ $html .= $this->get_jsonEncode( apply_filters( 'kcseo_snippet_aggregate_rating', $aRating, $metaData ) );
911
+ break;
912
+
913
+ case 'restaurant':
914
+ $restaurant = [
915
+ '@context' => 'https://schema.org',
916
+ '@type' => 'Restaurant',
917
+ ];
918
+ if ( ! empty( $metaData['name'] ) ) {
919
+ $restaurant['name'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['name'] );
920
+ }
921
+ if ( ! empty( $metaData['description'] ) ) {
922
+ $restaurant['description'] = $KcSeoWPSchema->sanitizeOutPut(
923
+ $metaData['description'],
924
+ 'textarea'
925
+ );
926
+ }
927
+ if ( ! empty( $metaData['openingHours'] ) ) {
928
+ $restaurant['openingHours'] = $KcSeoWPSchema->sanitizeOutPut(
929
+ $metaData['openingHours'],
930
+ 'textarea'
931
+ );
932
+ }
933
+ if ( ! empty( $metaData['telephone'] ) ) {
934
+ $restaurant['telephone'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['telephone'] );
935
+ }
936
+ if ( ! empty( $metaData['menu'] ) ) {
937
+ $restaurant['menu'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['menu'], 'url' );
938
+ }
939
+ if ( ! empty( $metaData['image'] ) ) {
940
+ $img = $KcSeoWPSchema->imageInfo( absint( $metaData['image'] ) );
941
+ $restaurant['image'] = $KcSeoWPSchema->sanitizeOutPut( $img['url'], 'url' );
942
+ }
943
+ if ( ! empty( $metaData['address'] ) ) {
944
+ $restaurant['address'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['address'], 'textarea' );
945
+ }
946
+ if ( ! empty( $metaData['priceRange'] ) ) {
947
+ $restaurant['priceRange'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['priceRange'] );
948
+ }
949
+ if ( ! empty( $metaData['servesCuisine'] ) ) {
950
+ $restaurant['servesCuisine'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['servesCuisine'] );
951
+ }
952
+ $html .= $this->get_jsonEncode( apply_filters( 'kcseo_snippet_restaurant', $restaurant, $metaData ) );
953
+ break;
954
+
955
+ case 'localBusiness':
956
+ $local_business = [
957
+ '@context' => 'https://schema.org',
958
+ '@type' => 'LocalBusiness',
959
+ '@id' => get_home_url(),
960
+ ];
961
+ if ( ! empty( $metaData['name'] ) ) {
962
+ $local_business['name'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['name'] );
963
+ }
964
+ if ( ! empty( $metaData['description'] ) ) {
965
+ $local_business['description'] = $KcSeoWPSchema->sanitizeOutPut(
966
+ $metaData['description'],
967
+ 'textarea'
968
+ );
969
+ }
970
+ if ( ! empty( $metaData['image'] ) ) {
971
+ $img = $KcSeoWPSchema->imageInfo( absint( $metaData['image'] ) );
972
+ $local_business['image'] = $KcSeoWPSchema->sanitizeOutPut( $img['url'], 'url' );
973
+ }
974
+ if ( ! empty( $metaData['priceRange'] ) ) {
975
+ $local_business['priceRange'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['priceRange'] );
976
+ }
977
+ if ( ! empty( $metaData['addressLocality'] ) || ! empty( $metaData['addressRegion'] )
978
+ || ! empty( $metaData['postalCode'] ) || ! empty( $metaData['streetAddress'] ) ) {
979
+ $local_business['address'] = [
980
+ '@type' => 'PostalAddress',
981
+ 'addressLocality' => $KcSeoWPSchema->sanitizeOutPut( $metaData['addressLocality'] ),
982
+ 'addressRegion' => $KcSeoWPSchema->sanitizeOutPut( $metaData['addressRegion'] ),
983
+ 'postalCode' => $KcSeoWPSchema->sanitizeOutPut( $metaData['postalCode'] ),
984
+ 'streetAddress' => $KcSeoWPSchema->sanitizeOutPut( $metaData['streetAddress'] ),
985
+ ];
986
+ }
987
+
988
+ if ( ! empty( $metaData['telephone'] ) ) {
989
+ $local_business['telephone'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['telephone'] );
990
+ }
991
+ $html .= $this->get_jsonEncode( apply_filters( 'kcseo_snippet_local_business', $local_business, $metaData ) );
992
+ if ( isset( $metaData['review_active'] ) ) {
993
+ $local_business_review = [
994
+ '@context' => 'https://schema.org',
995
+ '@type' => 'Review',
996
+ ];
997
+ if ( isset( $metaData['review_datePublished'] ) && ! empty( $metaData['review_datePublished'] ) ) {
998
+ $local_business_review['datePublished'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['review_datePublished'] );
999
+ }
1000
+ if ( isset( $metaData['review_body'] ) && ! empty( $metaData['review_body'] ) ) {
1001
+ $local_business_review['reviewBody'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['review_body'], 'textarea' );
1002
+ }
1003
+
1004
+ unset( $local_business['@context'] );
1005
+ if ( isset( $local_business['description'] ) ) {
1006
+ $local_business_review['description'] = KcSeoHelper::filter_content( $local_business['description'], 200 );
1007
+ unset( $local_business['description'] );
1008
+ }
1009
+ if ( isset( $metaData['review_sameAs'] ) && ! empty( $metaData['review_sameAs'] ) ) {
1010
+ $sameAs = KcSeoHelper::get_same_as( $KcSeoWPSchema->sanitizeOutPut( $metaData['review_sameAs'], 'textarea' ) );
1011
+ if ( ! empty( $sameAs ) ) {
1012
+ $local_business['sameAs'] = $sameAs;
1013
+ }
1014
+ }
1015
+
1016
+ $local_business_review['itemReviewed'] = $local_business;
1017
+ if ( ! empty( $metaData['review_author'] ) ) {
1018
+ $local_business_review['author'] = [
1019
+ '@type' => 'Person',
1020
+ 'name' => $KcSeoWPSchema->sanitizeOutPut( $metaData['review_author'] ),
1021
+ ];
1022
+
1023
+ if ( isset( $metaData['review_author_sameAs'] ) && ! empty( $metaData['review_author_sameAs'] ) ) {
1024
+ $sameAs = KcSeoHelper::get_same_as( $KcSeoWPSchema->sanitizeOutPut( $metaData['review_author_sameAs'], 'textarea' ) );
1025
+ if ( ! empty( $sameAs ) ) {
1026
+ $local_business_review['author']['sameAs'] = $sameAs;
1027
+ }
1028
+ }
1029
+ }
1030
+ if ( isset( $metaData['review_ratingValue'] ) ) {
1031
+ $local_business_review['reviewRating'] = [
1032
+ '@type' => 'Rating',
1033
+ 'ratingValue' => $KcSeoWPSchema->sanitizeOutPut( $metaData['review_ratingValue'], 'number' ),
1034
+ ];
1035
+ if ( isset( $metaData['review_bestRating'] ) ) {
1036
+ $local_business_review['reviewRating']['bestRating'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['review_bestRating'], 'number' );
1037
+ }
1038
+ if ( isset( $metaData['review_worstRating'] ) ) {
1039
+ $local_business_review['reviewRating']['worstRating'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['review_worstRating'], 'number' );
1040
+ }
1041
+ }
1042
+ $html .= $this->get_jsonEncode( apply_filters( 'kcseo_snippet_local_business_review', $local_business_review, $metaData ) );
1043
+ }
1044
+ break;
1045
+ case 'specialAnnouncement':
1046
+ $announcement = [
1047
+ '@context' => 'https://schema.org',
1048
+ '@type' => 'SpecialAnnouncement',
1049
+ 'category' => 'https://www.wikidata.org/wiki/Q81068910',
1050
+ ];
1051
+ if ( ! empty( $metaData['name'] ) ) {
1052
+ $announcement['name'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['name'] );
1053
+ }
1054
+ if ( ! empty( $metaData['datePublished'] ) ) {
1055
+ $announcement['datePosted'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['datePublished'] );
1056
+ }
1057
+ if ( ! empty( $metaData['expires'] ) ) {
1058
+ $announcement['expires'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['expires'] );
1059
+ }
1060
+ if ( ! empty( $metaData['text'] ) ) {
1061
+ $announcement['text'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['text'], 'textarea' );
1062
+ }
1063
+ if ( ! empty( $metaData['url'] ) ) {
1064
+ $announcement['url'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['url'], 'url' );
1065
+ }
1066
+ if ( isset( $metaData['locations'] ) && is_array( $metaData['locations'] ) && ! empty( $metaData['locations'] ) ) {
1067
+ $locations_schema = [];
1068
+ foreach ( $metaData['locations'] as $position => $location ) {
1069
+ if ( $location['type'] ) {
1070
+ $location_schema = [
1071
+ '@type' => $KcSeoWPSchema->sanitizeOutPut( $location['type'] ),
1072
+ 'name' => ! empty( $location['name'] ) ? $KcSeoWPSchema->sanitizeOutPut( $location['name'] ) : '',
1073
+ 'url' => ! empty( $location['url'] ) ? $KcSeoWPSchema->sanitizeOutPut( $location['url'], 'url' ) : '',
1074
+ 'address' => [
1075
+ '@type' => 'PostalAddress',
1076
+ ],
1077
+ ];
1078
+ if ( ! empty( $location['id'] ) ) {
1079
+ $location_schema['@id'] = $KcSeoWPSchema->sanitizeOutPut( $location['id'] );
1080
+ }
1081
+ if ( ! empty( $location['image'] ) ) {
1082
+ $img = $KcSeoWPSchema->imageInfo( absint( $location['image'] ) );
1083
+ $location_schema['image'] = $KcSeoWPSchema->sanitizeOutPut( $img['url'], 'url' );
1084
+ }
1085
+ if ( ! empty( $location['url'] ) ) {
1086
+ $location_schema['url'] = $KcSeoWPSchema->sanitizeOutPut( $location['url'], 'url' );
1087
+ }
1088
+ if ( ! empty( $location['address_street'] ) ) {
1089
+ $location_schema['address']['streetAddress'] = $KcSeoWPSchema->sanitizeOutPut( $location['address_street'] );
1090
+ }
1091
+ if ( ! empty( $location['address_locality'] ) ) {
1092
+ $location_schema['address']['addressLocality'] = $KcSeoWPSchema->sanitizeOutPut( $location['address_locality'] );
1093
+ }
1094
+ if ( ! empty( $location['address_post_code'] ) ) {
1095
+ $location_schema['address']['postalCode'] = $KcSeoWPSchema->sanitizeOutPut( $location['address_post_code'] );
1096
+ }
1097
+ if ( ! empty( $location['address_region'] ) ) {
1098
+ $location_schema['address']['addressRegion'] = $KcSeoWPSchema->sanitizeOutPut( $location['address_region'] );
1099
+ }
1100
+ if ( ! empty( $location['address_country'] ) ) {
1101
+ $location_schema['address']['addressCountry'] = $KcSeoWPSchema->sanitizeOutPut( $location['address_country'] );
1102
+ }
1103
+ if ( ! empty( $location['priceRange'] ) ) {
1104
+ $location_schema['priceRange'] = $KcSeoWPSchema->sanitizeOutPut( $location['priceRange'] );
1105
+ }
1106
+ if ( ! empty( $location['telephone'] ) ) {
1107
+ $location_schema['telephone'] = $KcSeoWPSchema->sanitizeOutPut( $location['telephone'] );
1108
+ }
1109
+ array_push( $locations_schema, $location_schema );
1110
+ }
1111
+ }
1112
+ if ( count( $locations_schema ) === 1 ) {
1113
+ $announcement['announcementLocation'] = $locations_schema[0];
1114
+ } else {
1115
+ $announcement['announcementLocation'] = $locations_schema;
1116
+ }
1117
+ }
1118
+ $html .= $this->get_jsonEncode( apply_filters( 'kcseo_snippet_item_list', $announcement, $metaData ) );
1119
+ break;
1120
+
1121
+ case 'MedicalWebPage':
1122
+ $medicalwebpage = [
1123
+ '@context' => 'https://schema.org',
1124
+ '@type' => 'MedicalWebPage',
1125
+ ];
1126
+ if ( ! empty( $metaData['headline'] ) ) {
1127
+ $medicalwebpage['headline'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['headline'] );
1128
+ }
1129
+ if ( ! empty( $metaData['webpage_url'] ) ) {
1130
+ $medicalwebpage['url'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['webpage_url'], 'url' );
1131
+ }
1132
+ if ( ! empty( $metaData['specialty_url'] ) ) {
1133
+ $medicalwebpage['specialty'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['specialty_url'], 'url' );
1134
+ }
1135
+ if ( ! empty( $metaData['image'] ) ) {
1136
+ $img = $KcSeoWPSchema->imageInfo( absint( $metaData['image'] ) );
1137
+ $medicalwebpage['image'] = [
1138
+ '@type' => 'ImageObject',
1139
+ 'url' => $KcSeoWPSchema->sanitizeOutPut( $img['url'], 'url' ),
1140
+ 'height' => $img['height'],
1141
+ 'width' => $img['width'],
1142
+ ];
1143
+ }
1144
+ if ( ! empty( $metaData['publisher'] ) ) {
1145
+ if ( ! empty( $metaData['publisherImage'] ) ) {
1146
+ $img = $KcSeoWPSchema->imageInfo( absint( $metaData['publisherImage'] ) );
1147
+ $plA = [
1148
+ '@type' => 'ImageObject',
1149
+ 'url' => $KcSeoWPSchema->sanitizeOutPut( $img['url'], 'url' ),
1150
+ 'height' => $img['height'],
1151
+ 'width' => $img['width'],
1152
+ ];
1153
+ } else {
1154
+ $plA = [];
1155
+ }
1156
+ $medicalwebpage['publisher'] = [
1157
+ '@type' => 'Organization',
1158
+ 'name' => $KcSeoWPSchema->sanitizeOutPut( $metaData['publisher'] ),
1159
+ 'logo' => $plA,
1160
+ ];
1161
+ }
1162
+ if ( ! empty( $metaData['datePublished'] ) ) {
1163
+ $medicalwebpage['datePublished'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['datePublished'] );
1164
  }
1165
+ if ( ! empty( $metaData['dateModified'] ) ) {
1166
+ $medicalwebpage['dateModified'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['dateModified'] );
1167
  }
1168
+ if ( ! empty( $metaData['lastreviewed'] ) ) {
1169
+ $medicalwebpage['lastReviewed'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['lastreviewed'] );
1170
+ }
1171
+ if ( ! empty( $metaData['maincontentofpage'] ) ) {
1172
+ $medicalwebpage['mainContentOfPage'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['maincontentofpage'] );
1173
+ }
1174
+ if ( ! empty( $metaData['about'] ) ) {
1175
+ $medicalwebpage['about']['@type'] = "MedicalCondition";
1176
+ $medicalwebpage['about']['name'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['about'] );
1177
+ }
1178
+ if ( ! empty( $metaData['description'] ) ) {
1179
+ $medicalwebpage['description'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['description'] );
1180
+ }
1181
+ if ( ! empty( $metaData['keywords'] ) ) {
1182
+ $medicalwebpage['keywords'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['keywords'] );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1183
  }
1184
+
1185
+ $html .= $this->get_jsonEncode( apply_filters( 'kcseo_snippet_restaurant', $medicalwebpage, $metaData ) );
1186
+ break;
1187
+ case 'CollectionPage':
1188
+ $collection_page = [
1189
+ '@context' => 'https://schema.org',
1190
+ '@type' => 'CollectionPage',
1191
+ ];
1192
+ if ( ! empty( $metaData['name'] ) ) {
1193
+ $collection_page['name'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['name'] );
1194
+ }
1195
+ if ( ! empty( $metaData['webpage_url'] ) ) {
1196
+ $collection_page['url'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['webpage_url'], 'url' );
1197
+ }
1198
+ if ( ! empty( $metaData['description'] ) ) {
1199
+ $collection_page['description'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['description'], 'textarea' );
1200
+ }
1201
+ if ( ! empty( $metaData['image'] ) ) {
1202
+ $img = $KcSeoWPSchema->imageInfo( absint( $metaData['image'] ) );
1203
+ $collection_page['image'] = [
1204
+ '@type' => 'ImageObject',
1205
+ 'url' => $KcSeoWPSchema->sanitizeOutPut( $img['url'], 'url' ),
1206
+ 'height' => $img['height'],
1207
+ 'width' => $img['width'],
1208
+ ];
1209
+ }
1210
+ if ( ! empty( $metaData['author'] ) ) {
1211
+ $collection_page['author'] = [
1212
+ '@type' => 'Person',
1213
+ 'name' => $KcSeoWPSchema->sanitizeOutPut( $metaData['author'] ),
1214
+ ];
1215
+ if ( ! empty( $metaData['author_type'] ) ) {
1216
+ $collection_page['author']['@type'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['author_type'] );
1217
+ }
1218
+ if ( ! empty( $metaData['author_url'] ) ) {
1219
+ $collection_page['author']['url'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['author_url'], 'url' );
1220
+ }
1221
+ if ( ! empty( $metaData['author_description'] ) ) {
1222
+ $collection_page['author']['description'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['author_description'], 'url' );
1223
+ }
1224
+ }
1225
+ if ( ! empty( $metaData['publisher'] ) ) {
1226
+ if ( ! empty( $metaData['publisherImage'] ) ) {
1227
+ $img = $KcSeoWPSchema->imageInfo( absint( $metaData['publisherImage'] ) );
1228
+ $plA = [
1229
+ '@type' => 'ImageObject',
1230
+ 'url' => $KcSeoWPSchema->sanitizeOutPut( $img['url'], 'url' ),
1231
+ 'height' => $img['height'],
1232
+ 'width' => $img['width'],
1233
+ ];
1234
+ } else {
1235
+ $plA = [];
1236
+ }
1237
+ $collection_page['publisher'] = [
1238
+ '@type' => 'Organization',
1239
+ 'name' => $KcSeoWPSchema->sanitizeOutPut( $metaData['publisher'] ),
1240
+ 'logo' => $plA,
1241
+ ];
1242
+ }
1243
+
1244
+ if ( ! empty( $metaData['DateCreated'] ) ) {
1245
+ $collection_page['DateCreated'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['DateCreated'] );
1246
+ }
1247
+ if ( ! empty( $metaData['datePublished'] ) ) {
1248
+ $collection_page['datePublished'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['datePublished'] );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1249
  }
1250
+ if ( ! empty( $metaData['dateModified'] ) ) {
1251
+ $collection_page['dateModified'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['dateModified'] );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1252
  }
1253
+ if ( ! empty( $metaData['lastreviewed'] ) ) {
1254
+ $collection_page['lastReviewed'] = $KcSeoWPSchema->sanitizeOutPut( $metaData['lastreviewed'] );
1255
+ }
1256
+
1257
+ $html .= $this->get_jsonEncode( apply_filters( 'kcseo_snippet_restaurant', $collection_page, $metaData ) );
1258
+ break;
1259
+ default:
1260
+ break;
1261
+ }
1262
+ }
1263
+ return $html;
1264
+ }
1265
+
1266
+ function get_field( $data ) {
1267
+ $html = null;
1268
+ global $KcSeoWPSchema;
1269
+ $id = $data['id'];
1270
+ $name = $data['name'];
1271
+ $value = $data['value'];
1272
+ $attr = ! empty( $data['attr'] ) ? $data['attr'] : null;
1273
+
1274
+ $class = isset( $data['class'] ) ? ( $data['class'] ? $data['class'] : null ) : null;
1275
+ $require = ( isset( $data['required'] ) ? ( $data['required'] ? sprintf( '<span data-kcseo-tooltip="%s" class="required">*</span>', __( 'Required', 'wp-seo-structured-data-schema' ) ) : null ) : null );
1276
+ $recommended = ( isset( $data['recommended'] ) ? ( $data['recommended'] ? sprintf( '<span data-kcseo-tooltip="%s" class="recommended">*</span>', __( 'Recommended', 'wp-seo-structured-data-schema' ) ) : null ) : null );
1277
+ $title = ( isset( $data['title'] ) ? ( $data['title'] ? $data['title'] : null ) : null );
1278
+ $desc = ( isset( $data['desc'] ) ? ( $data['desc'] ? $data['desc'] : null ) : null );
1279
+ $holderClass = ( ! empty( $data['holderClass'] ) ? $data['holderClass'] : null );
1280
+
1281
+ switch ( $data['type'] ) {
1282
+ case 'checkbox':
1283
+ $checked = ( $value ? 'checked' : null );
1284
+ $html .= "<div class='kSeo-checkbox-wrapper'>";
1285
+ $html .= "<label for='{$id}'><input type='checkbox' id='{$id}' class='{$class}' name='{$name}' {$checked} value='1' /> Enable</label>";
1286
+ $html .= '</div>';
1287
+ break;
1288
+ case 'text':
1289
+ $html .= "<input type='text' id='{$id}' class='{$class}' {$attr} name='{$name}' value='" . esc_html( $value ) . "' />";
1290
+ break;
1291
+ case 'number':
1292
+ if ( $data['fieldId'] == 'price' ) {
1293
+ $html .= "<input type='number' step='any' id='{$id}' class='{$class}' {$attr} name='{$name}' value='" . esc_attr( $value ) . "' />";
1294
+ } else {
1295
+ $html .= "<input type='number' id='{$id}' class='{$class}' name='{$name}' {$attr} value='" . esc_attr( $value ) . "' />";
1296
+ }
1297
+ break;
1298
+ case 'textarea':
1299
+ $html .= "<textarea id='{$id}' class='{$class}' {$attr} name='{$name}' >" . wp_kses(
1300
+ $value,
1301
+ []
1302
+ ) . '</textarea>';
1303
+ break;
1304
+ case 'image':
1305
+ $html .= '<div class="kSeo-image">';
1306
+ $ImageId = ! empty( $value ) ? absint( $value ) : 0;
1307
+ $image = $ingInfo = null;
1308
+ if ( $ImageId ) {
1309
+ $image = wp_get_attachment_image( $ImageId, 'thumbnail' );
1310
+ $imgData = $KcSeoWPSchema->imageInfo( $ImageId );
1311
+ $ingInfo .= "<span><strong>URL: </strong>{$imgData['url']}</span>";
1312
+ $ingInfo .= "<span><strong>Width: </strong>{$imgData['width']}px</span>";
1313
+ $ingInfo .= "<span><strong>Height: </strong>{$imgData['height']}px</span>";
1314
+ }
1315
+ $html .= "<div class='kSeo-image-wrapper'>";
1316
+ $html .= '<span class="kSeoImgAdd"><span class="dashicons dashicons-plus-alt"></span></span>';
1317
+ $html .= '<span class="kSeoImgRemove ' . ( $image ? null : 'kSeo-hidden' ) . '"><span class="dashicons dashicons-trash"></span></span>';
1318
+ $html .= '<div class="kSeo-image-preview">' . $image . '</div>';
1319
+ $html .= "<input type='hidden' name='{$name}' value='" . absint( $ImageId ) . "' />";
1320
+ $html .= '</div>';
1321
+ $html .= "<div class='image-info'>{$ingInfo}</div>";
1322
+ $html .= '</div>';
1323
+ break;
1324
+ case 'select':
1325
+ $html .= "<select name='{$name}' {$attr} class='select2 {$class}' id='{$id}'>";
1326
+ if ( ! empty( $data['empty'] ) ) {
1327
+ $html .= "<option value=''>{$data['empty']}</option>";
1328
+ }
1329
+ if ( ! empty( $data['options'] ) && is_array( $data['options'] ) ) {
1330
+ if ( $this->isAssoc( $data['options'] ) ) {
1331
+ foreach ( $data['options'] as $optKey => $optValue ) {
1332
+ $slt = ( $optKey == $value ? 'selected' : null );
1333
+ $html .= "<option value='" . esc_attr( $optKey ) . "' {$slt}>" . esc_html( $optValue ) . '</option>';
1334
+ }
1335
+ } else {
1336
+ foreach ( $data['options'] as $optValue ) {
1337
+ $slt = ( $optValue == $value ? 'selected' : null );
1338
+ $html .= "<option value='" . esc_attr( $optValue ) . "' {$slt}>" . esc_html( $optValue ) . '</option>';
1339
+ }
1340
+ }
1341
+ }
1342
+ $html .= '</select>';
1343
+ break;
1344
+ case 'schema_type':
1345
+ $html .= "<select name='{$name}' class='select2 {$class}' id='{$id}'>";
1346
+ if ( ! empty( $data['empty'] ) ) {
1347
+ $html .= "<option value=''>{$data['empty']}</option>";
1348
+ }
1349
+
1350
+ foreach ( $data['options'] as $key => $site ) {
1351
+ if ( is_array( $site ) ) {
1352
+ $slt = ( $key == $value ? 'selected' : null );
1353
+ $html .= "<option value='$key' $slt>&nbsp;&nbsp;&nbsp;$key</option>";
1354
+ foreach ( $site as $inKey => $inSite ) {
1355
+ if ( is_array( $inSite ) ) {
1356
+ $slt = ( $inKey == $value ? 'selected' : null );
1357
+ $html .= "<option value='$inKey' $slt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$inKey</option>";
1358
+ foreach ( $inSite as $inInKey => $inInSite ) {
1359
+ if ( is_array( $inInSite ) ) {
1360
+ $slt = ( $inInKey == $value ? 'selected' : null );
1361
+ $html .= "<option value='$inInKey' $slt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$inInKey</option>";
1362
+ foreach ( $inInSite as $iSite ) {
1363
+ $slt = ( $iSite == $value ? 'selected' : null );
1364
+ $html .= "<option value='$iSite' $slt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$iSite</option>";
1365
+ }
1366
+ } else {
1367
+ $slt = ( $inInSite == $value ? 'selected' : null );
1368
+ $html .= "<option value='$inInSite' $slt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$inInSite</option>";
1369
+ }
1370
+ }
1371
+ } else {
1372
+ $slt = ( $inSite == $value ? 'selected' : null );
1373
+ $html .= "<option value='$inSite' $slt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$inSite</option>";
1374
+ }
1375
+ }
1376
+ } else {
1377
+ $slt = ( $site == $value ? 'selected' : null );
1378
+ $html .= "<option value='$site' $slt>$site</option>";
1379
+ }
1380
+ }
1381
+ $html .= '</select>';
1382
+ break;
1383
+ default:
1384
+ $html .= "<input id='{$id}' type='{$data['type']}' {$attr} value='" . esc_attr( $value ) . "' name='$name' />";
1385
+ break;
1386
+
1387
+ }
1388
+ $label = "<label class='field-label' for='{$id}'>{$title}{$require}{$recommended}</label>";
1389
+ $field_html = sprintf( '<div class="field-content" id="%s-content">%s<p class="description">%s</div>', $id, $html, $desc );
1390
+ if ( $data['type'] == 'heading' ) {
1391
+ $holderClass .= ' kcseo-heading-container';
1392
+ $label = '';
1393
+ $field_html = sprintf(
1394
+ '<div class="kcseo-section-title-wrap">%s%s</div>',
1395
+ $title ? sprintf( '<h5>%s</h5>', $title ) : '',
1396
+ $desc ? sprintf( '<p class="description">%s</p>', $desc ) : null
1397
+ );
1398
+ }
1399
+
1400
+ $html = sprintf(
1401
+ '<div class="field-container %s" id="%s-container">%s%s</div>',
1402
+ $holderClass,
1403
+ $id,
1404
+ $label,
1405
+ $field_html
1406
+ );
1407
+
1408
+ return $html;
1409
+ }
1410
+
1411
+ /**
1412
+ * @param array $data
1413
+ *
1414
+ * @return string|null
1415
+ */
1416
+ function get_jsonEncode( $data = [] ) {
1417
+ $html = null;
1418
+ if ( ! empty( $data ) && is_array( $data ) ) {
1419
+ $html .= '<script type="application/ld+json">' . json_encode(
1420
+ $data,
1421
+ JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES
1422
+ ) . '</script>';
1423
+ }
1424
+
1425
+ return $html;
1426
+ }
1427
+
1428
+ function imgInfo( $url = null ) {
1429
+ $img = [];
1430
+ if ( $url ) {
1431
+ $imgA = @getimagesize( $url );
1432
+ if ( is_array( $imgA ) && ! empty( $imgA ) ) {
1433
+ $img['width'] = $imgA[0];
1434
+ $img['height'] = $imgA[1];
1435
+ } else {
1436
+ $img['width'] = 0;
1437
+ $img['height'] = 0;
1438
+ }
1439
+ }
1440
+
1441
+ return $img;
1442
+ }
1443
+
1444
+ function isAssoc( $array ) {
1445
+ $keys = array_keys( $array );
1446
+
1447
+ return $keys !== array_keys( $keys );
1448
+ }
1449
+
1450
+
1451
+ }
1452
+ endif;
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.7.3
7
  * Author: WPSEMPlugins
8
  * Author URI: https://wpsemplugins.com/
9
  * Text Domain: wp-seo-structured-data-schema
@@ -24,7 +24,7 @@ if (! defined('JSON_UNESCAPED_UNICODE')) {
24
  define('JSON_UNESCAPED_UNICODE', 256);
25
  }
26
 
27
- define('KCSEO_WP_SCHEMA_VERSION', '2.7.3');
28
  define('KCSEO_WP_SCHEMA_SLUG', 'wp-seo-structured-data-schema');
29
  define('KCSEO_WP_SCHEMA_PATH', dirname(__FILE__));
30
  define('KCSEO_WP_SCHEMA_PLUGIN_ACTIVE_FILE_NAME', plugin_basename(__FILE__));
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.7.4
7
  * Author: WPSEMPlugins
8
  * Author URI: https://wpsemplugins.com/
9
  * Text Domain: wp-seo-structured-data-schema
24
  define('JSON_UNESCAPED_UNICODE', 256);
25
  }
26
 
27
+ define('KCSEO_WP_SCHEMA_VERSION', '2.7.4');
28
  define('KCSEO_WP_SCHEMA_SLUG', 'wp-seo-structured-data-schema');
29
  define('KCSEO_WP_SCHEMA_PATH', dirname(__FILE__));
30
  define('KCSEO_WP_SCHEMA_PLUGIN_ACTIVE_FILE_NAME', plugin_basename(__FILE__));