PluginProbe
WPSSO Core – Complete Schema Markup and Meta Tags / 22.7.0
WPSSO Core – Complete Schema Markup and Meta Tags v22.7.0
22.7.0 22.6.1 22.6.0 22.5.3 22.5.2 22.5.1 22.4.0 22.3.0 22.2.1 22.2.0 22.1.3 22.1.2 22.1.1 22.1.0 22.0.0 21.13.3 21.13.2 trunk 21.13.1
← All changes | lib/config.php +5829 -0 22.6.122.7.0 View file →
@@ -1,0 +1,5829 @@
1 +<?php
2 +/*
3 + * License: GPLv3
4 + * License URI: https://www.gnu.org/licenses/gpl.txt
5 + * Copyright 2012-2026 Jean-Sebastien Morisset (https://wpsso.com/)
6 + */
7 +
8 +if ( ! defined( 'ABSPATH' ) ) {
9 +
10 + die( 'These aren\'t the droids you\'re looking for.' );
11 +}
12 +
13 +if ( ! class_exists( 'WpssoConfig' ) ) {
14 +
15 + class WpssoConfig {
16 +
17 + public static $cf = array(
18 + 'packages' => array(
19 + 'pro' => 'Premium',
20 + 'std' => 'Standard',
21 + ),
22 + 'plugin' => array(
23 + 'wpsso' => array( // Plugin acronym.
24 + 'version' => '22.7.0', // Plugin version.
25 + 'opt_version' => '1048', // Increment when changing default option values.
26 + 'short' => 'WPSSO Core', // Short plugin name.
27 + 'name' => 'WPSSO Core',
28 + 'desc' => 'Present your content at its best for social sites and search results, no matter how URLs are shared, reshared, messaged, posted, embedded, or crawled.',
29 + 'slug' => 'wpsso',
30 + 'base' => 'wpsso/wpsso.php',
31 + 'update_auth' => 'tid',
32 + 'text_domain' => 'wpsso',
33 + 'domain_path' => '/languages',
34 + 'admin_l10n' => 'wpssoAdminPageL10n',
35 +
36 + /*
37 + * URLs or relative paths to plugin banners and icons.
38 + */
39 + 'assets' => array(
40 +
41 + /*
42 + * Banner image array keys are 'low' and 'high'.
43 + */
44 + 'banners' => array(
45 + 'low' => 'https://surniaulula.github.io/wpsso/assets/banner-772x250.jpg',
46 + 'high' => 'https://surniaulula.github.io/wpsso/assets/banner-1544x500.jpg',
47 + ),
48 +
49 + /*
50 + * Icon image array keys are '1x' and '2x'.
51 + */
52 + 'icons' => array(
53 + '1x' => 'images/icon-128x128.png',
54 + '2x' => 'images/icon-256x256.png',
55 + ),
56 + ),
57 + 'hosts' => array(
58 + 'wp_org' => true,
59 + 'github' => true,
60 + 'wpsso' => true,
61 + ),
62 + 'url' => array(
63 +
64 + /*
65 + * WordPress.org URLs.
66 + */
67 + 'home' => 'https://wordpress.org/plugins/wpsso/',
68 + 'forum' => 'https://wordpress.org/support/plugin/wpsso',
69 + 'review' => 'https://wordpress.org/support/plugin/wpsso/reviews/?rate=5#new-post',
70 +
71 + /*
72 + * GitHub.com URLs.
73 + */
74 + 'debug_html' => 'https://raw.githubusercontent.com/SurniaUlula/wpsso/master/html/debug.html',
75 + 'readme_txt' => 'https://raw.githubusercontent.com/SurniaUlula/wpsso/master/readme.txt',
76 + 'setup_html' => 'https://raw.githubusercontent.com/SurniaUlula/wpsso/master/html/setup.html',
77 +
78 + /*
79 + * WPSSO.com URLs.
80 + */
81 + 'changelog' => 'https://wpsso.com/extend/plugins/wpsso/changelog/',
82 + 'docs' => 'https://wpsso.com/docs/plugins/wpsso/',
83 + 'install' => 'https://wpsso.com/docs/plugins/wpsso/installation/',
84 + 'faqs' => 'https://wpsso.com/docs/plugins/wpsso/faqs/',
85 + 'notes' => 'https://wpsso.com/docs/plugins/wpsso/notes/',
86 + 'support' => 'https://surniaulula.com/support/create_ticket/', // Premium support ticket.
87 + 'purchase' => 'https://wpsso.com/extend/plugins/wpsso/', // Purchase page.
88 + 'info' => 'https://wpsso.com/extend/plugins/wpsso/info/', // License information.
89 + 'update' => 'https://wpsso.com/extend/plugins/wpsso/update/',
90 + 'download' => '',
91 + ),
92 + 'lib' => array(
93 + 'dashboard' => array(
94 + ),
95 + 'integ' => array(
96 + 'data' => array(
97 + 'aioseop-meta' => 'Import All in One SEO Pack Metadata',
98 + 'rankmath-meta' => 'Import Rank Math SEO Metadata',
99 + 'seoframework-meta' => 'Import The SEO Framework Metadata',
100 + 'wpmetaseo-meta' => 'Import WP Meta SEO Metadata',
101 + 'wpseo-blocks' => 'Import Yoast SEO Block Attrs',
102 + 'wpseo-meta' => 'Import Yoast SEO Metadata',
103 + ),
104 + 'ecom' => array(
105 + 'perfect-woocommerce-brands' => 'Perfect Brands for WooCommerce',
106 + 'woocommerce' => 'WooCommerce',
107 + 'woocommerce-brands' => 'WooCommerce Brands',
108 + 'woocommerce-currency-switcher' => 'WooCommerce Currency Switcher',
109 + 'woo-add-gtin' => 'WooCommerce UPC, EAN, and ISBN',
110 + 'wpm-product-gtin-wc' => 'Product GTIN for WooCommerce',
111 + 'yith-woocommerce-brands' => 'YITH WooCommerce Brands Add-on',
112 + ),
113 + 'event' => array(
114 + 'the-events-calendar' => 'The Events Calendar',
115 + ),
116 + 'form' => array(
117 + 'gravityforms' => 'Gravity Forms',
118 + 'gravityview' => 'Gravity View',
119 + ),
120 + 'job' => array(
121 + 'simplejobboard' => 'Simple Job Board',
122 + 'wpjobmanager' => 'WP Job Manager',
123 + ),
124 + 'lang' => array(
125 + 'polylang' => 'Polylang',
126 + 'qtranslate-xt' => 'qTranslate-XT',
127 + 'wpml' => 'WPML',
128 + ),
129 + 'media' => array(
130 + 'wp-retina-2x' => 'Perfect Images',
131 + ),
132 + 'rating' => array(
133 + 'rate-my-post' => 'Rate my Post',
134 + 'wppostratings' => 'WP-PostRatings',
135 + ),
136 + 'recipe' => array(
137 + 'wprecipemaker' => 'WP Recipe Maker',
138 + ),
139 + 'review' => array(
140 + 'judgeme-for-wc' => 'Judge.me Product Reviews for WooCommerce',
141 + 'wpproductreview' => 'WP Product Review',
142 + 'yotpowc' => 'Yotpo Social Reviews for WooCommerce',
143 + ),
144 + 'seo' => array(
145 + 'aioseop' => 'All in One SEO Pack',
146 + 'rankmath' => 'Rank Math SEO',
147 + 'seoframework' => 'The SEO Framework',
148 + 'seopress' => 'SEOPress',
149 + 'wpmetaseo' => 'WP Meta SEO',
150 + 'wpseo' => 'Yoast SEO',
151 + ),
152 + 'user' => array(
153 + 'co-authors-plus' => 'Co-Authors Plus',
154 + 'publishpress-authors' => 'PublishPress Authors',
155 + 'ultimate-member' => 'Ultimate Member',
156 + ),
157 + 'util' => array(
158 + 'duplicate-post' => 'Yoast Duplicate Post',
159 + 'elementor' => 'Elementor Website Builder',
160 + 'jetpack' => 'Jetpack',
161 + 'jetpack-boost' => 'Jetpack Boost',
162 + ),
163 + ),
164 + 'json' => array(
165 + 'type' => array(
166 + 'article' => 'Schema Type Article',
167 + 'audiobook' => 'Schema Type Audiobook',
168 + 'blog' => 'Schema Type Blog',
169 + 'book' => 'Schema Type Book',
170 + 'brand' => 'Schema Type Brand',
171 + 'claimreview' => 'Schema Type Claim Review',
172 + 'collectionpage' => 'Schema Type Collection Page',
173 + 'course' => 'Schema Type Course',
174 + 'creativework' => 'Schema Type CreativeWork',
175 + 'event' => 'Schema Type Event',
176 + 'faqpage' => 'Schema Type FAQPage',
177 + 'foodestablishment' => 'Schema Type Food Establishment',
178 + 'howto' => 'Schema Type How-To',
179 + 'itemlist' => 'Schema Type ItemList',
180 + 'jobposting' => 'Schema Type Job Posting',
181 + 'learningresource' => 'Schema Type Learning Resource',
182 + 'localbusiness' => 'Schema Type Local Business',
183 + 'movie' => 'Schema Type Movie',
184 + 'organization' => 'Schema Type Organization',
185 + 'person' => 'Schema Type Person',
186 + 'place' => 'Schema Type Place',
187 + 'product' => 'Schema Type Product',
188 + 'productgroup' => 'Schema Type Product Group',
189 + 'profilepage' => 'Schema Type Profile Page',
190 + 'qapage' => 'Schema Type QAPage',
191 + 'question' => 'Schema Type Question and Answer',
192 + 'recipe' => 'Schema Type Recipe',
193 + 'review' => 'Schema Type Review',
194 + 'searchresultspage' => 'Schema Type Search Results Page',
195 + 'service' => 'Schema Type Service',
196 + 'softwareapplication' => 'Schema Type Software Application',
197 + 'thing' => 'Schema Type Thing',
198 + 'webpage' => 'Schema Type WebPage',
199 + 'website' => 'Schema Type WebSite',
200 + ),
201 + 'prop' => array(
202 + 'aggregaterating' => 'Schema Property aggregateRating',
203 + 'haspart' => 'Schema Property hasPart',
204 + 'review' => 'Schema Property review',
205 + ),
206 + ),
207 + 'pro' => array(
208 + 'admin' => array(
209 + 'advanced' => 'Advanced Settings',
210 + 'edit' => 'Document SSO Metabox',
211 + 'general' => 'General Settings',
212 + ),
213 + 'media' => array(
214 + 'facebook' => 'Facebook Videos',
215 + 'gravatar' => 'Gravatar Images',
216 + 'slideshare' => 'Slideshare Presentations',
217 + 'soundcloud' => 'Soundcloud Tracks',
218 + 'upscale' => 'Upscale Media Library Images',
219 + 'vimeo' => 'Vimeo Videos',
220 + 'wistia' => 'Wistia Videos',
221 + 'wpvideoblock' => 'WP Media Library Video Blocks',
222 + 'wpvideoshortcode' => 'WP Media Library Video Shortcodes',
223 + 'youtube' => 'YouTube Videos and Playlists',
224 + ),
225 + 'review' => array(
226 + 'judgeme' => 'Judge.me Reviews',
227 + 'shopperapproved' => 'Shopper Approved Reviews',
228 + 'stamped' => 'Stamped.io Reviews',
229 + ),
230 + 'util' => array(
231 + 'shorten' => 'URL Shortening Services',
232 + ),
233 + ),
234 + 'profile' => array(
235 + 'your-sso' => 'Profile SSO - Social and Search Optimization',
236 + ),
237 + 'sitesubmenu' => array(
238 + 'site-advanced' => 'Advanced Settings',
239 + 'site-licenses' => 'Premium Licenses',
240 + 'site-addons' => 'Plugin Add-ons',
241 + 'site-setup' => 'Setup Guide',
242 + 'site-debug' => 'Troubleshooting',
243 + ),
244 + 'std' => array( // Standard distribution modules.
245 + 'admin' => array(
246 + 'advanced' => 'Advanced Settings',
247 + 'edit' => 'Document SSO Metabox',
248 + 'general' => 'General Settings',
249 + ),
250 + 'media' => array(
251 + 'facebook' => 'Facebook Videos',
252 + 'slideshare' => 'Slideshare Presentations',
253 + 'soundcloud' => 'Soundcloud Tracks',
254 + 'vimeo' => 'Vimeo Videos',
255 + 'wistia' => 'Wistia Videos',
256 + 'wpvideoblock' => 'WP Media Library Video Blocks',
257 + 'wpvideoshortcode' => 'WP Media Library Video Shortcodes',
258 + 'youtube' => 'YouTube Videos and Playlists',
259 + ),
260 + 'review' => array(
261 + 'judgeme' => 'Judge.me Reviews',
262 + ),
263 + ),
264 + 'submenu' => array(
265 + 'essential' => 'Essential Settings',
266 + 'general' => 'General Settings',
267 + 'advanced' => 'Advanced Settings',
268 + 'licenses' => 'Premium Licenses',
269 + 'addons' => 'Plugin Add-ons',
270 + 'tools' => 'Tools and Actions',
271 + 'setup' => 'Setup Guide',
272 + 'debug' => 'Troubleshooting',
273 + ),
274 + 'users' => array(
275 + 'add-person' => 'Add Person',
276 + ),
277 + ),
278 +
279 + /*
280 + * Declare compatibility with WooCommerce HPOS.
281 + *
282 + * See https://github.com/woocommerce/woocommerce/wiki/High-Performance-Order-Storage-Upgrade-Recipe-Book.
283 + */
284 + 'wc_compat' => array(
285 + 'custom_order_tables',
286 + ),
287 + ),
288 + 'wpssobc' => array( // Plugin acronym.
289 + 'short' => 'WPSSO BC', // Short plugin name.
290 + 'name' => 'WPSSO Schema Breadcrumbs Markup',
291 + 'desc' => 'Schema BreadcrumbList markup in JSON-LD format for Google Rich Results.',
292 + 'slug' => 'wpsso-breadcrumbs',
293 + 'base' => 'wpsso-breadcrumbs/wpsso-breadcrumbs.php',
294 + 'update_auth' => '', // No premium version.
295 +
296 + /*
297 + * URLs or relative paths to plugin banners and icons.
298 + */
299 + 'assets' => array(
300 +
301 + /*
302 + * Banner image array keys are 'low' and 'high'.
303 + */
304 + 'banners' => array(
305 + 'low' => 'https://surniaulula.github.io/wpsso-breadcrumbs/assets/banner-772x250.jpg',
306 + 'high' => 'https://surniaulula.github.io/wpsso-breadcrumbs/assets/banner-1544x500.jpg',
307 + ),
308 +
309 + /*
310 + * Icon image array keys are '1x' and '2x'.
311 + */
312 + 'icons' => array(
313 + '1x' => 'https://surniaulula.github.io/wpsso-breadcrumbs/assets/icon-128x128.png',
314 + '2x' => 'https://surniaulula.github.io/wpsso-breadcrumbs/assets/icon-256x256.png',
315 + ),
316 + ),
317 + 'hosts' => array(
318 + 'wp_org' => true,
319 + 'github' => true,
320 + 'wpsso' => true,
321 + ),
322 + 'url' => array(
323 +
324 + /*
325 + * WordPress.org URLs.
326 + */
327 + 'home' => 'https://wordpress.org/plugins/wpsso-breadcrumbs/',
328 + 'forum' => 'https://wordpress.org/support/plugin/wpsso-breadcrumbs',
329 + 'review' => 'https://wordpress.org/support/plugin/wpsso-breadcrumbs/reviews/?rate=5#new-post',
330 +
331 + /*
332 + * GitHub.com URLs.
333 + */
334 + 'readme_txt' => 'https://raw.githubusercontent.com/SurniaUlula/wpsso-breadcrumbs/master/readme.txt',
335 +
336 + /*
337 + * WPSSO.com URLs.
338 + */
339 + 'changelog' => 'https://wpsso.com/extend/plugins/wpsso-breadcrumbs/changelog/',
340 + 'docs' => 'https://wpsso.com/docs/plugins/wpsso-breadcrumbs/',
341 + 'install' => 'https://wpsso.com/docs/plugins/wpsso-breadcrumbs/installation/',
342 + 'faqs' => 'https://wpsso.com/docs/plugins/wpsso-breadcrumbs/faqs/',
343 + 'notes' => '',
344 + 'support' => '', // Premium support ticket.
345 + 'purchase' => '', // Purchase page.
346 + 'info' => '', // License information.
347 + 'update' => 'https://wpsso.com/extend/plugins/wpsso-breadcrumbs/update/',
348 + 'download' => 'https://wpsso.com/extend/plugins/wpsso-breadcrumbs/latest/',
349 + ),
350 + ),
351 + 'wpssocmcf' => array( // Plugin acronym.
352 + 'short' => 'WPSSO CMCF', // Short plugin name.
353 + 'name' => 'WPSSO Commerce Manager Catalog Feed XML',
354 + 'desc' => 'Facebook and Instagram Commerce Manager Catalog Feed XMLs for WooCommerce and custom product pages.',
355 + 'slug' => 'wpsso-commerce-manager-catalog-feed',
356 + 'base' => 'wpsso-commerce-manager-catalog-feed/wpsso-commerce-manager-catalog-feed.php',
357 + 'update_auth' => '', // No premium version.
358 +
359 + /*
360 + * URLs or relative paths to plugin banners and icons.
361 + */
362 + 'assets' => array(
363 +
364 + /*
365 + * Banner image array keys are 'low' and 'high'.
366 + */
367 + 'banners' => array(
368 + 'low' => 'https://surniaulula.github.io/wpsso-commerce-manager-catalog-feed/assets/banner-772x250.jpg',
369 + 'high' => 'https://surniaulula.github.io/wpsso-commerce-manager-catalog-feed/assets/banner-1544x500.jpg',
370 + ),
371 +
372 + /*
373 + * Icon image array keys are '1x' and '2x'.
374 + */
375 + 'icons' => array(
376 + '1x' => 'https://surniaulula.github.io/wpsso-commerce-manager-catalog-feed/assets/icon-128x128.png',
377 + '2x' => 'https://surniaulula.github.io/wpsso-commerce-manager-catalog-feed/assets/icon-256x256.png',
378 + ),
379 + ),
380 + 'hosts' => array(
381 + 'wp_org' => true,
382 + 'github' => true,
383 + 'wpsso' => true,
384 + ),
385 + 'url' => array(
386 +
387 + /*
388 + * WordPress.org URLs.
389 + */
390 + 'home' => 'https://wordpress.org/plugins/wpsso-commerce-manager-catalog-feed/',
391 + 'forum' => 'https://wordpress.org/support/plugin/wpsso-commerce-manager-catalog-feed',
392 + 'review' => 'https://wordpress.org/support/plugin/wpsso-commerce-manager-catalog-feed/reviews/?rate=5#new-post',
393 +
394 + /*
395 + * GitHub.com URLs.
396 + */
397 + 'readme_txt' => 'https://raw.githubusercontent.com/SurniaUlula/wpsso-commerce-manager-catalog-feed/master/readme.txt',
398 +
399 + /*
400 + * WPSSO.com URLs.
401 + */
402 + 'changelog' => 'https://wpsso.com/extend/plugins/wpsso-commerce-manager-catalog-feed/changelog/',
403 + 'docs' => 'https://wpsso.com/docs/plugins/wpsso-commerce-manager-catalog-feed/',
404 + 'install' => 'https://wpsso.com/docs/plugins/wpsso-commerce-manager-catalog-feed/installation/',
405 + 'faqs' => '',
406 + 'notes' => '',
407 + 'support' => '', // Premium support ticket.
408 + 'purchase' => '', // Purchase page.
409 + 'info' => '', // License information.
410 + 'update' => 'https://wpsso.com/extend/plugins/wpsso-commerce-manager-catalog-feed/update/',
411 + 'download' => 'https://wpsso.com/extend/plugins/wpsso-commerce-manager-catalog-feed/latest/',
412 + ),
413 + ),
414 + 'wpssofaq' => array( // Plugin acronym.
415 + 'short' => 'WPSSO FAQ', // Short plugin name.
416 + 'name' => 'WPSSO Schema FAQ Page Manager',
417 + 'desc' => 'Create FAQ and Question / Answer Pages with optional shortcodes to include FAQs and Questions / Answers in your content.',
418 + 'slug' => 'wpsso-faq',
419 + 'base' => 'wpsso-faq/wpsso-faq.php',
420 + 'update_auth' => '', // No premium version.
421 +
422 + /*
423 + * URLs or relative paths to plugin banners and icons.
424 + */
425 + 'assets' => array(
426 +
427 + /*
428 + * Banner image array keys are 'low' and 'high'.
429 + */
430 + 'banners' => array(
431 + 'low' => 'https://surniaulula.github.io/wpsso-faq/assets/banner-772x250.jpg',
432 + 'high' => 'https://surniaulula.github.io/wpsso-faq/assets/banner-1544x500.jpg',
433 + ),
434 +
435 + /*
436 + * Icon image array keys are '1x' and '2x'.
437 + */
438 + 'icons' => array(
439 + '1x' => 'https://surniaulula.github.io/wpsso-faq/assets/icon-128x128.png',
440 + '2x' => 'https://surniaulula.github.io/wpsso-faq/assets/icon-256x256.png',
441 + ),
442 + ),
443 + 'hosts' => array(
444 + 'wp_org' => true,
445 + 'github' => true,
446 + 'wpsso' => true,
447 + ),
448 + 'url' => array(
449 +
450 + /*
451 + * WordPress.org URLs.
452 + */
453 + 'home' => 'https://wordpress.org/plugins/wpsso-faq/',
454 + 'forum' => 'https://wordpress.org/support/plugin/wpsso-faq',
455 + 'review' => 'https://wordpress.org/support/plugin/wpsso-faq/reviews/?rate=5#new-post',
456 +
457 + /*
458 + * GitHub.com URLs.
459 + */
460 + 'readme_txt' => 'https://raw.githubusercontent.com/SurniaUlula/wpsso-faq/master/readme.txt',
461 +
462 + /*
463 + * WPSSO.com URLs.
464 + */
465 + 'changelog' => 'https://wpsso.com/extend/plugins/wpsso-faq/changelog/',
466 + 'docs' => 'https://wpsso.com/docs/plugins/wpsso-faq/',
467 + 'install' => 'https://wpsso.com/docs/plugins/wpsso-faq/installation/',
468 + 'faqs' => 'https://wpsso.com/docs/plugins/wpsso-faq/faqs/',
469 + 'notes' => 'https://wpsso.com/docs/plugins/wpsso-faq/notes/',
470 + 'support' => '', // Premium support ticket.
471 + 'purchase' => '', // Purchase page.
472 + 'info' => '', // License information.
473 + 'update' => 'https://wpsso.com/extend/plugins/wpsso-faq/update/',
474 + 'download' => 'https://wpsso.com/extend/plugins/wpsso-faq/latest/',
475 + ),
476 + ),
477 + 'wpssogmf' => array( // Plugin acronym.
478 + 'short' => 'WPSSO GMF', // Short plugin name.
479 + 'name' => 'WPSSO Google Merchant Feed XML',
480 + 'desc' => 'Google Merchant product and inventory feed XML for WooCommerce and custom product pages, including multilingual support.',
481 + 'slug' => 'wpsso-google-merchant-feed',
482 + 'base' => 'wpsso-google-merchant-feed/wpsso-google-merchant-feed.php',
483 + 'update_auth' => '', // No premium version.
484 +
485 + /*
486 + * URLs or relative paths to plugin banners and icons.
487 + */
488 + 'assets' => array(
489 +
490 + /*
491 + * Banner image array keys are 'low' and 'high'.
492 + */
493 + 'banners' => array(
494 + 'low' => 'https://surniaulula.github.io/wpsso-google-merchant-feed/assets/banner-772x250.jpg',
495 + 'high' => 'https://surniaulula.github.io/wpsso-google-merchant-feed/assets/banner-1544x500.jpg',
496 + ),
497 +
498 + /*
499 + * Icon image array keys are '1x' and '2x'.
500 + */
501 + 'icons' => array(
502 + '1x' => 'https://surniaulula.github.io/wpsso-google-merchant-feed/assets/icon-128x128.png',
503 + '2x' => 'https://surniaulula.github.io/wpsso-google-merchant-feed/assets/icon-256x256.png',
504 + ),
505 + ),
506 + 'hosts' => array(
507 + 'wp_org' => true,
508 + 'github' => true,
509 + 'wpsso' => true,
510 + ),
511 + 'url' => array(
512 +
513 + /*
514 + * WordPress.org URLs.
515 + */
516 + 'home' => 'https://wordpress.org/plugins/wpsso-google-merchant-feed/',
517 + 'forum' => 'https://wordpress.org/support/plugin/wpsso-google-merchant-feed',
518 + 'review' => 'https://wordpress.org/support/plugin/wpsso-google-merchant-feed/reviews/?rate=5#new-post',
519 +
520 + /*
521 + * GitHub.com URLs.
522 + */
523 + 'readme_txt' => 'https://raw.githubusercontent.com/SurniaUlula/wpsso-google-merchant-feed/master/readme.txt',
524 +
525 + /*
526 + * WPSSO.com URLs.
527 + */
528 + 'changelog' => 'https://wpsso.com/extend/plugins/wpsso-google-merchant-feed/changelog/',
529 + 'docs' => 'https://wpsso.com/docs/plugins/wpsso-google-merchant-feed/',
530 + 'install' => 'https://wpsso.com/docs/plugins/wpsso-google-merchant-feed/installation/',
531 + 'faqs' => '',
532 + 'notes' => '',
533 + 'support' => '', // Premium support ticket.
534 + 'purchase' => '', // Purchase page.
535 + 'info' => '', // License information.
536 + 'update' => 'https://wpsso.com/extend/plugins/wpsso-google-merchant-feed/update/',
537 + 'download' => 'https://wpsso.com/extend/plugins/wpsso-google-merchant-feed/latest/',
538 + ),
539 + ),
540 + 'wpssomrp' => array( // Plugin acronym.
541 + 'short' => 'WPSSO MRP', // Short plugin name.
542 + 'name' => 'WPSSO Schema Merchant Return Policy Manager',
543 + 'desc' => 'Manage Merchant Return Policies for Google Merchant listings and Schema markup.',
544 + 'slug' => 'wpsso-merchant-return-policy',
545 + 'base' => 'wpsso-merchant-return-policy/wpsso-merchant-return-policy.php',
546 + 'update_auth' => '', // No premium version.
547 +
548 + /*
549 + * URLs or relative paths to plugin banners and icons.
550 + */
551 + 'assets' => array(
552 +
553 + /*
554 + * Banner image array keys are 'low' and 'high'.
555 + */
556 + 'banners' => array(
557 + 'low' => 'https://surniaulula.github.io/wpsso-merchant-return-policy/assets/banner-772x250.jpg',
558 + 'high' => 'https://surniaulula.github.io/wpsso-merchant-return-policy/assets/banner-1544x500.jpg',
559 + ),
560 +
561 + /*
562 + * Icon image array keys are '1x' and '2x'.
563 + */
564 + 'icons' => array(
565 + '1x' => 'https://surniaulula.github.io/wpsso-merchant-return-policy/assets/icon-128x128.png',
566 + '2x' => 'https://surniaulula.github.io/wpsso-merchant-return-policy/assets/icon-256x256.png',
567 + ),
568 + ),
569 + 'hosts' => array(
570 + 'wp_org' => true,
571 + 'github' => true,
572 + 'wpsso' => true,
573 + ),
574 + 'url' => array(
575 +
576 + /*
577 + * WordPress.org URLs.
578 + */
579 + 'home' => 'https://wordpress.org/plugins/wpsso-merchant-return-policy/',
580 + 'forum' => 'https://wordpress.org/support/plugin/wpsso-merchant-return-policy',
581 + 'review' => 'https://wordpress.org/support/plugin/wpsso-merchant-return-policy/reviews/?rate=5#new-post',
582 +
583 + /*
584 + * GitHub.com URLs.
585 + */
586 + 'readme_txt' => 'https://raw.githubusercontent.com/SurniaUlula/wpsso-merchant-return-policy/master/readme.txt',
587 +
588 + /*
589 + * WPSSO.com URLs.
590 + */
591 + 'changelog' => 'https://wpsso.com/extend/plugins/wpsso-merchant-return-policy/changelog/',
592 + 'docs' => 'https://wpsso.com/docs/plugins/wpsso-merchant-return-policy/',
593 + 'install' => 'https://wpsso.com/docs/plugins/wpsso-merchant-return-policy/installation/',
594 + 'faqs' => '',
595 + 'notes' => '',
596 + 'support' => '', // Premium support ticket.
597 + 'purchase' => '', // Purchase page.
598 + 'info' => '', // License information.
599 + 'update' => 'https://wpsso.com/extend/plugins/wpsso-merchant-return-policy/update/',
600 + 'download' => 'https://wpsso.com/extend/plugins/wpsso-merchant-return-policy/latest/',
601 + ),
602 + ),
603 + 'wpssoopm' => array( // Plugin acronym.
604 + 'short' => 'WPSSO OPM', // Short plugin name.
605 + 'name' => 'WPSSO Schema Organization and Place Manager',
606 + 'desc' => 'Manage Organizations and Places (Local Businesses, Venues, etc.) for Google, Facebook, Pinterest, and Schema markup.',
607 + 'slug' => 'wpsso-organization-place',
608 + 'base' => 'wpsso-organization-place/wpsso-organization-place.php',
609 + 'update_auth' => '', // No premium version.
610 +
611 + /*
612 + * URLs or relative paths to plugin banners and icons.
613 + */
614 + 'assets' => array(
615 +
616 + /*
617 + * Banner image array keys are 'low' and 'high'.
618 + */
619 + 'banners' => array(
620 + 'low' => 'https://surniaulula.github.io/wpsso-organization-place/assets/banner-772x250.jpg',
621 + 'high' => 'https://surniaulula.github.io/wpsso-organization-place/assets/banner-1544x500.jpg',
622 + ),
623 +
624 + /*
625 + * Icon image array keys are '1x' and '2x'.
626 + */
627 + 'icons' => array(
628 + '1x' => 'https://surniaulula.github.io/wpsso-organization-place/assets/icon-128x128.png',
629 + '2x' => 'https://surniaulula.github.io/wpsso-organization-place/assets/icon-256x256.png',
630 + ),
631 + ),
632 + 'hosts' => array(
633 + 'wp_org' => true,
634 + 'github' => true,
635 + 'wpsso' => true,
636 + ),
637 + 'url' => array(
638 +
639 + /*
640 + * WordPress.org URLs.
641 + */
642 + 'home' => 'https://wordpress.org/plugins/wpsso-organization-place/',
643 + 'forum' => 'https://wordpress.org/support/plugin/wpsso-organization-place',
644 + 'review' => 'https://wordpress.org/support/plugin/wpsso-organization-place/reviews/?rate=5#new-post',
645 +
646 + /*
647 + * GitHub.com URLs.
648 + */
649 + 'readme_txt' => 'https://raw.githubusercontent.com/SurniaUlula/wpsso-organization-place/master/readme.txt',
650 +
651 + /*
652 + * WPSSO.com URLs.
653 + */
654 + 'changelog' => 'https://wpsso.com/extend/plugins/wpsso-organization-place/changelog/',
655 + 'docs' => 'https://wpsso.com/docs/plugins/wpsso-organization-place/',
656 + 'install' => 'https://wpsso.com/docs/plugins/wpsso-organization-place/installation/',
657 + 'faqs' => '',
658 + 'notes' => '',
659 + 'support' => '', // Premium support ticket.
660 + 'purchase' => '', // Purchase page.
661 + 'info' => '', // License information.
662 + 'update' => 'https://wpsso.com/extend/plugins/wpsso-organization-place/update/',
663 + 'download' => 'https://wpsso.com/extend/plugins/wpsso-organization-place/latest/',
664 + ),
665 + ),
666 + 'wpssorar' => array( // Plugin acronym.
667 + 'short' => 'WPSSO RAR', // Short plugin name.
668 + 'name' => 'WPSSO Ratings and Reviews',
669 + 'desc' => 'Adds Ratings and Reviews Features to the WordPress Comments System.',
670 + 'slug' => 'wpsso-ratings-and-reviews',
671 + 'base' => 'wpsso-ratings-and-reviews/wpsso-ratings-and-reviews.php',
672 + 'update_auth' => '', // No premium version.
673 +
674 + /*
675 + * URLs or relative paths to plugin banners and icons.
676 + */
677 + 'assets' => array(
678 +
679 + /*
680 + * Banner image array keys are 'low' and 'high'.
681 + */
682 + 'banners' => array(
683 + 'low' => 'https://surniaulula.github.io/wpsso-ratings-and-reviews/assets/banner-772x250.jpg',
684 + 'high' => 'https://surniaulula.github.io/wpsso-ratings-and-reviews/assets/banner-1544x500.jpg',
685 + ),
686 +
687 + /*
688 + * Icon image array keys are '1x' and '2x'.
689 + */
690 + 'icons' => array(
691 + '1x' => 'https://surniaulula.github.io/wpsso-ratings-and-reviews/assets/icon-128x128.png',
692 + '2x' => 'https://surniaulula.github.io/wpsso-ratings-and-reviews/assets/icon-256x256.png',
693 + ),
694 + ),
695 + 'hosts' => array(
696 + 'wp_org' => true,
697 + 'github' => true,
698 + 'wpsso' => true,
699 + ),
700 + 'url' => array(
701 +
702 + /*
703 + * WordPress.org URLs.
704 + */
705 + 'home' => 'https://wordpress.org/plugins/wpsso-ratings-and-reviews/',
706 + 'forum' => 'https://wordpress.org/support/plugin/wpsso-ratings-and-reviews',
707 + 'review' => 'https://wordpress.org/support/plugin/wpsso-ratings-and-reviews/reviews/?rate=5#new-post',
708 +
709 + /*
710 + * GitHub.com URLs.
711 + */
712 + 'readme_txt' => 'https://raw.githubusercontent.com/SurniaUlula/wpsso-ratings-and-reviews/master/readme.txt',
713 +
714 + /*
715 + * WPSSO.com URLs.
716 + */
717 + 'changelog' => 'https://wpsso.com/extend/plugins/wpsso-ratings-and-reviews/changelog/',
718 + 'docs' => 'https://wpsso.com/docs/plugins/wpsso-ratings-and-reviews/',
719 + 'install' => 'https://wpsso.com/docs/plugins/wpsso-ratings-and-reviews/installation/',
720 + 'faqs' => '',
721 + 'notes' => 'https://wpsso.com/docs/plugins/wpsso-ratings-and-reviews/notes/',
722 + 'support' => '', // Premium support ticket.
723 + 'purchase' => '', // Purchase page.
724 + 'info' => '', // License information.
725 + 'update' => 'https://wpsso.com/extend/plugins/wpsso-ratings-and-reviews/update/',
726 + 'download' => 'https://wpsso.com/extend/plugins/wpsso-ratings-and-reviews/latest/',
727 + ),
728 + ),
729 + 'wpssorest' => array( // Plugin acronym.
730 + 'short' => 'WPSSO REST', // Short plugin name.
731 + 'name' => 'WPSSO REST API',
732 + 'desc' => 'Extends the WordPress REST API post, term, and user query results with an array of meta tags and Schema JSON-LD markup.',
733 + 'slug' => 'wpsso-rest-api',
734 + 'base' => 'wpsso-rest-api/wpsso-rest-api.php',
735 + 'update_auth' => '', // No premium version.
736 +
737 + /*
738 + * URLs or relative paths to plugin banners and icons.
739 + */
740 + 'assets' => array(
741 +
742 + /*
743 + * Banner image array keys are 'low' and 'high'.
744 + */
745 + 'banners' => array(
746 + 'low' => 'https://surniaulula.github.io/wpsso-rest-api/assets/banner-772x250.jpg',
747 + 'high' => 'https://surniaulula.github.io/wpsso-rest-api/assets/banner-1544x500.jpg',
748 + ),
749 +
750 + /*
751 + * Icon image array keys are '1x' and '2x'.
752 + */
753 + 'icons' => array(
754 + '1x' => 'https://surniaulula.github.io/wpsso-rest-api/assets/icon-128x128.png',
755 + '2x' => 'https://surniaulula.github.io/wpsso-rest-api/assets/icon-256x256.png',
756 + ),
757 + ),
758 + 'hosts' => array(
759 + 'wp_org' => true,
760 + 'github' => true,
761 + 'wpsso' => true,
762 + ),
763 + 'url' => array(
764 +
765 + /*
766 + * WordPress.org URLs.
767 + */
768 + 'home' => 'https://wordpress.org/plugins/wpsso-rest-api/',
769 + 'forum' => 'https://wordpress.org/support/plugin/wpsso-rest-api',
770 + 'review' => 'https://wordpress.org/support/plugin/wpsso-rest-api/reviews/?rate=5#new-post',
771 +
772 + /*
773 + * GitHub.com URLs.
774 + */
775 + 'readme_txt' => 'https://raw.githubusercontent.com/SurniaUlula/wpsso-rest-api/master/readme.txt',
776 +
777 + /*
778 + * WPSSO.com URLs.
779 + */
780 + 'changelog' => 'https://wpsso.com/extend/plugins/wpsso-rest-api/changelog/',
781 + 'docs' => 'https://wpsso.com/docs/plugins/wpsso-rest-api/',
782 + 'install' => 'https://wpsso.com/docs/plugins/wpsso-rest-api/installation/',
783 + 'faqs' => '',
784 + 'notes' => '',
785 + 'support' => '', // Premium support ticket.
786 + 'purchase' => '', // Purchase page.
787 + 'info' => '', // License information.
788 + 'update' => 'https://wpsso.com/extend/plugins/wpsso-rest-api/update/',
789 + 'download' => 'https://wpsso.com/extend/plugins/wpsso-rest-api/latest/',
790 + ),
791 + ),
792 + 'wpssossm' => array( // Plugin acronym.
793 + 'short' => 'WPSSO SSM', // Short plugin name.
794 + 'name' => 'WPSSO Strip Schema Microdata',
795 + 'desc' => 'Remove Schema Microdata and RDFa from the webpage for better Google Rich Results using Schema JSON-LD markup.',
796 + 'slug' => 'wpsso-strip-schema-microdata',
797 + 'base' => 'wpsso-strip-schema-microdata/wpsso-strip-schema-microdata.php',
798 + 'update_auth' => '', // No premium version.
799 +
800 + /*
801 + * URLs or relative paths to plugin banners and icons.
802 + */
803 + 'assets' => array(
804 +
805 + /*
806 + * Banner image array keys are 'low' and 'high'.
807 + */
808 + 'banners' => array(
809 + 'low' => 'https://surniaulula.github.io/wpsso-strip-schema-microdata/assets/banner-772x250.jpg',
810 + 'high' => 'https://surniaulula.github.io/wpsso-strip-schema-microdata/assets/banner-1544x500.jpg',
811 + ),
812 +
813 + /*
814 + * Icon image array keys are '1x' and '2x'.
815 + */
816 + 'icons' => array(
817 + '1x' => 'https://surniaulula.github.io/wpsso-strip-schema-microdata/assets/icon-128x128.png',
818 + '2x' => 'https://surniaulula.github.io/wpsso-strip-schema-microdata/assets/icon-256x256.png',
819 + ),
820 + ),
821 + 'hosts' => array(
822 + 'wp_org' => true,
823 + 'github' => true,
824 + 'wpsso' => true,
825 + ),
826 + 'url' => array(
827 +
828 + /*
829 + * WordPress.org URLs.
830 + */
831 + 'home' => 'https://wordpress.org/plugins/wpsso-strip-schema-microdata/',
832 + 'forum' => 'https://wordpress.org/support/plugin/wpsso-strip-schema-microdata',
833 + 'review' => 'https://wordpress.org/support/plugin/wpsso-strip-schema-microdata/reviews/?rate=5#new-post',
834 +
835 + /*
836 + * GitHub.com URLs.
837 + */
838 + 'readme_txt' => 'https://raw.githubusercontent.com/SurniaUlula/wpsso-strip-schema-microdata/master/readme.txt',
839 +
840 + /*
841 + * WPSSO.com URLs.
842 + */
843 + 'changelog' => 'https://wpsso.com/extend/plugins/wpsso-strip-schema-microdata/changelog/',
844 + 'docs' => 'https://wpsso.com/docs/plugins/wpsso-strip-schema-microdata/',
845 + 'install' => 'https://wpsso.com/docs/plugins/wpsso-strip-schema-microdata/installation/',
846 + 'faqs' => '',
847 + 'notes' => '',
848 + 'support' => '', // Premium support ticket.
849 + 'purchase' => '', // Purchase page.
850 + 'info' => '', // License information.
851 + 'update' => 'https://wpsso.com/extend/plugins/wpsso-strip-schema-microdata/update/',
852 + 'download' => 'https://wpsso.com/extend/plugins/wpsso-strip-schema-microdata/latest/',
853 + ),
854 + ),
855 + 'wpssotie' => array( // Plugin acronym.
856 + 'short' => 'WPSSO TIE', // Short plugin name.
857 + 'name' => 'WPSSO Tune WP Image Editors',
858 + 'desc' => 'Improves the appearance of WordPress images for better click through rates from social and search sites.',
859 + 'slug' => 'wpsso-tune-image-editors',
860 + 'base' => 'wpsso-tune-image-editors/wpsso-tune-image-editors.php',
861 + 'update_auth' => '', // No premium version.
862 +
863 + /*
864 + * URLs or relative paths to plugin banners and icons.
865 + */
866 + 'assets' => array(
867 +
868 + /*
869 + * Banner image array keys are 'low' and 'high'.
870 + */
871 + 'banners' => array(
872 + 'low' => 'https://surniaulula.github.io/wpsso-tune-image-editors/assets/banner-772x250.jpg',
873 + 'high' => 'https://surniaulula.github.io/wpsso-tune-image-editors/assets/banner-1544x500.jpg',
874 + ),
875 +
876 + /*
877 + * Icon image array keys are '1x' and '2x'.
878 + */
879 + 'icons' => array(
880 + '1x' => 'https://surniaulula.github.io/wpsso-tune-image-editors/assets/icon-128x128.png',
881 + '2x' => 'https://surniaulula.github.io/wpsso-tune-image-editors/assets/icon-256x256.png',
882 + ),
883 + ),
884 + 'hosts' => array(
885 + 'wp_org' => true,
886 + 'github' => true,
887 + 'wpsso' => true,
888 + ),
889 + 'url' => array(
890 +
891 + /*
892 + * WordPress.org URLs.
893 + */
894 + 'home' => 'https://wordpress.org/plugins/wpsso-tune-image-editors/',
895 + 'forum' => 'https://wordpress.org/support/plugin/wpsso-tune-image-editors',
896 + 'review' => 'https://wordpress.org/support/plugin/wpsso-tune-image-editors/reviews/?rate=5#new-post',
897 +
898 + /*
899 + * GitHub.com URLs.
900 + */
901 + 'readme_txt' => 'https://raw.githubusercontent.com/SurniaUlula/wpsso-tune-image-editors/master/readme.txt',
902 +
903 + /*
904 + * WPSSO.com URLs.
905 + */
906 + 'changelog' => 'https://wpsso.com/extend/plugins/wpsso-tune-image-editors/changelog/',
907 + 'docs' => 'https://wpsso.com/docs/plugins/wpsso-tune-image-editors/',
908 + 'install' => 'https://wpsso.com/docs/plugins/wpsso-tune-image-editors/installation/',
909 + 'faqs' => '',
910 + 'notes' => '',
911 + 'support' => '', // Premium support ticket.
912 + 'purchase' => '', // Purchase page.
913 + 'info' => '', // License information.
914 + 'update' => 'https://wpsso.com/extend/plugins/wpsso-tune-image-editors/update/',
915 + 'download' => 'https://wpsso.com/extend/plugins/wpsso-tune-image-editors/latest/',
916 + ),
917 + ),
918 + 'wpssoul' => array( // Plugin acronym.
919 + 'short' => 'WPSSO UL', // Short plugin name.
920 + 'name' => 'WPSSO User Locale Selector',
921 + 'desc' => 'Quick and easy locale / language / region selector for the WordPress admin toolbar.',
922 + 'slug' => 'wpsso-user-locale',
923 + 'base' => 'wpsso-user-locale/wpsso-user-locale.php',
924 + 'update_auth' => '', // No premium version.
925 +
926 + /*
927 + * URLs or relative paths to plugin banners and icons.
928 + */
929 + 'assets' => array(
930 +
931 + /*
932 + * Banner image array keys are 'low' and 'high'.
933 + */
934 + 'banners' => array(
935 + 'low' => 'https://surniaulula.github.io/wpsso-user-locale/assets/banner-772x250.jpg',
936 + 'high' => 'https://surniaulula.github.io/wpsso-user-locale/assets/banner-1544x500.jpg',
937 + ),
938 +
939 + /*
940 + * Icon image array keys are '1x' and '2x'.
941 + */
942 + 'icons' => array(
943 + '1x' => 'https://surniaulula.github.io/wpsso-user-locale/assets/icon-128x128.png',
944 + '2x' => 'https://surniaulula.github.io/wpsso-user-locale/assets/icon-256x256.png',
945 + ),
946 + ),
947 + 'hosts' => array(
948 + 'wp_org' => true,
949 + 'github' => true,
950 + 'wpsso' => true,
951 + ),
952 + 'url' => array(
953 +
954 + /*
955 + * WordPress.org URLs.
956 + */
957 + 'home' => 'https://wordpress.org/plugins/wpsso-user-locale/',
958 + 'forum' => 'https://wordpress.org/support/plugin/wpsso-user-locale',
959 + 'review' => 'https://wordpress.org/support/plugin/wpsso-user-locale/reviews/?rate=5#new-post',
960 +
961 + /*
962 + * GitHub.com URLs.
963 + */
964 + 'readme_txt' => 'https://raw.githubusercontent.com/SurniaUlula/wpsso-user-locale/master/readme.txt',
965 +
966 + /*
967 + * WPSSO.com URLs.
968 + */
969 + 'changelog' => 'https://wpsso.com/extend/plugins/wpsso-user-locale/changelog/',
970 + 'docs' => 'https://wpsso.com/docs/plugins/wpsso-user-locale/',
971 + 'install' => 'https://wpsso.com/docs/plugins/wpsso-user-locale/installation/',
972 + 'faqs' => '',
973 + 'notes' => 'https://wpsso.com/docs/plugins/wpsso-user-locale/notes/',
974 + 'support' => '', // Premium support ticket.
975 + 'purchase' => '', // Purchase page.
976 + 'info' => '', // License information.
977 + 'update' => 'https://wpsso.com/extend/plugins/wpsso-user-locale/update/',
978 + 'download' => 'https://wpsso.com/extend/plugins/wpsso-user-locale/latest/',
979 + ),
980 + ),
981 + 'wpssoum' => array( // Plugin acronym.
982 + 'short' => 'WPSSO UM', // Short plugin name.
983 + 'name' => 'WPSSO Update Manager',
984 + 'desc' => 'Update Manager for the WPSSO Core Premium plugin.',
985 + 'slug' => 'wpsso-um',
986 + 'base' => 'wpsso-um/wpsso-um.php',
987 + 'update_auth' => '', // No premium version.
988 +
989 + /*
990 + * URLs or relative paths to plugin banners and icons.
991 + */
992 + 'assets' => array(
993 +
994 + /*
995 + * Banner image array keys are 'low' and 'high'.
996 + */
997 + 'banners' => array(
998 + 'low' => 'https://surniaulula.github.io/wpsso-um/assets/banner-772x250.jpg',
999 + 'high' => 'https://surniaulula.github.io/wpsso-um/assets/banner-1544x500.jpg',
1000 + ),
1001 +
1002 + /*
1003 + * Icon image array keys are '1x' and '2x'.
1004 + */
1005 + 'icons' => array(
1006 + '1x' => 'https://surniaulula.github.io/wpsso-um/assets/icon-128x128.png',
1007 + '2x' => 'https://surniaulula.github.io/wpsso-um/assets/icon-256x256.png',
1008 + ),
1009 + ),
1010 + 'hosts' => array(
1011 + 'wp_org' => false, // Add-on is not available on wordpress.org.
1012 + 'github' => true,
1013 + 'wpsso' => true,
1014 + ),
1015 + 'url' => array(
1016 +
1017 + /*
1018 + * GitHub.com URLs.
1019 + */
1020 + 'readme_txt' => 'https://raw.githubusercontent.com/SurniaUlula/wpsso-um/master/readme.txt',
1021 +
1022 + /*
1023 + * WPSSO.com URLs.
1024 + */
1025 + 'home' => 'https://wpsso.com/extend/plugins/wpsso-um/',
1026 + 'forum' => '',
1027 + 'review' => '',
1028 + 'changelog' => 'https://wpsso.com/extend/plugins/wpsso-um/changelog/',
1029 + 'docs' => 'https://wpsso.com/docs/plugins/wpsso-um/',
1030 + 'install' => 'https://wpsso.com/docs/plugins/wpsso-um/installation/',
1031 + 'faqs' => '',
1032 + 'notes' => '',
1033 + 'support' => '', // Premium support ticket.
1034 + 'purchase' => '', // Purchase page.
1035 + 'info' => '', // License information.
1036 + 'update' => 'https://wpsso.com/extend/plugins/wpsso-um/update/',
1037 + 'download' => 'https://wpsso.com/extend/plugins/wpsso-um/latest/',
1038 + ),
1039 + ),
1040 + 'wpssowcmd' => array( // Plugin acronym.
1041 + 'short' => 'WPSSO WCMD', // Short plugin name.
1042 + 'name' => 'WPSSO Schema Product Metadata for WooCommerce',
1043 + 'desc' => 'MPN, ISBN, GTIN-8, UPC, EAN, GTIN-14, net dimensions, and fluid volume for better WooCommerce Schema markup.',
1044 + 'slug' => 'wpsso-wc-metadata',
1045 + 'base' => 'wpsso-wc-metadata/wpsso-wc-metadata.php',
1046 + 'update_auth' => '', // No premium version.
1047 +
1048 + /*
1049 + * URLs or relative paths to plugin banners and icons.
1050 + */
1051 + 'assets' => array(
1052 +
1053 + /*
1054 + * Banner image array keys are 'low' and 'high'.
1055 + */
1056 + 'banners' => array(
1057 + 'low' => 'https://surniaulula.github.io/wpsso-wc-metadata/assets/banner-772x250.jpg',
1058 + 'high' => 'https://surniaulula.github.io/wpsso-wc-metadata/assets/banner-1544x500.jpg',
1059 + ),
1060 +
1061 + /*
1062 + * Icon image array keys are '1x' and '2x'.
1063 + */
1064 + 'icons' => array(
1065 + '1x' => 'https://surniaulula.github.io/wpsso-wc-metadata/assets/icon-128x128.png',
1066 + '2x' => 'https://surniaulula.github.io/wpsso-wc-metadata/assets/icon-256x256.png',
1067 + ),
1068 + ),
1069 + 'hosts' => array(
1070 + 'wp_org' => true,
1071 + 'github' => true,
1072 + 'wpsso' => true,
1073 + ),
1074 + 'url' => array(
1075 +
1076 + /*
1077 + * WordPress.org URLs.
1078 + */
1079 + 'home' => 'https://wordpress.org/plugins/wpsso-wc-metadata/',
1080 + 'forum' => 'https://wordpress.org/support/plugin/wpsso-wc-metadata',
1081 + 'review' => 'https://wordpress.org/support/plugin/wpsso-wc-metadata/reviews/?rate=5#new-post',
1082 +
1083 + /*
1084 + * GitHub.com URLs.
1085 + */
1086 + 'readme_txt' => 'https://raw.githubusercontent.com/SurniaUlula/wpsso-wc-metadata/master/readme.txt',
1087 +
1088 + /*
1089 + * WPSSO.com URLs.
1090 + */
1091 + 'changelog' => 'https://wpsso.com/extend/plugins/wpsso-wc-metadata/changelog/',
1092 + 'docs' => 'https://wpsso.com/docs/plugins/wpsso-wc-metadata/',
1093 + 'install' => 'https://wpsso.com/docs/plugins/wpsso-wc-metadata/installation/',
1094 + 'faqs' => '',
1095 + 'notes' => '',
1096 + 'support' => '', // Premium support ticket.
1097 + 'purchase' => '', // Purchase page.
1098 + 'info' => '', // License information.
1099 + 'update' => 'https://wpsso.com/extend/plugins/wpsso-wc-metadata/update/',
1100 + 'download' => 'https://wpsso.com/extend/plugins/wpsso-wc-metadata/latest/',
1101 + ),
1102 + ),
1103 + 'wpssowcsdt' => array( // Plugin acronym.
1104 + 'short' => 'WPSSO WCSDT', // Short plugin name.
1105 + 'name' => 'WPSSO Schema Shipping Delivery Time for WooCommerce',
1106 + 'desc' => 'Shipping delivery time estimates for WooCommerce shipping zones, methods, and classes.',
1107 + 'slug' => 'wpsso-wc-shipping-delivery-time',
1108 + 'base' => 'wpsso-wc-shipping-delivery-time/wpsso-wc-shipping-delivery-time.php',
1109 + 'update_auth' => '', // No premium version.
1110 +
1111 + /*
1112 + * URLs or relative paths to plugin banners and icons.
1113 + */
1114 + 'assets' => array(
1115 +
1116 + /*
1117 + * Banner image array keys are 'low' and 'high'.
1118 + */
1119 + 'banners' => array(
1120 + 'low' => 'https://surniaulula.github.io/wpsso-wc-shipping-delivery-time/assets/banner-772x250.jpg',
1121 + 'high' => 'https://surniaulula.github.io/wpsso-wc-shipping-delivery-time/assets/banner-1544x500.jpg',
1122 + ),
1123 +
1124 + /*
1125 + * Icon image array keys are '1x' and '2x'.
1126 + */
1127 + 'icons' => array(
1128 + '1x' => 'https://surniaulula.github.io/wpsso-wc-shipping-delivery-time/assets/icon-128x128.png',
1129 + '2x' => 'https://surniaulula.github.io/wpsso-wc-shipping-delivery-time/assets/icon-256x256.png',
1130 + ),
1131 + ),
1132 + 'hosts' => array(
1133 + 'wp_org' => true,
1134 + 'github' => true,
1135 + 'wpsso' => true,
1136 + ),
1137 + 'url' => array(
1138 +
1139 + /*
1140 + * WordPress.org URLs.
1141 + */
1142 + 'home' => 'https://wordpress.org/plugins/wpsso-wc-shipping-delivery-time/',
1143 + 'forum' => 'https://wordpress.org/support/plugin/wpsso-wc-shipping-delivery-time',
1144 + 'review' => 'https://wordpress.org/support/plugin/wpsso-wc-shipping-delivery-time/reviews/?rate=5#new-post',
1145 +
1146 + /*
1147 + * GitHub.com URLs.
1148 + */
1149 + 'readme_txt' => 'https://raw.githubusercontent.com/SurniaUlula/wpsso-wc-shipping-delivery-time/main/readme.txt',
1150 +
1151 + /*
1152 + * WPSSO.com URLs.
1153 + */
1154 + 'changelog' => 'https://wpsso.com/extend/plugins/wpsso-wc-shipping-delivery-time/changelog/',
1155 + 'docs' => 'https://wpsso.com/docs/plugins/wpsso-wc-shipping-delivery-time/',
1156 + 'install' => 'https://wpsso.com/docs/plugins/wpsso-wc-shipping-delivery-time/installation/',
1157 + 'faqs' => 'https://wpsso.com/docs/plugins/wpsso-wc-shipping-delivery-time/faqs/',
1158 + 'notes' => '',
1159 + 'support' => '', // Premium support ticket.
1160 + 'purchase' => '', // Purchase page.
1161 + 'info' => '', // License information.
1162 + 'update' => 'https://wpsso.com/extend/plugins/wpsso-wc-shipping-delivery-time/update/',
1163 + 'download' => 'https://wpsso.com/extend/plugins/wpsso-wc-shipping-delivery-time/latest/',
1164 + ),
1165 + ),
1166 + 'wpssowpsm' => array( // Plugin acronym.
1167 + 'short' => 'WPSSO WPSM', // Short plugin name.
1168 + 'name' => 'WPSSO WP Sitemaps XML',
1169 + 'desc' => 'Improves the WordPress sitemaps XML with article modification times, alternate language URLs, images sitemaps, news sitemaps and more.',
1170 + 'slug' => 'wpsso-wp-sitemaps',
1171 + 'base' => 'wpsso-wp-sitemaps/wpsso-wp-sitemaps.php',
1172 + 'update_auth' => '', // No premium version.
1173 +
1174 + /*
1175 + * URLs or relative paths to plugin banners and icons.
1176 + */
1177 + 'assets' => array(
1178 +
1179 + /*
1180 + * Banner image array keys are 'low' and 'high'.
1181 + */
1182 + 'banners' => array(
1183 + 'low' => 'https://surniaulula.github.io/wpsso-wp-sitemaps/assets/banner-772x250.jpg',
1184 + 'high' => 'https://surniaulula.github.io/wpsso-wp-sitemaps/assets/banner-1544x500.jpg',
1185 + ),
1186 +
1187 + /*
1188 + * Icon image array keys are '1x' and '2x'.
1189 + */
1190 + 'icons' => array(
1191 + '1x' => 'https://surniaulula.github.io/wpsso-wp-sitemaps/assets/icon-128x128.png',
1192 + '2x' => 'https://surniaulula.github.io/wpsso-wp-sitemaps/assets/icon-256x256.png',
1193 + ),
1194 + ),
1195 + 'hosts' => array(
1196 + 'wp_org' => true,
1197 + 'github' => true,
1198 + 'wpsso' => true,
1199 + ),
1200 + 'url' => array(
1201 +
1202 + /*
1203 + * WordPress.org URLs.
1204 + */
1205 + 'home' => 'https://wordpress.org/plugins/wpsso-wp-sitemaps/',
1206 + 'forum' => 'https://wordpress.org/support/plugin/wpsso-wp-sitemaps',
1207 + 'review' => 'https://wordpress.org/support/plugin/wpsso-wp-sitemaps/reviews/?rate=5#new-post',
1208 +
1209 + /*
1210 + * GitHub.com URLs.
1211 + */
1212 + 'readme_txt' => 'https://raw.githubusercontent.com/SurniaUlula/wpsso-wp-sitemaps/master/readme.txt',
1213 +
1214 + /*
1215 + * WPSSO.com URLs.
1216 + */
1217 + 'changelog' => 'https://wpsso.com/extend/plugins/wpsso-wp-sitemaps/changelog/',
1218 + 'docs' => 'https://wpsso.com/docs/plugins/wpsso-wp-sitemaps/',
1219 + 'install' => 'https://wpsso.com/docs/plugins/wpsso-wp-sitemaps/installation/',
1220 + 'faqs' => '',
1221 + 'notes' => '',
1222 + 'support' => '', // Premium support ticket.
1223 + 'purchase' => '', // Purchase page.
1224 + 'info' => '', // License information.
1225 + 'update' => 'https://wpsso.com/extend/plugins/wpsso-wp-sitemaps/update/',
1226 + 'download' => 'https://wpsso.com/extend/plugins/wpsso-wp-sitemaps/latest/',
1227 + ),
1228 + ),
1229 + ),
1230 + 'opt' => array(
1231 + 'defaults' => array(
1232 + 'checksum' => '', // Checksum of plugin versions.
1233 + 'opt_checksum' => '', // Checksum of option versions.
1234 + 'opt_versions' => array(),
1235 +
1236 + /*
1237 + * Site options.
1238 + */
1239 + 'site_name' => '', // Site Name (localized).
1240 + 'site_name_alt' => '', // Site Alternate Name (localized).
1241 + 'site_desc' => '', // Site Description (localized).
1242 + 'site_home_url' => '', // Site Home URL (localized).
1243 + 'site_pub_schema_type' => 'organization', // Site Publisher Type.
1244 + 'site_pub_person_id' => 'none', // Site Publisher Person.
1245 + 'site_org_logo_url' => '', // Organization Logo URL (localized)
1246 + 'site_org_banner_url' => '', // Organization Banner URL (localized).
1247 + 'site_org_place_id' => 'none', // Organization Location.
1248 + 'site_org_schema_type' => 'organization', // Organization Schema Type.
1249 +
1250 + /*
1251 + * Facebook options.
1252 + */
1253 + 'fb_publisher_url' => '', // Facebook Business Page URL (localized).
1254 + 'fb_app_id' => '966242223397117', // Facebook Application ID.
1255 + 'fb_locale' => 'en_US', // Facebook Locale.
1256 +
1257 + /*
1258 + * Open Graph options.
1259 + *
1260 + * See WpssoOpengraph->add_data_og_type_md().
1261 + */
1262 + 'og_def_img_id' => '', // Default Image ID.
1263 + 'og_def_img_url' => '', // Default Image URL.
1264 + 'og_def_currency' => 'USD', // Default Currency.
1265 + 'og_def_country' => 'none', // Default Country.
1266 + 'og_def_timezone' => 'UTC', // Default Timezone.
1267 + 'og_def_dimension_units' => 'cm', // Default Dimension Units.
1268 + 'og_def_weight_units' => 'kg', // Default Weight Units.
1269 + 'og_def_fluid_volume_units' => 'ml', // Default Fluid Volume Units.
1270 + 'og_img_width' => 1200,
1271 + 'og_img_height' => 628,
1272 + 'og_img_crop' => 1,
1273 + 'og_img_crop_x' => 'center',
1274 + 'og_img_crop_y' => 'center',
1275 + 'og_img_max' => 1, // Maximum Images to Include.
1276 + 'og_title_sep' => '-', // Title Separator.
1277 + 'og_ellipsis' => '...', // Truncated Text Ellipsis.
1278 + 'og_desc_hashtags' => 0, // Description Hashtags.
1279 + 'og_vid_max' => 1, // Maximum Videos to Include.
1280 + 'og_vid_autoplay' => 0, // Force Autoplay when Possible.
1281 + 'og_vid_prev_img' => 1, // Include Video Preview Images.
1282 +
1283 + /*
1284 + * Advanced Settings > Document Types > Open Graph.
1285 + */
1286 + 'og_type_for_archive_page' => 'website',
1287 + 'og_type_for_comment' => 'article',
1288 + 'og_type_for_comment_reply' => 'article',
1289 + 'og_type_for_comment_review' => 'article',
1290 + 'og_type_for_home_page' => 'website',
1291 + 'og_type_for_home_posts' => 'website',
1292 + 'og_type_for_search_page' => 'website',
1293 + 'og_type_for_user_page' => 'profile',
1294 +
1295 + /*
1296 + * Advanced Settings > Document Types > Open Graph tab: Post Types.
1297 + */
1298 + 'og_type_for_attachment' => 'website',
1299 + 'og_type_for_article' => 'article',
1300 + 'og_type_for_book' => 'book',
1301 + 'og_type_for_business' => 'place',
1302 + 'og_type_for_contact_point' => 'place',
1303 + 'og_type_for_download' => 'product', // For Easy Digital Downloads.
1304 + 'og_type_for_organization' => 'website',
1305 + 'og_type_for_page' => 'article',
1306 + 'og_type_for_place' => 'place',
1307 + 'og_type_for_post' => 'article',
1308 + 'og_type_for_product' => 'product', // For WooCommerce.
1309 + 'og_type_for_product_variation' => 'product', // For WooCommerce.
1310 + 'og_type_for_question' => 'article',
1311 + 'og_type_for_tc_events' => 'article', // For Tickera.
1312 + 'og_type_for_tribe_events' => 'article', // For The Events Calendar.
1313 + 'og_type_for_website' => 'website',
1314 +
1315 + /*
1316 + * Advanced Settings > Document Types > Open Graph tab: Taxonomies.
1317 + */
1318 + 'og_type_for_tax_category' => 'website',
1319 + 'og_type_for_tax_faq_category' => 'website',
1320 + 'og_type_for_tax_link_category' => 'website',
1321 + 'og_type_for_tax_post_tag' => 'website',
1322 + 'og_type_for_tax_product_brand' => 'website', // For WooCommerce Brands.
1323 + 'og_type_for_tax_product_cat' => 'website', // For WooCommerce.
1324 + 'og_type_for_tax_product_tag' => 'website', // For WooCommerce.
1325 + 'og_type_for_tax_pwb-brand' => 'website', // For Perfect Brands for WooCommerce.
1326 + 'og_type_for_tax_tribe_events_cat' => 'website', // For The Events Calendar.
1327 + 'og_type_for_tax_yith_product_brand' => 'website', // For YITH WooCommerce Brands Add-on.
1328 +
1329 + /*
1330 + * Pinterest options.
1331 + */
1332 + 'pin_publisher_url' => '',
1333 + 'pin_add_nopin_header_img_tag' => 1, // Add "nopin" to Site Header Image.
1334 + 'pin_add_nopin_media_img_tag' => 0, // Add Pinterest "nopin" to Images.
1335 + 'pin_add_img_html' => 0, // Add Hidden Image for Pinterest.
1336 + 'pin_img_width' => 1200,
1337 + 'pin_img_height' => 1800,
1338 + 'pin_img_crop' => 0,
1339 + 'pin_img_crop_x' => 'center',
1340 + 'pin_img_crop_y' => 'center',
1341 +
1342 + /*
1343 + * Robots options.
1344 + */
1345 + 'robots_max_snippet' => -1,
1346 + 'robots_max_image_preview' => 'large',
1347 + 'robots_max_video_preview' => -1,
1348 +
1349 + /*
1350 + * Schema options.
1351 + */
1352 + 'schema_1x1_img_width' => 1200,
1353 + 'schema_1x1_img_height' => 1200,
1354 + 'schema_1x1_img_crop' => 1,
1355 + 'schema_1x1_img_crop_x' => 'center',
1356 + 'schema_1x1_img_crop_y' => 'center',
1357 + 'schema_4x3_img_width' => 1200,
1358 + 'schema_4x3_img_height' => 900,
1359 + 'schema_4x3_img_crop' => 1,
1360 + 'schema_4x3_img_crop_x' => 'center',
1361 + 'schema_4x3_img_crop_y' => 'center',
1362 + 'schema_16x9_img_width' => 1200,
1363 + 'schema_16x9_img_height' => 675,
1364 + 'schema_16x9_img_crop' => 1,
1365 + 'schema_16x9_img_crop_x' => 'center',
1366 + 'schema_16x9_img_crop_y' => 'center',
1367 +
1368 + /*
1369 + * Advanced Settings > Document Types > Schema.
1370 + */
1371 + 'schema_type_for_archive_page' => 'item.list',
1372 + 'schema_type_for_comment' => 'comment',
1373 + 'schema_type_for_comment_reply' => 'comment',
1374 + 'schema_type_for_comment_review' => 'review',
1375 + 'schema_type_for_home_page' => 'website',
1376 + 'schema_type_for_home_posts' => 'blog',
1377 + 'schema_type_for_search_page' => 'webpage.search.results',
1378 + 'schema_type_for_user_page' => 'webpage.profile',
1379 +
1380 + /*
1381 + * Advanced Settings > Document Types > Open Graph tab: Post Types.
1382 + */
1383 + 'schema_type_for_attachment' => 'webpage',
1384 + 'schema_type_for_article' => 'article',
1385 + 'schema_type_for_book' => 'book',
1386 + 'schema_type_for_business' => 'local.business',
1387 + 'schema_type_for_contact_point' => 'contact.point',
1388 + 'schema_type_for_download' => 'product', // For Easy Digital Downloads.
1389 + 'schema_type_for_event' => 'event',
1390 + 'schema_type_for_howto' => 'howto',
1391 + 'schema_type_for_job_listing' => 'job.posting', // For WP Job Manager.
1392 + 'schema_type_for_jobpost' => 'job.posting', // For Simple Job Board.
1393 + 'schema_type_for_organization' => 'organization', // For WPSSO OPM.
1394 + 'schema_type_for_page' => 'article',
1395 + 'schema_type_for_person' => 'person',
1396 + 'schema_type_for_place' => 'place', // For WPSSO OPM.
1397 + 'schema_type_for_post' => 'blog.posting',
1398 + 'schema_type_for_product' => 'product', // For WooCommerce.
1399 + 'schema_type_for_product_group' => 'product.group', // For WooCommerce.
1400 + 'schema_type_for_qa' => 'webpage.qa',
1401 + 'schema_type_for_question' => 'question', // For WPSSO FAQ.
1402 + 'schema_type_for_review' => 'review', // For WP Product Review.
1403 + 'schema_type_for_service' => 'service', // For WPSSO OPM.
1404 + 'schema_type_for_tc_events' => 'event', // For Tickera.
1405 + 'schema_type_for_tribe_events' => 'event', // For The Events Calendar.
1406 + 'schema_type_for_webpage' => 'webpage',
1407 + 'schema_type_for_website' => 'website',
1408 +
1409 + /*
1410 + * Advanced Settings > Document Types > Open Graph tab: Taxonomies.
1411 + */
1412 + 'schema_type_for_tax_category' => 'item.list',
1413 + 'schema_type_for_tax_faq_category' => 'webpage.faq', // For WPSSO FAQ.
1414 + 'schema_type_for_tax_link_category' => 'item.list',
1415 + 'schema_type_for_tax_post_tag' => 'item.list',
1416 + 'schema_type_for_tax_product_brand' => 'item.list', // For WooCommerce Brands.
1417 + 'schema_type_for_tax_product_cat' => 'item.list', // For WooCommerce.
1418 + 'schema_type_for_tax_product_tag' => 'item.list', // For WooCommerce.
1419 + 'schema_type_for_tax_pwb-brand' => 'item.list', // For Perfect WooCommerce Brands Add-on.
1420 + 'schema_type_for_tax_tribe_events_cat' => 'item.list', // For The Events Calendar.
1421 + 'schema_type_for_tax_yith_product_brand' => 'item.list', // For YITH WooCommerce Brands Add-on.
1422 +
1423 + /*
1424 + * Advanced Settings > Schema Defaults > Article.
1425 + */
1426 + 'schema_def_add_articlebody_prop' => 0, // Add Article Body Property.
1427 + 'schema_def_article_section' => 'none', // Default Article Section.
1428 +
1429 + /*
1430 + * Advanced Settings > Schema Defaults > Book.
1431 + */
1432 + 'schema_def_book_format' => 'none', // Default Book Format.
1433 + 'schema_def_book_author_type' => 'person', // Default Book Author Type.
1434 +
1435 + /*
1436 + * Advanced Settings > Schema Defaults > Creative Work.
1437 + */
1438 + 'schema_def_add_date_created' => 0, // Add Date Created Property.
1439 + 'schema_def_add_date_published' => 1, // Add Date Published Property.
1440 + 'schema_def_add_date_modified' => 1, // Add Date Modified Property.
1441 + 'schema_def_add_text_prop' => 0, // Add Text Property.
1442 + 'schema_def_family_friendly' => 'none', // Default Family Friendly.
1443 + 'schema_def_pub_org_id' => 'site', // Default Publisher Organization.
1444 + 'schema_def_pub_person_id' => 'none', // Default Publisher Person.
1445 + 'schema_def_prov_org_id' => 'none', // Default Provider Organization.
1446 + 'schema_def_prov_person_id' => 'none', // Default Provider Person.
1447 + 'schema_def_fund_org_id' => 'none', // Default Funder Organization.
1448 + 'schema_def_fund_person_id' => 'none', // Default Funder Person.
1449 +
1450 + /*
1451 + * Advanced Settings > Schema Defaults > Event.
1452 + */
1453 + 'schema_def_event_attendance' => 'https://schema.org/OfflineEventAttendanceMode', // Default Event Attendance.
1454 + 'schema_def_event_location_id' => 'none', // Default Event Venue.
1455 + 'schema_def_event_performer_org_id' => 'none', // Default Event Performer Organization.
1456 + 'schema_def_event_performer_person_id' => 'none', // Default Event Performer Person.
1457 + 'schema_def_event_organizer_org_id' => 'none', // Default Event Organizer Organization.
1458 + 'schema_def_event_organizer_person_id' => 'none', // Default Event Organizer Person.
1459 + 'schema_def_event_fund_org_id' => 'none', // Default Event Funder Organization.
1460 + 'schema_def_event_fund_person_id' => 'none', // Default Event Funder Person.
1461 +
1462 + /*
1463 + * Advanced Settings > Schema Defaults > Job Posting.
1464 + */
1465 + 'schema_def_job_hiring_org_id' => 'none', // Default Hiring Organization.
1466 + 'schema_def_job_location_id' => 'none', // Default Job Location.
1467 + 'schema_def_job_location_type' => 'none', // Default Job Location Type.
1468 +
1469 + /*
1470 + * Advanced Settings > Schema Defaults > Place.
1471 + */
1472 + 'schema_def_place_schema_type' => 'local.business', // Default Place Schema Type.
1473 + 'schema_def_place_country' => 'none', // Default Place Country.
1474 + 'schema_def_place_timezone' => 'UTC', // Default Place Timezone.
1475 +
1476 + /*
1477 + * Advanced Settings > Schema Defaults > Product.
1478 + */
1479 + 'schema_def_product_aggr_offers' => 0, // Aggregate Offers by Currency.
1480 + 'schema_def_product_price_valid_days' => 30, // Default Product Prices Valid For.
1481 + 'schema_def_product_adult_type' => 'none', // Default Product Adult Type.
1482 + 'schema_def_product_age_group' => 'none', // Default Product Age Group.
1483 + 'schema_def_product_category' => 'none', // Default Product Google Category.
1484 + 'schema_def_product_condition' => 'https://schema.org/NewCondition', // Default Product Condition.
1485 + 'schema_def_product_energy_efficiency_min' => 'https://schema.org/EUEnergyEfficiencyCategoryD',
1486 + 'schema_def_product_energy_efficiency_max' => 'https://schema.org/EUEnergyEfficiencyCategoryA3Plus',
1487 + 'schema_def_product_mrp' => 'none', // Default Product Return Policy.
1488 + 'schema_def_product_size_group_0' => 'none',
1489 + 'schema_def_product_size_group_1' => 'none',
1490 + 'schema_def_product_size_system' => 'none',
1491 + 'schema_def_product_target_gender' => 'none', // Default Product Target Gender.
1492 +
1493 + /*
1494 + * Advanced Settings > Schema Defaults > Profile Page.
1495 + */
1496 + 'schema_def_profile_page_mentions_prop' => 0, // Add Mentions Property.
1497 +
1498 + /*
1499 + * Advanced Settings > Schema Defaults > Review.
1500 + */
1501 + 'schema_def_review_rating_min' => 0.5, // Default Review Rating Min.
1502 + 'schema_def_review_rating_max' => 5.0, // Default Review Rating Max.
1503 + 'schema_def_review_item_type' => 'product', // Default Subject Schema Type.
1504 +
1505 + /*
1506 + * Advanced Settings > Schema Defaults > Service.
1507 + */
1508 + 'schema_def_service_prov_org_id' => 'none', // Default Service Provider Organization.
1509 + 'schema_def_service_prov_person_id' => 'none', // Default Service Provider Person.
1510 +
1511 + /*
1512 + * X (Twitter) Card options.
1513 + */
1514 + 'tc_site' => '', // X (Twitter) Business @username (localized).
1515 + 'tc_type_singular' => 'summary_large_image', // X (Twitter) Card for Singular with Image.
1516 + 'tc_type_default' => 'summary', // X (Twitter) Card Type by Default.
1517 +
1518 + /*
1519 + * X (Twitter) Summary Card.
1520 + *
1521 + * See https://developer.twitter.com/en/docs/twitter-for-websites/cards/overview/summary.
1522 + */
1523 + 'tc_sum_img_width' => 1200,
1524 + 'tc_sum_img_height' => 1200,
1525 + 'tc_sum_img_crop' => 1,
1526 + 'tc_sum_img_crop_x' => 'center',
1527 + 'tc_sum_img_crop_y' => 'center',
1528 +
1529 + /*
1530 + * X (Twitter) Summary Card Large Image.
1531 + *
1532 + * See https://developer.twitter.com/en/docs/twitter-for-websites/cards/overview/summary-card-with-large-image.
1533 + */
1534 + 'tc_lrg_img_width' => 1200,
1535 + 'tc_lrg_img_height' => 628,
1536 + 'tc_lrg_img_crop' => 1,
1537 + 'tc_lrg_img_crop_x' => 'center',
1538 + 'tc_lrg_img_crop_y' => 'center',
1539 +
1540 + /*
1541 + * Schema thumbnail image size.
1542 + */
1543 + 'thumb_img_width' => 1200,
1544 + 'thumb_img_height' => 628,
1545 + 'thumb_img_crop' => 1,
1546 + 'thumb_img_crop_x' => 'center',
1547 + 'thumb_img_crop_y' => 'center',
1548 +
1549 + /*
1550 + * Other publisher page URLs.
1551 + */
1552 + 'instagram_publisher_url' => '', // Instagram Business Page URL (localized).
1553 + 'linkedin_publisher_url' => '', // LinkedIn Company Page URL (localized).
1554 + 'medium_publisher_url' => '', // Medium Business Page URL (localized).
1555 + 'myspace_publisher_url' => '', // Myspace Business Page URL (localized).
1556 + 'sc_publisher_url' => '', // Soundcloud Business Page URL (localized).
1557 + 'tiktok_publisher_url' => '', // TikTok Business Page URL (localized).
1558 + 'tumblr_publisher_url' => '', // Tumblr Business Page URL (localized).
1559 + 'wikipedia_publisher_url' => '', // Wikipedia Organization Page URL (localized).
1560 + 'yt_publisher_url' => '', // YouTube Business Channel URL (localized).
1561 +
1562 + /*
1563 + * Website verification IDs.
1564 + */
1565 + 'ahrefs_site_verify' => '', // Ahrefs Website Verification ID.
1566 + 'baidu_site_verify' => '', // Baidu Website Verification ID.
1567 + 'fb_site_verify' => '', // Facebook Domain Verification ID.
1568 + 'g_site_verify' => '', // Google Website Verification ID.
1569 + 'bing_site_verify' => '', // Microsoft Bing Website Verification ID.
1570 + 'pin_site_verify' => '', // Pinterest Website Verification ID.
1571 + 'yandex_site_verify' => '', // Yandex Website Verification ID.
1572 +
1573 + /*
1574 + * Enable / disable individual head HTML tags.
1575 + */
1576 + 'add_link_rel_author' => 0, // Deprecated - no longer used by Google.
1577 + 'add_link_rel_canonical' => 1,
1578 + 'add_link_rel_publisher' => 0, // Deprecated - no longer used by Google.
1579 + 'add_link_rel_shortlink' => 1,
1580 + 'add_meta_property_fb:admins' => 1,
1581 + 'add_meta_property_fb:app_id' => 1,
1582 + 'add_meta_property_al:android:app_name' => 1,
1583 + 'add_meta_property_al:android:package' => 1,
1584 + 'add_meta_property_al:android:url' => 1,
1585 + 'add_meta_property_al:ios:app_name' => 1,
1586 + 'add_meta_property_al:ios:app_store_id' => 1,
1587 + 'add_meta_property_al:ios:url' => 1,
1588 + 'add_meta_property_al:web:url' => 1,
1589 + 'add_meta_property_al:web:should_fallback' => 1,
1590 + 'add_meta_property_og:altitude' => 1,
1591 + 'add_meta_property_og:description' => 1,
1592 + 'add_meta_property_og:image:secure_url' => 0, // Use og:image instead.
1593 + 'add_meta_property_og:image:url' => 0, // Use og:image instead.
1594 + 'add_meta_property_og:image' => 1,
1595 + 'add_meta_property_og:image:width' => 1,
1596 + 'add_meta_property_og:image:height' => 1,
1597 + 'add_meta_property_og:image:alt' => 1,
1598 + 'add_meta_property_og:latitude' => 1,
1599 + 'add_meta_property_og:locale' => 1,
1600 + 'add_meta_property_og:longitude' => 1,
1601 + 'add_meta_property_og:site_name' => 1,
1602 + 'add_meta_property_og:title' => 1,
1603 + 'add_meta_property_og:type' => 1,
1604 + 'add_meta_property_og:updated_time' => 1,
1605 + 'add_meta_property_og:url' => 1,
1606 + 'add_meta_property_og:video:secure_url' => 0, // Use og:video instead.
1607 + 'add_meta_property_og:video:url' => 0, // Use og:video instead.
1608 + 'add_meta_property_og:video' => 1,
1609 + 'add_meta_property_og:video:type' => 1,
1610 + 'add_meta_property_og:video:width' => 1,
1611 + 'add_meta_property_og:video:height' => 1,
1612 + 'add_meta_property_og:video:tag' => 0, // Disabled by default.
1613 + 'add_meta_property_article:author' => 1,
1614 + 'add_meta_property_article:publisher' => 1,
1615 + 'add_meta_property_article:published_time' => 1,
1616 + 'add_meta_property_article:modified_time' => 1,
1617 + 'add_meta_property_article:expiration_time' => 1,
1618 + 'add_meta_property_article:section' => 1,
1619 + 'add_meta_property_article:tag' => 1,
1620 + 'add_meta_property_book:author' => 1,
1621 + 'add_meta_property_book:isbn' => 1,
1622 + 'add_meta_property_book:release_date' => 1,
1623 + 'add_meta_property_book:tag' => 1,
1624 + 'add_meta_property_music:album' => 1,
1625 + 'add_meta_property_music:album:disc' => 1,
1626 + 'add_meta_property_music:album:track' => 1,
1627 + 'add_meta_property_music:creator' => 1,
1628 + 'add_meta_property_music:duration' => 1,
1629 + 'add_meta_property_music:musician' => 1,
1630 + 'add_meta_property_music:release_date' => 1,
1631 + 'add_meta_property_music:song' => 1,
1632 + 'add_meta_property_music:song:disc' => 1,
1633 + 'add_meta_property_music:song:track' => 1,
1634 + 'add_meta_property_place:location:altitude' => 1,
1635 + 'add_meta_property_place:location:latitude' => 1,
1636 + 'add_meta_property_place:location:longitude' => 1,
1637 + 'add_meta_property_place:street_address' => 1,
1638 + 'add_meta_property_place:locality' => 1,
1639 + 'add_meta_property_place:region' => 1,
1640 + 'add_meta_property_place:postal_code' => 1,
1641 + 'add_meta_property_place:country_name' => 1,
1642 + 'add_meta_property_product:age_group' => 1,
1643 + 'add_meta_property_product:availability' => 1,
1644 + 'add_meta_property_product:brand' => 1,
1645 + 'add_meta_property_product:category' => 1, // Product Google Category.
1646 + 'add_meta_property_product:color' => 1,
1647 + 'add_meta_property_product:condition' => 1,
1648 + 'add_meta_property_product:ean' => 1,
1649 + 'add_meta_property_product:expiration_time' => 1,
1650 + 'add_meta_property_product:isbn' => 1,
1651 + 'add_meta_property_product:item_group_id' => 1,
1652 + 'add_meta_property_product:material' => 1,
1653 + 'add_meta_property_product:mfr_part_no' => 1,
1654 + 'add_meta_property_product:offers' => 1, // Internal meta tag.
1655 + 'add_meta_property_product:variants' => 1, // Internal meta tag.
1656 + 'add_meta_property_product:original_price:amount' => 1,
1657 + 'add_meta_property_product:original_price:currency' => 1,
1658 + 'add_meta_property_product:pattern' => 1,
1659 + 'add_meta_property_product:pretax_price:amount' => 1,
1660 + 'add_meta_property_product:pretax_price:currency' => 1,
1661 + 'add_meta_property_product:price:amount' => 1,
1662 + 'add_meta_property_product:price:currency' => 1,
1663 + 'add_meta_property_product:purchase_limit' => 1,
1664 + 'add_meta_property_product:retailer_item_id' => 1,
1665 + 'add_meta_property_product:retailer_part_no' => 1,
1666 + 'add_meta_property_product:sale_price:amount' => 1,
1667 + 'add_meta_property_product:sale_price:currency' => 1,
1668 + 'add_meta_property_product:sale_price_dates:start' => 1,
1669 + 'add_meta_property_product:sale_price_dates:end' => 1,
1670 + 'add_meta_property_product:shipping_cost:amount' => 1,
1671 + 'add_meta_property_product:shipping_cost:currency' => 1,
1672 + 'add_meta_property_product:shipping_weight:value' => 1,
1673 + 'add_meta_property_product:shipping_weight:units' => 1,
1674 + 'add_meta_property_product:size' => 1,
1675 + 'add_meta_property_product:target_gender' => 1,
1676 + 'add_meta_property_product:upc' => 1,
1677 + 'add_meta_property_product:weight:value' => 1,
1678 + 'add_meta_property_product:weight:units' => 1,
1679 + 'add_meta_name_ahrefs-site-verification' => 0, // Ahrefs Website Verification ID.
1680 + 'add_meta_name_author' => 1,
1681 + 'add_meta_name_baidu-site-verification' => 0, // Baidu Website Verification ID.
1682 + 'add_meta_name_description' => 1,
1683 + 'add_meta_name_facebook-domain-verification' => 0,
1684 + 'add_meta_name_generator' => 1,
1685 + 'add_meta_name_google-site-verification' => 0, // Google Website Verification ID.
1686 + 'add_meta_name_msvalidate.01' => 0, // Microsoft Bing Website Verification ID.
1687 + 'add_meta_name_p:domain_verify' => 0, // Pinterest Website Verification ID.
1688 + 'add_meta_name_robots' => 1,
1689 + 'add_meta_name_thumbnail' => 1,
1690 + 'add_meta_name_twitter:card' => 1,
1691 + 'add_meta_name_twitter:creator' => 1,
1692 + 'add_meta_name_twitter:domain' => 1,
1693 + 'add_meta_name_twitter:site' => 1,
1694 + 'add_meta_name_twitter:title' => 1,
1695 + 'add_meta_name_twitter:description' => 1,
1696 + 'add_meta_name_twitter:image' => 1,
1697 + 'add_meta_name_twitter:image:width' => 1,
1698 + 'add_meta_name_twitter:image:height' => 1,
1699 + 'add_meta_name_twitter:image:alt' => 1,
1700 + 'add_meta_name_twitter:player' => 1,
1701 + 'add_meta_name_twitter:player:stream' => 1,
1702 + 'add_meta_name_twitter:player:stream:content_type' => 1,
1703 + 'add_meta_name_twitter:player:width' => 1,
1704 + 'add_meta_name_twitter:player:height' => 1,
1705 + 'add_meta_name_twitter:app:name:iphone' => 1,
1706 + 'add_meta_name_twitter:app:id:iphone' => 1,
1707 + 'add_meta_name_twitter:app:url:iphone' => 1,
1708 + 'add_meta_name_twitter:app:name:ipad' => 1,
1709 + 'add_meta_name_twitter:app:id:ipad' => 1,
1710 + 'add_meta_name_twitter:app:url:ipad' => 1,
1711 + 'add_meta_name_twitter:app:name:googleplay' => 1,
1712 + 'add_meta_name_twitter:app:id:googleplay' => 1,
1713 + 'add_meta_name_twitter:app:url:googleplay' => 1,
1714 + 'add_meta_name_twitter:label1' => 1,
1715 + 'add_meta_name_twitter:data1' => 1,
1716 + 'add_meta_name_twitter:label2' => 1,
1717 + 'add_meta_name_twitter:data2' => 1,
1718 + 'add_meta_name_yandex-verification' => 0, // Yandex Website Verification ID.
1719 +
1720 + /*
1721 + * Advanced Settings > Plugin Admin.
1722 + */
1723 + 'plugin_clean_on_uninstall' => 0, // Remove Settings on Uninstall.
1724 + 'plugin_schema_json_min' => 0, // Minimize Schema JSON-LD.
1725 + 'plugin_load_mofiles' => 0, // Use Plugin MO Translations.
1726 + 'plugin_debug_html' => 0, // Add Debug Messages to HTML.
1727 + 'plugin_cache_disable' => 0, // Disable Cache for Debugging.
1728 +
1729 + /*
1730 + * Advanced Settings > Integration.
1731 + */
1732 + 'plugin_title_tag' => 'seo_title', // Webpage Title Tag.
1733 + 'plugin_filter_content' => 0, // Use Filtered Content.
1734 + 'plugin_filter_excerpt' => 0, // Use Filtered Excerpt.
1735 + 'plugin_page_excerpt' => 0, // Enable Excerpt for Pages.
1736 + 'plugin_page_tags' => 0, // Enable Tags for Pages.
1737 + 'plugin_new_user_is_person' => 0, // Add Person Role for New Users.
1738 + 'plugin_inherit_featured' => 1, // Inherit Featured Image.
1739 + 'plugin_inherit_images' => 1, // Inherit Custom Images.
1740 + 'plugin_attached_images' => 1, // Consider Attached Images.
1741 + 'plugin_content_images' => 0, // Consider Content Images.
1742 + 'plugin_check_img_dims' => 1, // Image Dimension Checks.
1743 + 'plugin_prevent_thumb_conflicts' => 0, // Prevent Thumbnail Conflicts.
1744 + 'plugin_upscale_images' => 1, // Upscale Media Library Images.
1745 + 'plugin_upscale_pct_max' => 20, // Maximum Image Upscale Percent.
1746 +
1747 + /*
1748 + * Advanced Settings > Integration > Plugin and Theme Integration.
1749 + */
1750 + 'plugin_speakable_css_csv' => '', // Speakable CSS Selectors.
1751 + 'plugin_check_head' => 1, // Check for Duplicate Meta Tags.
1752 + 'plugin_page_cache_active' => 0, // Cache Plugin or Service is Active.
1753 + 'plugin_product_include_vat' => 0, // Include VAT in Product Prices.
1754 + 'plugin_import_aioseop_meta' => 0, // Import All in One SEO Pack Metadata.
1755 + 'plugin_import_rankmath_meta' => 0, // Import Rank Math SEO Metadata.
1756 + 'plugin_import_seoframework_meta' => 0, // Import The SEO Framework Metadata.
1757 + 'plugin_import_wpmetaseo_meta' => 0, // Import WP Meta SEO Metadata.
1758 + 'plugin_import_wpseo_meta' => 0, // Import Yoast SEO Metadata.
1759 + 'plugin_import_wpseo_blocks' => 0, // Import Yoast SEO Block Attrs.
1760 +
1761 + /*
1762 + * Advanced Settings > Default Text.
1763 + *
1764 + * See WpssoOptions->get_defaults()
1765 + * See WpssoOptions->get_text()
1766 + *
1767 + * Advanced Settings > Interface.
1768 + */
1769 + 'plugin_show_opts' => 'basic', // Options to Show by Default.
1770 + 'plugin_og_types_select_format' => 'name', // Open Graph Type Select Format.
1771 + 'plugin_schema_types_select_format' => 'name', // Schema Type Select Format.
1772 + 'plugin_add_toolbar_validate' => 1, // Show Validators Toolbar Menu.
1773 + 'plugin_add_submenu_essential' => 1,
1774 + 'plugin_add_submenu_general' => 1,
1775 + 'plugin_add_submenu_advanced' => 1,
1776 + 'plugin_add_submenu_licenses' => 1,
1777 + 'plugin_add_submenu_addons' => 1,
1778 + 'plugin_add_submenu_tools' => 1,
1779 + 'plugin_add_submenu_setup' => 1,
1780 + 'plugin_add_submenu_debug' => 1,
1781 + 'plugin_add_to_attachment' => 1,
1782 + 'plugin_add_to_download' => 1, // For Easy Digital Downloads.
1783 + 'plugin_add_to_page' => 1,
1784 + 'plugin_add_to_post' => 1,
1785 + 'plugin_add_to_product' => 1, // For WooCommerce and other e-commerce plugins.
1786 + 'plugin_add_to_reply' => 0, // For Bbpress
1787 + 'plugin_add_to_tax_category' => 1,
1788 + 'plugin_add_to_tax_faq_category' => 1,
1789 + 'plugin_add_to_tax_link_category' => 1,
1790 + 'plugin_add_to_tax_post_tag' => 1,
1791 + 'plugin_add_to_tax_product_brand' => 1, // For WooCommerce Brands.
1792 + 'plugin_add_to_tax_product_cat' => 1, // For WooCommerce.
1793 + 'plugin_add_to_tax_product_tag' => 1, // For WooCommerce.
1794 + 'plugin_add_to_tax_pwb-brand' => 1, // For Perfect WooCommerce Brands Add-on.
1795 + 'plugin_add_to_tax_tribe_events_cat' => 0, // For The Events Calendar.
1796 + 'plugin_add_to_tax_yith_product_brand' => 1, // For YITH WooCommerce Brands Add-on.
1797 + 'plugin_add_to_topic' => 0, // For Bbpress
1798 + 'plugin_add_to_tribe_events' => 1, // For The Events Calendar.
1799 + 'plugin_add_to_tribe-ea-record' => 1, // For The Events Calendar.
1800 + 'plugin_add_to_user_page' => 1,
1801 +
1802 + /*
1803 + * Advanced Settings > Interface > WP List Table Columns: Open Graph Description.
1804 + */
1805 + 'plugin_og_desc_col_attachment' => 0,
1806 + 'plugin_og_desc_col_download' => 0, // For Easy Digital Downloads.
1807 + 'plugin_og_desc_col_page' => 0,
1808 + 'plugin_og_desc_col_post' => 0,
1809 + 'plugin_og_desc_col_product' => 0, // For WooCommerce.
1810 + 'plugin_og_desc_col_tax_category' => 0,
1811 + 'plugin_og_desc_col_tax_faq_category' => 0,
1812 + 'plugin_og_desc_col_tax_link_category' => 0,
1813 + 'plugin_og_desc_col_tax_post_tag' => 0,
1814 + 'plugin_og_desc_col_tax_product_cat' => 0, // For WooCommerce.
1815 + 'plugin_og_desc_col_tax_product_tag' => 0, // For WooCommerce.
1816 + 'plugin_og_desc_col_tax_tribe_events_cat' => 0, // For The Events Calendar.
1817 + 'plugin_og_desc_col_user_page' => 0,
1818 +
1819 + /*
1820 + * Advanced Settings > Interface > WP List Table Columns: Open Graph Image.
1821 + */
1822 + 'plugin_og_img_col_attachment' => 0,
1823 + 'plugin_og_img_col_download' => 0, // For Easy Digital Downloads.
1824 + 'plugin_og_img_col_page' => 0,
1825 + 'plugin_og_img_col_post' => 0,
1826 + 'plugin_og_img_col_product' => 0, // For WooCommerce.
1827 + 'plugin_og_img_col_tax_category' => 0,
1828 + 'plugin_og_img_col_tax_faq_category' => 0,
1829 + 'plugin_og_img_col_tax_link_category' => 0,
1830 + 'plugin_og_img_col_tax_post_tag' => 0,
1831 + 'plugin_og_img_col_tax_product_cat' => 0, // For WooCommerce.
1832 + 'plugin_og_img_col_tax_product_tag' => 0, // For WooCommerce.
1833 + 'plugin_og_img_col_tax_tribe_events_cat' => 0, // For The Events Calendar.
1834 + 'plugin_og_img_col_user_page' => 0,
1835 +
1836 + /*
1837 + * Advanced Settings > Interface > WP List Table Columns: Open Graph Locale.
1838 + */
1839 + 'plugin_schema_lang_col_attachment' => 0,
1840 + 'plugin_schema_lang_col_download' => 0, // For Easy Digital Downloads.
1841 + 'plugin_schema_lang_col_page' => 0,
1842 + 'plugin_schema_lang_col_post' => 0,
1843 + 'plugin_schema_lang_col_product' => 0, // For WooCommerce.
1844 + 'plugin_schema_lang_col_tax_category' => 0,
1845 + 'plugin_schema_lang_col_tax_faq_category' => 0,
1846 + 'plugin_schema_lang_col_tax_link_category' => 0,
1847 + 'plugin_schema_lang_col_tax_post_tag' => 0,
1848 + 'plugin_schema_lang_col_tax_product_cat' => 0, // For WooCommerce.
1849 + 'plugin_schema_lang_col_tax_product_tag' => 0, // For WooCommerce.
1850 + 'plugin_schema_lang_col_tax_tribe_events_cat' => 0, // For The Events Calendar.
1851 + 'plugin_schema_lang_col_user_page' => 0,
1852 +
1853 + /*
1854 + * Advanced Settings > Interface > WP List Table Columns: Schema Type.
1855 + */
1856 + 'plugin_schema_type_name_col_attachment' => 0,
1857 + 'plugin_schema_type_name_col_download' => 0, // For Easy Digital Downloads.
1858 + 'plugin_schema_type_name_col_page' => 0,
1859 + 'plugin_schema_type_name_col_post' => 0,
1860 + 'plugin_schema_type_name_col_product' => 0, // For WooCommerce.
1861 + 'plugin_schema_type_name_col_tax_category' => 0,
1862 + 'plugin_schema_type_name_col_tax_faq_category' => 0,
1863 + 'plugin_schema_type_name_col_tax_link_category' => 0,
1864 + 'plugin_schema_type_name_col_tax_post_tag' => 0,
1865 + 'plugin_schema_type_name_col_tax_product_cat' => 0, // For WooCommerce.
1866 + 'plugin_schema_type_name_col_tax_product_tag' => 0, // For WooCommerce.
1867 + 'plugin_schema_type_name_col_tax_tribe_events_cat' => 0, // For The Events Calendar.
1868 + 'plugin_schema_type_name_col_user_page' => 0,
1869 +
1870 + /*
1871 + * Advanced Settings > Service APIs > Media Services.
1872 + */
1873 + 'plugin_gravatar_image' => 1, // Gravatar is Default Author Image.
1874 + 'plugin_gravatar_size' => 1200, // Gravatar Image Size.
1875 + 'plugin_media_facebook' => 1, // Detect Embedded Media: Facebook Videos.
1876 + 'plugin_media_slideshare' => 1, // Detect Embedded Media: Slideshare Presentations.
1877 + 'plugin_media_soundcloud' => 1, // Detect Embedded Media: Soundcloud Tracks.
1878 + 'plugin_media_vimeo' => 1, // Detect Embedded Media: Vimeo Videos.
1879 + 'plugin_media_wistia' => 1, // Detect Embedded Media: Wistia Videos.
1880 + 'plugin_media_wpvideoblock' => 1, // Detect Embedded Media: WP Media Library Video Blocks.
1881 + 'plugin_media_wpvideoshortcode' => 1, // Detect Embedded Media: WP Media Library Video Shortcodes.
1882 + 'plugin_media_youtube' => 1, // Detect Embedded Media: Youtube Videos and Playlists.
1883 +
1884 + /*
1885 + * Advanced Settings > Service APIs > Shortening Services.
1886 + */
1887 + 'plugin_shortener' => 'none', // URL Shortening Service.
1888 + 'plugin_min_shorten' => 23, // Minimum URL Length to Shorten.
1889 + 'plugin_wp_shortlink' => 1, // Use Short URL for WP Shortlink.
1890 + 'plugin_bitly_access_token' => '', // Bitly Access Token.
1891 + 'plugin_bitly_domain' => '', // Bitly Short Domain (Optional).
1892 + 'plugin_bitly_group_name' => '', // Bitly Group Name (Optional).
1893 + 'plugin_dlmyapp_api_key' => '', // DLMY.App API Key.
1894 + 'plugin_owly_api_key' => '', // Ow.ly API Key.
1895 + 'plugin_yourls_api_url' => '', // YOURLS API URL.
1896 + 'plugin_yourls_username' => '', // YOURLS Username.
1897 + 'plugin_yourls_password' => '', // YOURLS Password.
1898 + 'plugin_yourls_token' => '', // YOURLS Token.
1899 +
1900 + /*
1901 + * Advanced Settings > Service APIs > Ratings and Reviews.
1902 + */
1903 + 'plugin_ratings_reviews_svc' => 'none', // Ratings and Reviews Service.
1904 + 'plugin_ratings_reviews_num_max' => 100, // Maximum Number of Reviews.
1905 + 'plugin_ratings_reviews_months_max' => 60, // Maximum Age of Reviews.
1906 + 'plugin_ratings_reviews_for_download' => 1, // For Easy Digital Downloads.
1907 + 'plugin_ratings_reviews_for_product' => 1, // For WooCommerce.
1908 + 'plugin_judgeme_shop_domain' => '', // Judge.me Shop Domain.
1909 + 'plugin_judgeme_shop_token' => '', // Judge.me Shop Token.
1910 + 'plugin_shopperapproved_site_id' => '', // Shopper Approved Site ID.
1911 + 'plugin_shopperapproved_token' => '', // Shopper Approved API Token.
1912 + 'plugin_stamped_store_hash' => '', // Stamped Store Hash.
1913 + 'plugin_stamped_key_public' => '', // Stamped API Key Public.
1914 +
1915 + /*
1916 + * Advanced Settings > Contact Fields > Custom Contacts.
1917 + */
1918 + 'plugin_cm_behance_name' => 'behance',
1919 + 'plugin_cm_behance_label' => 'Behance Profile URL',
1920 + 'plugin_cm_behance_enabled' => 1,
1921 + 'plugin_cm_fb_name' => 'facebook',
1922 + 'plugin_cm_fb_label' => 'Facebook User URL',
1923 + 'plugin_cm_fb_enabled' => 1,
1924 + 'plugin_cm_instagram_name' => 'instagram',
1925 + 'plugin_cm_instagram_label' => 'Instagram URL',
1926 + 'plugin_cm_instagram_enabled' => 1,
1927 + 'plugin_cm_linkedin_name' => 'linkedin',
1928 + 'plugin_cm_linkedin_label' => 'LinkedIn URL',
1929 + 'plugin_cm_linkedin_enabled' => 1,
1930 + 'plugin_cm_medium_name' => 'medium',
1931 + 'plugin_cm_medium_label' => 'Medium URL',
1932 + 'plugin_cm_medium_enabled' => 1,
1933 + 'plugin_cm_myspace_name' => 'myspace',
1934 + 'plugin_cm_myspace_label' => 'Myspace URL',
1935 + 'plugin_cm_myspace_enabled' => 1,
1936 + 'plugin_cm_pin_name' => 'pinterest',
1937 + 'plugin_cm_pin_label' => 'Pinterest URL',
1938 + 'plugin_cm_pin_enabled' => 1,
1939 + 'plugin_cm_sc_name' => 'soundcloud',
1940 + 'plugin_cm_sc_label' => 'Soundcloud URL',
1941 + 'plugin_cm_sc_enabled' => 1,
1942 + 'plugin_cm_skype_name' => 'skype',
1943 + 'plugin_cm_skype_label' => 'Skype Username',
1944 + 'plugin_cm_skype_enabled' => 1,
1945 + 'plugin_cm_tiktok_name' => 'tiktok',
1946 + 'plugin_cm_tiktok_label' => 'TikTok URL',
1947 + 'plugin_cm_tiktok_enabled' => 1,
1948 + 'plugin_cm_tumblr_name' => 'tumblr',
1949 + 'plugin_cm_tumblr_label' => 'Tumblr URL',
1950 + 'plugin_cm_tumblr_enabled' => 1,
1951 + 'plugin_cm_wikipedia_name' => 'wikipedia',
1952 + 'plugin_cm_wikipedia_label' => 'Wikipedia Page URL',
1953 + 'plugin_cm_wikipedia_enabled' => 1,
1954 + 'plugin_cm_twitter_name' => 'twitter',
1955 + 'plugin_cm_twitter_label' => 'X (Twitter) @username',
1956 + 'plugin_cm_twitter_enabled' => 1,
1957 + 'plugin_cm_yt_name' => 'youtube',
1958 + 'plugin_cm_yt_label' => 'YouTube Channel URL',
1959 + 'plugin_cm_yt_enabled' => 1,
1960 +
1961 + /*
1962 + * Advanced Settings > Contact Fields > Default Contacts.
1963 + */
1964 + 'wp_cm_aim_name' => 'aim',
1965 + 'wp_cm_aim_label' => 'AIM',
1966 + 'wp_cm_aim_enabled' => 1,
1967 + 'wp_cm_jabber_name' => 'jabber',
1968 + 'wp_cm_jabber_label' => 'Google Talk',
1969 + 'wp_cm_jabber_enabled' => 1,
1970 + 'wp_cm_yim_name' => 'yim',
1971 + 'wp_cm_yim_label' => 'Yahoo Messenger',
1972 + 'wp_cm_yim_enabled' => 1,
1973 +
1974 + /*
1975 + * Advanced Settings > About the User.
1976 + */
1977 + 'plugin_user_about_job_title' => 1, // Job Title.
1978 + 'plugin_user_about_honorific_prefix' => 1, // Honorific Prefix.
1979 + 'plugin_user_about_honorific_suffix' => 1, // Honorific Suffix.
1980 + 'plugin_user_about_additional_name' => 1, // Middle or Additional Name.
1981 + 'plugin_user_about_award' => 1, // Awards.
1982 +
1983 + /*
1984 + * Advanced Settings > Attributes and Metadata > Product Attributes.
1985 + */
1986 + 'plugin_attr_book_author_name' => '', // Book Author Name.
1987 + 'plugin_attr_book_isbn' => '', // Book ISBN Attribute.
1988 + 'plugin_attr_product_adult_type' => 'Adult Type', // Adult Type Attribute.
1989 + 'plugin_attr_product_adult_type#fr_BE' => 'Type adulte',
1990 + 'plugin_attr_product_adult_type#fr_CA' => 'Type adulte',
1991 + 'plugin_attr_product_adult_type#fr_FR' => 'Type adulte',
1992 + 'plugin_attr_product_age_group' => 'Age Group', // Age Group Attribute.
1993 + 'plugin_attr_product_age_group#fr_BE' => 'Groupe d\'âge',
1994 + 'plugin_attr_product_age_group#fr_CA' => 'Groupe d\'âge',
1995 + 'plugin_attr_product_age_group#fr_FR' => 'Groupe d\'âge',
1996 + 'plugin_attr_product_brand' => 'Brand', // Brand Attribute.
1997 + 'plugin_attr_product_brand#fr_BE' => 'Marque',
1998 + 'plugin_attr_product_brand#fr_CA' => 'Marque',
1999 + 'plugin_attr_product_brand#fr_FR' => 'Marque',
2000 + 'plugin_attr_product_color' => 'Color', // Color Attribute.
2001 + 'plugin_attr_product_color#fr_BE' => 'Couleur',
2002 + 'plugin_attr_product_color#fr_CA' => 'Couleur',
2003 + 'plugin_attr_product_color#fr_FR' => 'Couleur',
2004 + 'plugin_attr_product_condition' => 'Condition', // Condition Attribute.
2005 + 'plugin_attr_product_condition#fr_BE' => 'État',
2006 + 'plugin_attr_product_condition#fr_CA' => 'État',
2007 + 'plugin_attr_product_condition#fr_FR' => 'État',
2008 + 'plugin_attr_product_energy_efficiency' => 'Energy Rating', // Energy Rating Attribute.
2009 + 'plugin_attr_product_energy_efficiency#fr_BE' => 'Classe énergétique',
2010 + 'plugin_attr_product_energy_efficiency#fr_CA' => 'Classe énergétique',
2011 + 'plugin_attr_product_energy_efficiency#fr_FR' => 'Classe énergétique',
2012 + 'plugin_attr_product_fluid_volume_value' => '', // Fluid Volume Attribute.
2013 + 'plugin_attr_product_gtin14' => '', // GTIN-14 Attribute.
2014 + 'plugin_attr_product_gtin13' => '', // GTIN-13 (EAN) Attribute.
2015 + 'plugin_attr_product_gtin12' => '', // GTIN-12 (UPC) Attribute.
2016 + 'plugin_attr_product_gtin8' => '', // GTIN-8 Attribute.
2017 + 'plugin_attr_product_gtin' => '', // GTIN Attribute.
2018 + 'plugin_attr_product_height_value' => '', // Net Height Attribute.
2019 + 'plugin_attr_product_isbn' => '', // ISBN Attribute.
2020 + 'plugin_attr_product_length_value' => '', // Net Len. / Depth Attribute.
2021 + 'plugin_attr_product_material' => 'Material', // Material Attribute.
2022 + 'plugin_attr_product_material#fr_BE' => 'Matériel',
2023 + 'plugin_attr_product_material#fr_CA' => 'Matériel',
2024 + 'plugin_attr_product_material#fr_FR' => 'Matériel',
2025 + 'plugin_attr_product_mfr_part_no' => '', // MPN Attribute.
2026 + 'plugin_attr_product_pattern' => 'Pattern', // Pattern Attribute.
2027 + 'plugin_attr_product_pattern#fr_BE' => 'Motif',
2028 + 'plugin_attr_product_pattern#fr_CA' => 'Motif',
2029 + 'plugin_attr_product_pattern#fr_FR' => 'Motif',
2030 + 'plugin_attr_product_size' => 'Size', // Size Attribute.
2031 + 'plugin_attr_product_size#fr_BE' => 'Taille',
2032 + 'plugin_attr_product_size#fr_CA' => 'Taille',
2033 + 'plugin_attr_product_size#fr_FR' => 'Taille',
2034 + 'plugin_attr_product_size_group' => 'Size Group', // Size Group Attribute.
2035 + 'plugin_attr_product_size_group#fr_BE' => 'Groupe de taille',
2036 + 'plugin_attr_product_size_group#fr_CA' => 'Groupe de taille',
2037 + 'plugin_attr_product_size_group#fr_FR' => 'Groupe de taille',
2038 + 'plugin_attr_product_size_system' => 'Size System', // Size System Attribute.
2039 + 'plugin_attr_product_size_system#fr_BE' => 'Système de taille',
2040 + 'plugin_attr_product_size_system#fr_CA' => 'Système de taille',
2041 + 'plugin_attr_product_size_system#fr_FR' => 'Système de taille',
2042 + 'plugin_attr_product_target_gender' => 'Gender', // Target Gender Attribute.
2043 + 'plugin_attr_product_target_gender#fr_BE' => 'Sexe',
2044 + 'plugin_attr_product_target_gender#fr_CA' => 'Sexe',
2045 + 'plugin_attr_product_target_gender#fr_FR' => 'Sexe',
2046 + 'plugin_attr_product_weight_value' => '', // Net Weight Attribute.
2047 + 'plugin_attr_product_width_value' => '', // Net Width Attribute.
2048 +
2049 + /*
2050 + * Advanced Settings > Attributes and Metadata > Custom Fields.
2051 + */
2052 + 'plugin_cf_addl_type_urls' => '', // Microdata Type URLs Custom Field.
2053 + 'plugin_cf_book_author_name' => '', // Book Author Name Custom Field.
2054 + 'plugin_cf_book_isbn' => '', // Book ISBN Custom Field.
2055 + 'plugin_cf_img_url' => '', // Image URL Custom Field.
2056 + 'plugin_cf_product_adult_type' => '', // Product Adult Type Custom Field.
2057 + 'plugin_cf_product_age_group' => '', // Product Age Group Custom Field.
2058 + 'plugin_cf_product_avail' => '', // Product Availability Custom Field.
2059 + 'plugin_cf_product_brand' => '', // Product Brand Custom Field.
2060 + 'plugin_cf_product_category' => '', // Product Google Cat. ID Custom Field.
2061 + 'plugin_cf_product_color' => '', // Product Color Custom Field.
2062 + 'plugin_cf_product_condition' => '', // Product Condition Custom Field.
2063 + 'plugin_cf_product_currency' => '', // Product Currency Custom Field.
2064 + 'plugin_cf_product_energy_efficiency' => '', // Product Energy Rating Custom Field.
2065 + 'plugin_cf_product_fluid_volume_value' => '', // Product Fluid Volume Custom Field.
2066 + 'plugin_cf_product_gtin14' => '', // Product GTIN-14 Custom Field.
2067 + 'plugin_cf_product_gtin13' => '', // Product GTIN-13 (EAN) Custom Field.
2068 + 'plugin_cf_product_gtin12' => '', // Product GTIN-12 (UPC) Custom Field.
2069 + 'plugin_cf_product_gtin8' => '', // Product GTIN-8 Custom Field.
2070 + 'plugin_cf_product_gtin' => '_global_unique_id', // Product GTIN Custom Field.
2071 + 'plugin_cf_product_isbn' => '', // Product ISBN Custom Field.
2072 + 'plugin_cf_product_height_value' => '', // Product Net Height Custom Field.
2073 + 'plugin_cf_product_length_value' => '', // Product Net Len. / Depth Custom Field.
2074 + 'plugin_cf_product_material' => '', // Product Material Custom Field.
2075 + 'plugin_cf_product_mfr_part_no' => '', // Product MPN Custom Field.
2076 + 'plugin_cf_product_min_advert_price' => '', // Product Min Advert Price Custom Field.
2077 + 'plugin_cf_product_pattern' => '', // Product Pattern Custom Field.
2078 + 'plugin_cf_product_price' => '', // Product Price Custom Field.
2079 + 'plugin_cf_product_price_type' => '', // Product Price Type Custom Field.
2080 + 'plugin_cf_product_retailer_part_no' => '', // Product SKU Custom Field.
2081 + 'plugin_cf_product_shipping_height_value' => '', // Product Shipping Height Custom Field.
2082 + 'plugin_cf_product_shipping_length_value' => '', // Product Shipping Length Custom Field.
2083 + 'plugin_cf_product_shipping_weight_value' => '', // Product Shipping Weight Custom Field.
2084 + 'plugin_cf_product_shipping_width_value' => '', // Product Shipping Width Custom Field.
2085 + 'plugin_cf_product_size' => '', // Product Size Custom Field.
2086 + 'plugin_cf_product_size_group' => '', // Product Size Group Custom Field.
2087 + 'plugin_cf_product_size_system' => '', // Product Size System Custom Field.
2088 + 'plugin_cf_product_target_gender' => '', // Product Target Gender Custom Field.
2089 + 'plugin_cf_product_weight_value' => '', // Product Net Weight Custom Field.
2090 + 'plugin_cf_product_width_value' => '', // Product Net Width Custom Field.
2091 + 'plugin_cf_review_item_name' => '', // Review Subject Name Custom Field.
2092 + 'plugin_cf_review_item_desc' => '', // Review Subject Desc Custom Field.
2093 + 'plugin_cf_review_rating' => '', // Review Rating Custom Field.
2094 + 'plugin_cf_review_rating_alt_name' => '', // Review Rating Alt Name Custom Field.
2095 + 'plugin_cf_sameas_urls' => '', // Same-As URLs Custom Field.
2096 + 'plugin_cf_vid_embed' => '', // Video Embed HTML Custom Field.
2097 + 'plugin_cf_vid_url' => '', // Video URL Custom Field.
2098 +
2099 + /*
2100 + * Premium Licenses.
2101 + */
2102 + 'plugin_wpsso_tid' => '',
2103 +
2104 + ), // End of 'defaults' array.
2105 +
2106 + /*
2107 + * Multisite options.
2108 + *
2109 + * Automatically includes all advanced plugin options.
2110 + *
2111 + * See the WpssoOptions->get_site_defaults() method.
2112 + */
2113 + 'site_defaults' => array(
2114 + 'checksum' => '', // Checksum of plugin versions.
2115 + 'opt_checksum' => '', // Checksum of option versions.
2116 + 'opt_versions' => array(),
2117 + ),
2118 +
2119 + /*
2120 + * Contact method and social options prefix.
2121 + *
2122 + * The options prefix is used for contact method options (for example, 'plugin_cm_fb_enabled') and
2123 + * social sharing buttons options (for example, 'fb_utm_source').
2124 + */
2125 + 'cm_prefix' => array(
2126 + 'behance' => 'behance',
2127 + 'email' => 'email',
2128 + 'facebook' => 'fb',
2129 + 'twitter' => 'twitter',
2130 + 'instagram' => 'instagram',
2131 + 'linkedin' => 'linkedin',
2132 + 'medium' => 'medium',
2133 + 'myspace' => 'myspace',
2134 + 'pinterest' => 'pin',
2135 + 'pocket' => 'pocket',
2136 + 'buffer' => 'buffer',
2137 + 'reddit' => 'reddit',
2138 + 'managewp' => 'managewp',
2139 + 'soundcloud' => 'sc',
2140 + 'tiktok' => 'tiktok',
2141 + 'tumblr' => 'tumblr',
2142 + 'skype' => 'skype',
2143 + 'vk' => 'vk',
2144 + 'whatsapp' => 'wa',
2145 + 'wikipedia' => 'wikipedia',
2146 + 'youtube' => 'yt',
2147 + ),
2148 +
2149 + /*
2150 + * WpssoConfig::$cf[ 'opt' ][ 'attr_md_index' ]
2151 + *
2152 + * Provides a key index for product attributes to meta data options.
2153 + */
2154 + 'attr_md_index' => array(
2155 + 'plugin_attr_book_author_name' => 'schema_book_author_name', // Book Author Name (note schema prefix).
2156 + 'plugin_attr_book_isbn' => 'schema_book_isbn', // Book ISBN (note schema prefix).
2157 + 'plugin_attr_product_adult_type' => 'product_adult_type',
2158 + 'plugin_attr_product_age_group' => 'product_age_group',
2159 + 'plugin_attr_product_brand' => 'product_brand',
2160 + 'plugin_attr_product_color' => 'product_color',
2161 + 'plugin_attr_product_condition' => 'product_condition',
2162 + 'plugin_attr_product_energy_efficiency' => 'product_energy_efficiency',
2163 + 'plugin_attr_product_fluid_volume_value' => 'product_fluid_volume_value',
2164 + 'plugin_attr_product_gtin14' => 'product_gtin14',
2165 + 'plugin_attr_product_gtin13' => 'product_gtin13',
2166 + 'plugin_attr_product_gtin12' => 'product_gtin12',
2167 + 'plugin_attr_product_gtin8' => 'product_gtin8',
2168 + 'plugin_attr_product_gtin' => 'product_gtin',
2169 + 'plugin_attr_product_height_value' => 'product_height_value',
2170 + 'plugin_attr_product_isbn' => 'product_isbn',
2171 + 'plugin_attr_product_length_value' => 'product_length_value',
2172 + 'plugin_attr_product_material' => 'product_material',
2173 + 'plugin_attr_product_mfr_part_no' => 'product_mfr_part_no',
2174 + 'plugin_attr_product_pattern' => 'product_pattern',
2175 + 'plugin_attr_product_size' => 'product_size',
2176 + 'plugin_attr_product_size_group' => 'product_size_group',
2177 + 'plugin_attr_product_size_system' => 'product_size_system',
2178 + 'plugin_attr_product_target_gender' => 'product_target_gender',
2179 + 'plugin_attr_product_weight_value' => 'product_weight_value',
2180 + 'plugin_attr_product_width_value' => 'product_width_value',
2181 + ),
2182 +
2183 + /*
2184 + * WpssoConfig::$cf[ 'opt' ][ 'cf_md_index' ]
2185 + *
2186 + * Provides a key index for custom fields to meta data options.
2187 + */
2188 + 'cf_md_index' => array(
2189 + 'plugin_cf_addl_type_urls' => 'schema_addl_type_url', // Microdata Type URLs Custom Field.
2190 + 'plugin_cf_book_author_name' => 'schema_book_author_name', // Book Author Name (note schema prefix).
2191 + 'plugin_cf_book_isbn' => 'schema_book_isbn', // Book ISBN (note schema prefix).
2192 + 'plugin_cf_img_url' => 'og_img_url',
2193 + 'plugin_cf_product_adult_type' => 'product_adult_type',
2194 + 'plugin_cf_product_age_group' => 'product_age_group',
2195 + 'plugin_cf_product_avail' => 'product_avail',
2196 + 'plugin_cf_product_brand' => 'product_brand', // Product Brand Custom Field.
2197 + 'plugin_cf_product_category' => 'product_category', // Product Google Category Custom Field.
2198 + 'plugin_cf_product_color' => 'product_color',
2199 + 'plugin_cf_product_condition' => 'product_condition', // Product Condition Custom Field.
2200 + 'plugin_cf_product_currency' => 'product_currency',
2201 + 'plugin_cf_product_energy_efficiency' => 'product_energy_efficiency', // Product Energy Rating Custom Field.
2202 + 'plugin_cf_product_fluid_volume_value' => 'product_fluid_volume_value', // Product Fluid Volume Custom Field.
2203 + 'plugin_cf_product_gtin14' => 'product_gtin14',
2204 + 'plugin_cf_product_gtin13' => 'product_gtin13',
2205 + 'plugin_cf_product_gtin12' => 'product_gtin12',
2206 + 'plugin_cf_product_gtin8' => 'product_gtin8',
2207 + 'plugin_cf_product_gtin' => 'product_gtin',
2208 + 'plugin_cf_product_height_value' => 'product_height_value', // Product Net Height Custom Field.
2209 + 'plugin_cf_product_isbn' => 'product_isbn',
2210 + 'plugin_cf_product_length_value' => 'product_length_value', // Product Net Len. / Depth Custom Field.
2211 + 'plugin_cf_product_material' => 'product_material',
2212 + 'plugin_cf_product_mfr_part_no' => 'product_mfr_part_no',
2213 + 'plugin_cf_product_min_advert_price' => 'product_min_advert_price',
2214 + 'plugin_cf_product_pattern' => 'product_pattern',
2215 + 'plugin_cf_product_price' => 'product_price',
2216 + 'plugin_cf_product_price_type' => 'product_price_type',
2217 + 'plugin_cf_product_retailer_part_no' => 'product_retailer_part_no',
2218 + 'plugin_cf_product_shipping_height_value' => 'product_shipping_height_value', // Product Shipping Height Custom Field.
2219 + 'plugin_cf_product_shipping_length_value' => 'product_shipping_length_value', // Product Shipping Length Custom Field.
2220 + 'plugin_cf_product_shipping_weight_value' => 'product_shipping_weight_value', // Product Shipping Weight Custom Field.
2221 + 'plugin_cf_product_shipping_width_value' => 'product_shipping_width_value', // Product Shipping Width Custom Field.
2222 + 'plugin_cf_product_size' => 'product_size',
2223 + 'plugin_cf_product_size_group' => 'product_size_group',
2224 + 'plugin_cf_product_size_system' => 'product_size_system',
2225 + 'plugin_cf_product_target_gender' => 'product_target_gender',
2226 + 'plugin_cf_product_weight_value' => 'product_weight_value', // Product Net Weight Custom Field.
2227 + 'plugin_cf_product_width_value' => 'product_width_value', // Product Net Width Custom Field.
2228 + 'plugin_cf_review_item_name' => 'schema_review_item_name', // Review Subject Name Custom Field.
2229 + 'plugin_cf_review_item_desc' => 'schema_review_item_desc', // Review Subject Desc Custom Field.
2230 + 'plugin_cf_review_rating' => 'schema_review_rating', // Review Rating Custom Field.
2231 + 'plugin_cf_review_rating_alt_name' => 'schema_review_rating_alt_name', // Review Rating Alt Name Custom Field.
2232 + 'plugin_cf_sameas_urls' => 'schema_sameas_url',
2233 + 'plugin_cf_vid_embed' => 'og_vid_embed',
2234 + 'plugin_cf_vid_url' => 'og_vid_url',
2235 + ),
2236 +
2237 + /*
2238 + * WpssoConfig::$cf[ 'opt' ][ 'md_keys_multi' ]
2239 + *
2240 + * Provides information to re-number multiple input/textarea fields and read/split custom field
2241 + * values into numbered options.
2242 + */
2243 + 'md_keys_multi' => array(
2244 + 'contact_sameas_url' => true,
2245 + 'contact_service_area_id' => true,
2246 + 'org_award' => true, // Organization Awards.
2247 + 'org_contact_id' => true, // Organization Contact Points.
2248 + 'org_offer_catalog' => array( // Offer Catalog Name.
2249 + 'org_offer_catalog_text', // Offer Catalog Description.
2250 + 'org_offer_catalog_url', // Offer Catalog URL.
2251 + ),
2252 + 'org_service_area_id' => true,
2253 + 'place_sameas_url' => true,
2254 + 'product_award' => true, // Product Awards.
2255 + 'product_size_group' => true, // Product Size Group.
2256 + 'schema_addl_type_url' => true, // Microdata Type URLs.
2257 + 'schema_award' => true, // Creative Work Awards.
2258 + 'schema_book_offer' => array(
2259 + 'schema_book_offer_name',
2260 + 'schema_book_offer_price',
2261 + 'schema_book_offer_currency',
2262 + 'schema_book_offer_avail',
2263 + ),
2264 + 'schema_citation' => true, // Reference Citations.
2265 + 'schema_event_offer' => array(
2266 + 'schema_event_offer_name',
2267 + 'schema_event_offer_price',
2268 + 'schema_event_offer_currency',
2269 + 'schema_event_offer_avail',
2270 + ),
2271 + 'schema_howto_step' => array( // How-To Name.
2272 + 'schema_howto_step_section', // How-To Step or Section.
2273 + 'schema_howto_step_text', // How-To Step Description.
2274 + 'schema_howto_step_anchor_id', // How-To Step Anchor ID.
2275 + 'schema_howto_step_img_id', // How-To Step Image ID.
2276 + 'schema_howto_step_img_id_lib',
2277 + ),
2278 + 'schema_howto_supply' => true, // How-To Supplies.
2279 + 'schema_howto_tool' => true, // How-To Tools.
2280 + 'schema_ispartof_url' => true, // Is Part of URLs.
2281 + 'schema_movie_actor_person_name' => true,
2282 + 'schema_movie_director_person_name' => true,
2283 + 'schema_recipe_ingredient' => true, // Recipe Ingredients.
2284 + 'schema_recipe_instruction' => array( // Recipe Instructions.
2285 + 'schema_recipe_instruction_section', // Recipe Instruction or Section.
2286 + 'schema_recipe_instruction_text', // Recipe Instruction Description.
2287 + 'schema_recipe_instruction_anchor_id', // Recipe Instruction Anchor ID.
2288 + 'schema_recipe_instruction_img_id', // Recipe Instruction Image ID.
2289 + 'schema_recipe_instruction_img_id_lib',
2290 + ),
2291 + 'schema_review_item_cw_movie_actor_person_name' => true,
2292 + 'schema_review_item_cw_movie_director_person_name' => true,
2293 + 'schema_review_item_product_offer' => array(
2294 + 'schema_review_item_product_offer_name',
2295 + 'schema_review_item_product_offer_price',
2296 + 'schema_review_item_product_offer_currency',
2297 + 'schema_review_item_product_offer_avail',
2298 + ),
2299 + 'schema_review_item_software_app_offer' => array(
2300 + 'schema_review_item_software_app_offer_name',
2301 + 'schema_review_item_software_app_offer_price',
2302 + 'schema_review_item_software_app_offer_currency',
2303 + 'schema_review_item_software_app_offer_avail',
2304 + ),
2305 + 'schema_sameas_url' => true, // Same-As URLs.
2306 + 'schema_service_award' => true, // Service Awards.
2307 + 'schema_service_offer' => array(
2308 + 'schema_service_offer_name',
2309 + 'schema_service_offer_price',
2310 + 'schema_service_offer_currency',
2311 + 'schema_service_offer_avail',
2312 + ),
2313 + 'schema_service_offer_catalog' => array( // Offer Catalog Name.
2314 + 'schema_service_offer_catalog_text', // Offer Catalog Description.
2315 + 'schema_service_offer_catalog_url', // Offer Catalog URL.
2316 + ),
2317 + 'schema_service_area_id' => true,
2318 + 'schema_webpage_reviewed_by_org_id' => true,
2319 + 'schema_webpage_reviewed_by_person_id' => true,
2320 + ),
2321 +
2322 + /*
2323 + * Fallback order for custom Document SSO metadata keys.
2324 + */
2325 + 'md_keys_fallback' => array(
2326 +
2327 + /*
2328 + * SEO and Schema metadata keys.
2329 + */
2330 + 'seo_title' => array( 'seo_title' ),
2331 + 'seo_desc' => array( 'seo_desc' ),
2332 + 'schema_title' => array( 'schema_title', 'seo_title' ),
2333 + 'schema_title_alt' => array( 'schema_title_alt', 'schema_title', 'seo_title' ),
2334 + 'schema_title_bc' => array( 'schema_title_bc', 'schema_title_alt', 'schema_title', 'seo_title' ),
2335 + 'schema_headline' => array( 'schema_headline', 'schema_title', 'seo_title' ),
2336 + 'schema_job_title' => array( 'schema_job_title', 'schema_title', 'seo_title' ),
2337 + 'schema_desc' => array( 'schema_desc', 'seo_desc' ),
2338 + 'schema_text' => array( 'schema_text' ),
2339 +
2340 + /*
2341 + * Open Graph and Social metadata keys.
2342 + */
2343 + 'og_title' => array( 'og_title', 'seo_title' ),
2344 + 'og_desc' => array( 'og_desc', 'seo_desc' ),
2345 + 'og_caption' => array( 'og_caption' ),
2346 + 'tc_title' => array( 'tc_title', 'og_title', 'seo_title' ),
2347 + 'tc_desc' => array( 'tc_desc', 'og_desc', 'seo_desc' ),
2348 + 'pin_img_desc' => array( 'pin_img_desc', 'og_desc', 'seo_desc' ),
2349 + ),
2350 +
2351 + /*
2352 + * Additional fields for the user profile About Yourself / About the user sections.
2353 + */
2354 + 'user_about' => array(
2355 + 'job_title' => 'Job Title',
2356 + 'honorific_prefix' => 'Honorific Prefix',
2357 + 'honorific_suffix' => 'Honorific Suffix',
2358 + 'additional_name' => 'Middle or Additional Name',
2359 + 'award' => 'Awards',
2360 + ),
2361 +
2362 + 'site_verify_meta_names' => array(
2363 + 'ahrefs_site_verify' => 'ahrefs-site-verification', // Ahrefs Website Verification ID.
2364 + 'baidu_site_verify' => 'baidu-site-verification', // Baidu Website Verification ID.
2365 + 'fb_site_verify' => 'facebook-domain-verification', // Facebook Domain Verification ID.
2366 + 'g_site_verify' => 'google-site-verification', // Google Website Verification ID.
2367 + 'bing_site_verify' => 'msvalidate.01', // Microsoft Bing Website Verification ID.
2368 + 'pin_site_verify' => 'p:domain_verify', // Pinterest Website Verification ID.
2369 + 'yandex_site_verify' => 'yandex-verification', // Yandex Website Verification ID.
2370 + ),
2371 + ), // End of 'opt' array.
2372 +
2373 + /*
2374 + * Update manager.
2375 + */
2376 + 'um' => array(
2377 + 'min_version' => '7.2.0', // Released on 2024/09/18.
2378 + 'rec_version' => '7.3.0', // Released on 2025/10/13.
2379 + 'version_filter' => array(
2380 + 'dev' => 'Development and Up',
2381 + 'alpha' => 'Alpha and Up',
2382 + 'beta' => 'Beta and Up',
2383 + 'rc' => 'Release Candidate and Up',
2384 + 'stable' => 'Stable / Production',
2385 + ),
2386 + 'version_regex' => array(
2387 + 'dev' => '/^[0-9][0-9\.\-]+((dev|a|alpha|b|beta|rc)[0-9\.\-]+)?$/',
2388 + 'alpha' => '/^[0-9][0-9\.\-]+((a|alpha|b|beta|rc)[0-9\.\-]+)?$/',
2389 + 'beta' => '/^[0-9][0-9\.\-]+((b|beta|rc)[0-9\.\-]+)?$/',
2390 + 'rc' => '/^[0-9][0-9\.\-]+((rc)[0-9\.\-]+)?$/',
2391 + 'stable' => '/^[0-9][0-9\.\-]+$/',
2392 + ),
2393 + ), // End of 'um' array.
2394 +
2395 + /*
2396 + * PHP.
2397 + */
2398 + 'php' => array(
2399 + 'label' => 'PHP',
2400 + 'min_version' => '7.4.33', // Hard limit - deactivate the plugin when activating.
2401 + 'rec_version' => '7.4.33', // Soft limit - issue warning if lower version found.
2402 + 'version_url' => 'https://www.php.net/supported-versions.php',
2403 + 'extensions' => array(
2404 + 'curl' => array( // PHP extension name.
2405 + 'label' => 'Client URL Library (cURL)',
2406 + 'url' => 'https://www.php.net/manual/en/book.curl.php',
2407 + ),
2408 + 'dom' => array( // PHP extension name.
2409 + 'label' => 'Document Object Model',
2410 + 'url' => 'https://www.php.net/manual/en/book.dom.php',
2411 + 'classes' => array( // Extra checks to make sure the PHP extension is complete.
2412 + 'DOMDocument',
2413 + ),
2414 + ),
2415 + 'gd' => array( // PHP extension name.
2416 + 'label' => 'Image Processing (GD)',
2417 + 'url' => 'https://www.php.net/manual/en/book.image.php',
2418 + 'wp_image_editor' => array(
2419 + 'class' => 'WP_Image_Editor_GD',
2420 + 'url' => 'https://developer.wordpress.org/reference/classes/wp_image_editor_gd/',
2421 + ),
2422 + ),
2423 + 'json' => array( // PHP extension name.
2424 + 'label' => 'JavaScript Object Notation (JSON)',
2425 + 'url' => 'https://www.php.net/manual/en/book.json.php',
2426 + ),
2427 + 'libxml' => array( // PHP extension name.
2428 + 'label' => 'libxml',
2429 + 'url' => 'https://www.php.net/manual/en/book.libxml.php',
2430 + 'functions' => array( // Extra checks to make sure the PHP extension is complete.
2431 + 'libxml_use_internal_errors',
2432 + ),
2433 + ),
2434 + 'mbstring' => array( // PHP extension name.
2435 + 'label' => 'Multibyte String',
2436 + 'url' => 'https://www.php.net/manual/en/book.mbstring.php',
2437 + 'functions' => array( // Extra checks to make sure the PHP extension is complete.
2438 + 'mb_convert_encoding',
2439 + 'mb_decode_numericentity',
2440 + 'mb_detect_encoding',
2441 + 'mb_strlen',
2442 + 'mb_strtolower',
2443 + 'mb_substr',
2444 + ),
2445 + ),
2446 + 'simplexml' => array( // PHP extension name.
2447 + 'label' => 'SimpleXML',
2448 + 'url' => 'https://www.php.net/manual/en/book.simplexml.php',
2449 + 'functions' => array( // Extra checks to make sure the PHP extension is complete.
2450 + 'simplexml_load_string',
2451 + ),
2452 + ),
2453 + 'xml' => array( // PHP extension name.
2454 + 'label' => 'XML Parser',
2455 + 'url' => 'https://www.php.net/manual/en/book.xml.php',
2456 + 'functions' => array( // Extra checks to make sure the PHP extension is complete.
2457 + 'utf8_encode',
2458 + ),
2459 + ),
2460 + ),
2461 + ), // End of 'php' array.
2462 +
2463 + /*
2464 + * WordPress.
2465 + */
2466 + 'wp' => array(
2467 + 'label' => 'WordPress',
2468 + 'min_version' => '5.9', // Hard limit - deactivate the plugin when activating.
2469 + 'rec_version' => '6.6.2', // Soft limit - issue warning if lower version found.
2470 + 'version_url' => 'https://codex.wordpress.org/Supported_Versions?nocache=1',
2471 + 'tb_iframe' => array( // Thickbox iframe.
2472 + 'width' => 772, // Url query argument.
2473 + 'height' => 550, // Url query argument.
2474 + ),
2475 + 'cm_names' => array(
2476 + 'aim' => 'AIM',
2477 + 'jabber' => 'Google Talk',
2478 + 'yim' => 'Yahoo Messenger',
2479 + ),
2480 + 'admin' => array(
2481 + 'dashboard' => array(
2482 + 'page' => 'index.php',
2483 + 'cap' => 'manage_options',
2484 + ),
2485 + 'plugins' => array(
2486 + 'page' => 'plugins.php',
2487 + 'cap' => 'install_plugins',
2488 + ),
2489 + 'profile' => array(
2490 + 'page' => 'profile.php',
2491 + 'cap' => 'publish_posts',
2492 + ),
2493 + 'settings' => array(
2494 + 'page' => 'options-general.php',
2495 + 'cap' => 'manage_options',
2496 + ),
2497 + 'sitesubmenu' => array(
2498 + 'page' => 'admin.php',
2499 + 'cap' => 'manage_options',
2500 + ),
2501 + 'submenu' => array(
2502 + 'page' => 'admin.php',
2503 + 'cap' => 'manage_options',
2504 + ),
2505 + 'tools' => array(
2506 + 'page' => 'tools.php',
2507 + 'cap' => 'manage_options',
2508 + ),
2509 + 'users' => array(
2510 + 'page' => 'users.php',
2511 + 'cap' => 'list_users',
2512 + 'sub' => array(
2513 + 'add-person' => array(
2514 + 'cap' => 'create_users',
2515 + 'pos' => 2,
2516 + ),
2517 + ),
2518 + ),
2519 + ),
2520 + 'roles' => array(
2521 + 'all' => array(
2522 + 'administrator',
2523 + 'editor',
2524 + 'author',
2525 + 'contributor',
2526 + 'subscriber',
2527 + ),
2528 + 'creator' => array( // Users that can create content.
2529 + 'administrator',
2530 + 'editor',
2531 + 'author',
2532 + 'contributor',
2533 + ),
2534 + 'publisher' => array( // Users that can publish content.
2535 + 'administrator',
2536 + 'editor',
2537 + 'author',
2538 + ),
2539 + 'owner' => array( // Users that can manage content (edit, publish, delete, etc.).
2540 + 'administrator',
2541 + 'editor',
2542 + ),
2543 + 'admin' => array(
2544 + 'administrator',
2545 + ),
2546 + 'person' => array( // Users for Schema Person select.
2547 + 'person',
2548 + ),
2549 + ),
2550 +
2551 + /*
2552 + * See WpssoAdmin->get_ext_file_content().
2553 + */
2554 + 'cache' => array(
2555 + 'file' => array(
2556 +
2557 + /*
2558 + * See WpssoAdmin->get_ext_file_content().
2559 + */
2560 + 'wpsso_c_' => array(
2561 + 'label' => 'File Content',
2562 + 'value' => DAY_IN_SECONDS,
2563 + 'filter' => 'wpsso_cache_expire_file_content',
2564 + ),
2565 +
2566 + /*
2567 + * See WpssoProMediaYoutube->filter_video_details().
2568 + */
2569 + 'wpsso_y_' => array(
2570 + 'label' => 'YouTube Video Details',
2571 + 'value' => WEEK_IN_SECONDS,
2572 + 'filter' => 'wpsso_cache_expire_youtube_video_details',
2573 + ),
2574 +
2575 + 'wpsso_' => array(
2576 + 'label' => 'All Files',
2577 + ),
2578 + ),
2579 + 'transient' => array(
2580 +
2581 + 'wpsso_!_' => array(
2582 + ),
2583 +
2584 + /*
2585 + * See WpssoProMediaFacebook->filter_video_details().
2586 + * See WpssoProMediaSlideshare->filter_video_details().
2587 + * See WpssoProMediaVimeo->filter_video_details().
2588 + * See WpssoProMediaWistia->filter_video_details().
2589 + * See WpssoProReviewJudgeme->filter_og().
2590 + * See WpssoProReviewShopperApproved->filter_og().
2591 + * See WpssoProReviewStamped->filter_og().
2592 + */
2593 + 'wpsso_a_' => array(
2594 + 'label' => 'API Response Info',
2595 + 'value' => DAY_IN_SECONDS,
2596 + 'filter' => 'wpsso_cache_expire_api_response',
2597 + ),
2598 +
2599 + /*
2600 + * See WpssoAdmin->settings_saved_notice().
2601 + * See WpssoHead->clear_head_array().
2602 + * See WpssoHead->get_head_array().
2603 + */
2604 + 'wpsso_h_' => array(
2605 + 'label' => 'Document Markup',
2606 + 'value' => WEEK_IN_SECONDS,
2607 + 'filter' => 'wpsso_cache_expire_head_markup',
2608 +
2609 + /*
2610 + * If the $mod array condition is true, then use the associated value.
2611 + */
2612 + 'conditional_values' => array(
2613 + 'is_404' => 0,
2614 + 'is_attachment' => 0,
2615 + 'is_date' => 0,
2616 + 'is_search' => 0,
2617 + ),
2618 + ),
2619 +
2620 + 'wpsso_i_' => array(
2621 + 'label' => 'Image URL Info',
2622 + 'value' => DAY_IN_SECONDS,
2623 + 'filter' => 'wpsso_cache_expire_image_info',
2624 + ),
2625 +
2626 + /*
2627 + * See WpssoAdmin->get_readme_info().
2628 + */
2629 + 'wpsso_r_' => array(
2630 + 'label' => 'Plugin Readme Info',
2631 + 'value' => DAY_IN_SECONDS,
2632 + 'filter' => 'wpsso_cache_expire_readme_info',
2633 + ),
2634 +
2635 + 'wpsso_s_' => array(
2636 + 'label' => 'Short URLs Info',
2637 + 'value' => 3 * MONTH_IN_SECONDS,
2638 + 'filter' => 'wpsso_cache_expire_short_url',
2639 + ),
2640 +
2641 + /*
2642 + * See WpssoSchema->get_schema_types().
2643 + * See WpssoSchema->get_schema_type_child_family().
2644 + * See WpssoSchema->get_schema_type_children().
2645 + * See WpssoSchema->get_schema_type_row_class().
2646 + */
2647 + 'wpsso_t_' => array(
2648 + 'label' => 'Schema Types Info',
2649 + 'value' => WEEK_IN_SECONDS,
2650 + 'filter' => 'wpsso_cache_expire_schema_types',
2651 + ),
2652 +
2653 + 'wpsso_' => array(
2654 + 'label' => 'All Transients',
2655 + ),
2656 + ),
2657 + 'wp_cache' => array(
2658 +
2659 + /*
2660 + * See WpssoPage->get_the_content().
2661 + */
2662 + 'wpsso_c_' => array(
2663 + 'label' => 'Filtered Content',
2664 + 'value' => HOUR_IN_SECONDS,
2665 + 'filter' => 'wpsso_cache_expire_the_content',
2666 + ),
2667 +
2668 + 'wpsso_' => array(
2669 + 'label' => 'All WP Objects',
2670 + ),
2671 + ),
2672 + ), // End of 'cache' array.
2673 + ), // End of 'wp' array.
2674 +
2675 + /*
2676 + * Used by WpssoScript->admin_enqueue_scripts().
2677 + *
2678 + * See http://qtip2.com/download.
2679 + */
2680 + 'jquery-qtip' => array(
2681 + 'label' => 'jQuery qTip',
2682 + 'version' => '3.0.3',
2683 + ),
2684 +
2685 + /*
2686 + * Required for the datepicker popup.
2687 + *
2688 + * See https://developers.google.com/speed/libraries/.
2689 + *
2690 + * See WpssoStyle->admin_enqueue_styles().
2691 + */
2692 + 'jquery-ui' => array(
2693 + 'label' => 'jQuery UI',
2694 + 'version' => '1.13.3',
2695 + ),
2696 +
2697 + 'menu' => array(
2698 + 'title' => 'SSO - Social and Search Optimization', // Menu title.
2699 + 'icon-font' => 'WpssoIcons', // Icon font family.
2700 + 'icon-code' => '\e838', // Icon CSS code, .icon-orange-6.
2701 + 'dashicons' => array(
2702 + 'add-person' => 'admin-users',
2703 + 'addons' => 'admin-plugins',
2704 + 'advanced' => 'superhero',
2705 + 'dashboard' => 'dashboard',
2706 + 'essential' => 'star-filled',
2707 + 'general' => 'admin-settings',
2708 + 'licenses' => 'admin-network',
2709 + 'setup' => 'welcome-learn-more',
2710 + 'debug' => 'code-standards',
2711 + 'site-addons' => 'admin-plugins',
2712 + 'site-licenses' => 'admin-network',
2713 + 'site-setup' => 'welcome-learn-more',
2714 + 'site-debug' => 'code-standards',
2715 + 'tools' => 'admin-tools',
2716 + 'your-sso' => 'id-alt',
2717 + '*' => 'admin-generic', // Default icon.
2718 + ),
2719 + 'must_load' => array( // Settings pages that cannot be disabled.
2720 + 'general' => true,
2721 + 'advanced' => true,
2722 + 'licenses' => true,
2723 + 'site-advanced' => true,
2724 + 'site-licenses' => true,
2725 + ),
2726 + ),
2727 + 'notice' => array(
2728 + 'title' => 'SSO', // Notice title.
2729 + ),
2730 + 'meta' => array( // Post, term, user add_meta_box() settings.
2731 + 'id' => 'sso',
2732 + 'title' => 'Document SSO',
2733 + ),
2734 + 'edit' => array( // Post, term, user lists.
2735 +
2736 + /*
2737 + * Array is defined by the preferred table column order.
2738 + */
2739 + 'columns' => array(
2740 + 'schema_type_name' => array(
2741 + 'header' => 'SSO Schema', // First column.
2742 + 'mt_name' => 'schema:type:name',
2743 + 'meta_key' => '_wpsso_head_info_schema_type_name',
2744 + 'orderby' => 'meta_value',
2745 + 'width' => '10em',
2746 + 'height' => 'auto',
2747 + 'def_val' => 'none',
2748 + ),
2749 + 'schema_lang' => array(
2750 + 'header' => 'SSO Lang', // Second column.
2751 + 'mt_name' => 'schema:language',
2752 + 'meta_key' => '_wpsso_head_info_schema_lang',
2753 + 'orderby' => 'meta_value',
2754 + 'width' => '8em',
2755 + 'height' => 'auto',
2756 + 'def_val' => 'none',
2757 + ),
2758 + 'og_img' => array(
2759 + 'header' => 'SSO Image', // Third column.
2760 + 'mt_name' => 'og:image',
2761 + 'meta_key' => '_wpsso_head_info_og_img_thumb',
2762 + 'orderby' => false, // Do not offer column sorting.
2763 + 'width' => '75px',
2764 + 'height' => '40px',
2765 + 'def_val' => 'none',
2766 + ),
2767 + 'og_desc' => array(
2768 + 'header' => 'SSO Desc', // Fourth column.
2769 + 'mt_name' => 'og:description',
2770 + 'meta_key' => '_wpsso_head_info_og_desc',
2771 + 'orderby' => true,
2772 + 'width' => '200px',
2773 + 'height' => 'auto',
2774 + 'def_val' => 'none',
2775 + ),
2776 + 'og_type' => array( // Open Graph Type ID.
2777 + 'mt_name' => 'og:type',
2778 + 'meta_key' => '_wpsso_head_info_og_type',
2779 + 'def_val' => 'none',
2780 + ),
2781 + 'schema_type' => array( // Schema Type ID.
2782 + 'mt_name' => 'schema:type:id',
2783 + 'meta_key' => '_wpsso_head_info_schema_type',
2784 + 'def_val' => 'none',
2785 + ),
2786 + 'schema_review_rating' => array(
2787 + 'mt_name' => 'schema:review:rating',
2788 + 'meta_key' => '_wpsso_head_info_schema_review_rating',
2789 + 'def_val' => '0.0', // The review rating option value type is 'pos_fnum1'.
2790 + ),
2791 + 'is_noindex' => array(
2792 + 'mt_name' => 'is_noindex',
2793 + 'meta_key' => '_wpsso_head_info_is_noindex',
2794 + 'def_val' => '0',
2795 + ),
2796 + 'is_redirect' => array(
2797 + 'mt_name' => 'is_redirect',
2798 + 'meta_key' => '_wpsso_head_info_is_redirect',
2799 + 'def_val' => '0',
2800 + ),
2801 + ),
2802 + ),
2803 + 'form' => array(
2804 + 'max_hashtags' => 5,
2805 + 'max_media_items' => 5,
2806 + 'tooltip_class' => 'sucom-tooltip',
2807 + 'yes_no' => array(
2808 + 1 => 'Yes',
2809 + 0 => 'No',
2810 + ),
2811 + 'true_false' => array(
2812 + 1 => 'True',
2813 + 0 => 'False',
2814 + ),
2815 + 'on_off' => array(
2816 + 1 => 'On',
2817 + 0 => 'Off',
2818 + ),
2819 + 'weekdays' => array(
2820 + 'sunday' => 'Sunday',
2821 + 'monday' => 'Monday',
2822 + 'tuesday' => 'Tuesday',
2823 + 'wednesday' => 'Wednesday',
2824 + 'thursday' => 'Thursday',
2825 + 'friday' => 'Friday',
2826 + 'saturday' => 'Saturday',
2827 + 'publicholidays' => 'Public Holidays',
2828 + ),
2829 + 'salary_period' => array(
2830 + 'hour' => 'Hour',
2831 + 'day' => 'Day',
2832 + 'week' => 'Week',
2833 + 'month' => 'Month',
2834 + 'year' => 'Year',
2835 + ),
2836 + 'notice_timeouts' => array(
2837 + -1 => 'Do Not Auto Show',
2838 + 0 => 'Auto Show (No Timeout)',
2839 + 1000 => 'Auto Show for 1s',
2840 + 2000 => 'Auto Show for 2s',
2841 + 3000 => 'Auto Show for 3s',
2842 + 4000 => 'Auto Show for 4s',
2843 + 5000 => 'Auto Show for 5s',
2844 + 6000 => 'Auto Show for 6s',
2845 + 7000 => 'Auto Show for 7s',
2846 + 8000 => 'Auto Show for 8s',
2847 + 5000 => 'Auto Show for 9s',
2848 + ),
2849 + 'qualifiers' => array(
2850 + '(default)',
2851 + '(no images)',
2852 + '(no videos)',
2853 + '(settings value)',
2854 + '(option disabled)',
2855 + '%1$s (default is %2$s)',
2856 + 'default is %s',
2857 + 'checked',
2858 + 'unchecked',
2859 + 'Enabled',
2860 + 'Disabled',
2861 + 'enabled',
2862 + 'disabled',
2863 + 'at',
2864 + 'tz',
2865 +
2866 + /*
2867 + * See SucomForm->get_checklist_post_types().
2868 + * See SucomForm->get_checklist_post_tax_user_values().
2869 + */
2870 + 'Post Type',
2871 + 'Taxonomy',
2872 + 'User Profiles',
2873 + ),
2874 + 'document_title' => array( // Webpage Title Tag.
2875 + 'wp_title' => '[WordPress Title]',
2876 + 'seo_title' => 'SEO Title Tag',
2877 + 'schema_title' => 'Schema Name',
2878 + 'schema_title_alt' => 'Schema Alternate Name',
2879 + ),
2880 + 'show_options' => array(
2881 + 'basic' => 'Basic Options',
2882 + 'all' => 'All Options',
2883 + ),
2884 + 'site_option_use' => array( // Site Use.
2885 + 'default' => 'First Activation',
2886 + 'empty' => 'If Option Is Empty',
2887 + 'force' => 'Always Force Value',
2888 + ),
2889 + 'script_locations' => array(
2890 + 'none' => '[None]',
2891 + 'header' => 'Header',
2892 + 'footer' => 'Footer',
2893 + ),
2894 + 'caption_types' => array(
2895 + 'none' => '[None]',
2896 + 'title' => 'Title Only',
2897 + 'excerpt' => 'Excerpt Only',
2898 + 'both' => 'Title and Excerpt',
2899 + ),
2900 + 'author_types' => array(
2901 + 'none' => '[None]',
2902 + 'organization' => 'Organization',
2903 + 'person' => 'Person',
2904 + ),
2905 + 'publisher_types' => array(
2906 + 'organization' => 'Organization',
2907 + 'person' => 'Person',
2908 + ),
2909 + 'user_name_fields' => array(
2910 + 'none' => '[None]',
2911 + 'fullname' => 'First and Last Names',
2912 + 'display_name' => 'Display Name',
2913 + 'nickname' => 'Nickname',
2914 + ),
2915 + 'addr_select' => array(
2916 + 'none' => '[None]',
2917 + 'custom' => '[Custom Address]',
2918 + 'new' => '[New Address]',
2919 + ),
2920 + 'org_select' => array(
2921 + 'none' => '[None]',
2922 + 'new' => '[New Organization]',
2923 + 'site' => '[Site Organization]',
2924 + ),
2925 + 'og_schema_types_select_format' => array(
2926 + 'id' => 'ID',
2927 + 'id_url' => 'ID | Host/Name',
2928 + 'id_name' => 'ID | Name',
2929 + 'name_id' => 'Name [ID]',
2930 + 'name' => 'Name',
2931 + ),
2932 +
2933 + /*
2934 + * Image preferred cropping.
2935 + */
2936 + 'position_crop_x' => array(
2937 + 'left' => 'Left',
2938 + 'center' => 'Center',
2939 + 'right' => 'Right',
2940 + ),
2941 + 'position_crop_y' => array(
2942 + 'top' => 'Top',
2943 + 'center' => 'Center',
2944 + 'bottom' => 'Bottom',
2945 + ),
2946 +
2947 + /*
2948 + * Robots meta.
2949 + *
2950 + * See https://developers.google.com/search/docs/crawling-indexing/robots-meta-tag#max-image-preview.
2951 + */
2952 + 'robots_max_image_preview' => array(
2953 + 'none' => '[None]',
2954 + 'standard' => 'Standard',
2955 + 'large' => 'Large',
2956 + ),
2957 +
2958 + /*
2959 + * Breadcrumbs settings.
2960 + */
2961 + 'breadcrumbs_for_posts' => array( // Breadcrumbs by Post Type.
2962 + 'none' => '[No Breadcrumbs]',
2963 + 'categories' => 'Home Page(s) and Categories',
2964 + 'ancestors' => 'Home Page(s) and Parents',
2965 + 'primary_cat' => 'Home Page(s) and Primary Category',
2966 + ),
2967 + 'breadcrumbs_for_terms' => array( // Breadcrumbs by Taxonomy.
2968 + 'none' => '[No Breadcrumbs]',
2969 + 'ancestors' => 'Home Page(s) and Parents',
2970 + ),
2971 +
2972 + /*
2973 + * Shortening service.
2974 + */
2975 + 'shorteners' => array(
2976 + 'none' => '[None]',
2977 + 'bitly' => 'Bitly', // Requires lib/pro/com/bitly.php.
2978 + 'dlmyapp' => 'DLMY.App', // Requires lib/pro/ext/dlmy.php.
2979 + 'owly' => 'Ow.ly', // Requires lib/pro/ext/owly.php.
2980 + 'tinyurl' => 'TinyURL', // Requires lib/pro/ext/tinyurl.php.
2981 + 'yourls' => 'YOURLS', // Requires lib/pro/ext/yourls.php.
2982 + ),
2983 +
2984 + /*
2985 + * Ratings and reviews services.
2986 + */
2987 + 'ratings_reviews' => array(
2988 + 'none' => '[None]',
2989 + 'judgeme' => 'Judge.me',
2990 + 'shopperapproved' => 'Shopper Approved',
2991 + 'stamped' => 'Stamped.io',
2992 + ),
2993 +
2994 + /*
2995 + * Social account keys and labels for Organization SameAs.
2996 + */
2997 + 'social_accounts' => array(
2998 + 'behance_publisher_url' => 'Behance Business Profile URL',
2999 + 'fb_publisher_url' => 'Facebook Business Page URL',
3000 + 'instagram_publisher_url' => 'Instagram Business Profile URL',
3001 + 'linkedin_publisher_url' => 'LinkedIn Business Page URL',
3002 + 'medium_publisher_url' => 'Medium Business Page URL',
3003 + 'myspace_publisher_url' => 'Myspace Business Page URL',
3004 + 'pin_publisher_url' => 'Pinterest Business Page URL',
3005 + 'sc_publisher_url' => 'Soundcloud Business Page URL',
3006 + 'tiktok_publisher_url' => 'TikTok Business Page URL',
3007 + 'tumblr_publisher_url' => 'Tumblr Business Page URL',
3008 + 'wikipedia_publisher_url' => 'Wikipedia Organization Page URL',
3009 + 'tc_site' => 'X (Twitter) Business @username',
3010 + 'yt_publisher_url' => 'YouTube Business Channel URL',
3011 + ),
3012 +
3013 + 'embed_media' => array( // Check for Embedded Media.
3014 + 'plugin_media_facebook' => 'Facebook Videos',
3015 + 'plugin_media_slideshare' => 'Slideshare Presentations',
3016 + 'plugin_media_soundcloud' => 'Soundcloud Tracks',
3017 + 'plugin_media_vimeo' => 'Vimeo Videos',
3018 + 'plugin_media_wistia' => 'Wistia Videos',
3019 + 'plugin_media_wpvideoblock' => 'WP Media Library Video Blocks',
3020 + 'plugin_media_wpvideoshortcode' => 'WP Media Library Video Shortcodes',
3021 + 'plugin_media_youtube' => 'YouTube Videos and Playlists',
3022 + ),
3023 +
3024 + /*
3025 + * Attribute option labels.
3026 + */
3027 + 'attr_labels' => array(
3028 + 'plugin_attr_book_author_name' => 'Book Author Name Attribute',
3029 + 'plugin_attr_book_isbn' => 'Book ISBN Attribute',
3030 + 'plugin_attr_product_adult_type' => 'Adult Type Attribute',
3031 + 'plugin_attr_product_age_group' => 'Age Group Attribute',
3032 + 'plugin_attr_product_brand' => 'Brand Attribute',
3033 + 'plugin_attr_product_color' => 'Color Attribute',
3034 + 'plugin_attr_product_condition' => 'Condition Attribute',
3035 + 'plugin_attr_product_energy_efficiency' => 'Energy Rating Attribute',
3036 + 'plugin_attr_product_fluid_volume_value' => 'Fluid Volume Attribute',
3037 + 'plugin_attr_product_gtin14' => 'GTIN-14 Attribute',
3038 + 'plugin_attr_product_gtin13' => 'GTIN-13 (EAN) Attribute',
3039 + 'plugin_attr_product_gtin12' => 'GTIN-12 (UPC) Attribute',
3040 + 'plugin_attr_product_gtin8' => 'GTIN-8 Attribute',
3041 + 'plugin_attr_product_gtin' => 'GTIN Attribute',
3042 + 'plugin_attr_product_height_value' => 'Net Height Attribute',
3043 + 'plugin_attr_product_isbn' => 'ISBN Attribute',
3044 + 'plugin_attr_product_length_value' => 'Net Len. / Depth Attribute',
3045 + 'plugin_attr_product_material' => 'Material Attribute',
3046 + 'plugin_attr_product_mfr_part_no' => 'MPN Attribute',
3047 + 'plugin_attr_product_pattern' => 'Pattern Attribute',
3048 + 'plugin_attr_product_size' => 'Size Attribute',
3049 + 'plugin_attr_product_size_group' => 'Size Group Attribute',
3050 + 'plugin_attr_product_size_system' => 'Size System Attribute',
3051 + 'plugin_attr_product_target_gender' => 'Target Gender Attribute',
3052 + 'plugin_attr_product_weight_value' => 'Net Weight Attribute',
3053 + 'plugin_attr_product_width_value' => 'Net Width Attribute',
3054 + ),
3055 +
3056 + /*
3057 + * Custom field option labels.
3058 + */
3059 + 'cf_labels' => array(
3060 + 'plugin_cf_addl_type_urls' => 'Microdata Type URLs Custom Field',
3061 + 'plugin_cf_book_author_name' => 'Book Author Name Custom Field',
3062 + 'plugin_cf_book_isbn' => 'Book ISBN Custom Field',
3063 + 'plugin_cf_img_url' => 'Image URL Custom Field',
3064 + 'plugin_cf_product_adult_type' => 'Product Adult Type Custom Field',
3065 + 'plugin_cf_product_age_group' => 'Product Age Group Custom Field',
3066 + 'plugin_cf_product_avail' => 'Product Availability Custom Field',
3067 + 'plugin_cf_product_brand' => 'Product Brand Custom Field',
3068 + 'plugin_cf_product_category' => 'Product Google Cat. ID Custom Field',
3069 + 'plugin_cf_product_color' => 'Product Color Custom Field',
3070 + 'plugin_cf_product_condition' => 'Product Condition Custom Field',
3071 + 'plugin_cf_product_currency' => 'Product Currency Custom Field',
3072 + 'plugin_cf_product_energy_efficiency' => 'Product Energy Rating Custom Field',
3073 + 'plugin_cf_product_fluid_volume_value' => 'Product Fluid Volume Custom Field',
3074 + 'plugin_cf_product_gtin14' => 'Product GTIN-14 Custom Field',
3075 + 'plugin_cf_product_gtin13' => 'Product GTIN-13 (EAN) Custom Field',
3076 + 'plugin_cf_product_gtin12' => 'Product GTIN-12 (UPC) Custom Field',
3077 + 'plugin_cf_product_gtin8' => 'Product GTIN-8 Custom Field',
3078 + 'plugin_cf_product_gtin' => 'Product GTIN Custom Field',
3079 + 'plugin_cf_product_isbn' => 'Product ISBN Custom Field',
3080 + 'plugin_cf_product_height_value' => 'Product Net Height Custom Field',
3081 + 'plugin_cf_product_length_value' => 'Product Net Len. / Depth Custom Field',
3082 + 'plugin_cf_product_material' => 'Product Material Custom Field',
3083 + 'plugin_cf_product_mfr_part_no' => 'Product MPN Custom Field',
3084 + 'plugin_cf_product_min_advert_price' => 'Product Min Advert Price Custom Field',
3085 + 'plugin_cf_product_pattern' => 'Product Pattern Custom Field',
3086 + 'plugin_cf_product_price' => 'Product Price Custom Field',
3087 + 'plugin_cf_product_price_type' => 'Product Price Type Custom Field',
3088 + 'plugin_cf_product_retailer_part_no' => 'Product SKU Custom Field',
3089 + 'plugin_cf_product_shipping_height_value' => 'Product Shipping Height Custom Field',
3090 + 'plugin_cf_product_shipping_length_value' => 'Product Shipping Length Custom Field',
3091 + 'plugin_cf_product_shipping_weight_value' => 'Product Shipping Weight Custom Field',
3092 + 'plugin_cf_product_shipping_width_value' => 'Product Shipping Width Custom Field',
3093 + 'plugin_cf_product_size' => 'Product Size Custom Field',
3094 + 'plugin_cf_product_size_group' => 'Product Size Group Custom Field',
3095 + 'plugin_cf_product_size_system' => 'Product Size System Custom Field',
3096 + 'plugin_cf_product_target_gender' => 'Product Target Gender Custom Field',
3097 + 'plugin_cf_product_weight_value' => 'Product Net Weight Custom Field',
3098 + 'plugin_cf_product_width_value' => 'Product Net Width Custom Field',
3099 + 'plugin_cf_review_item_name' => 'Review Subject Name Custom Field',
3100 + 'plugin_cf_review_item_desc' => 'Review Subject Desc Custom Field',
3101 + 'plugin_cf_review_rating' => 'Review Rating Custom Field',
3102 + 'plugin_cf_review_rating_alt_name' => 'Review Rating Alt Name Custom Field',
3103 + 'plugin_cf_sameas_urls' => 'Same-As URLs Custom Field',
3104 + 'plugin_cf_vid_url' => 'Video URL Custom Field',
3105 + 'plugin_cf_vid_embed' => 'Video Embed HTML Custom Field',
3106 + ),
3107 +
3108 + /*
3109 + * Used with array_intersect_key() to determine which metadata keys can be inherited.
3110 + *
3111 + * See WpssoAbstractWpMeta->get_inherited_md_opts().
3112 + */
3113 + 'inherit_md_opts' => array(
3114 +
3115 + /*
3116 + * Inherited image options.
3117 + */
3118 + 'og_img_max' => null,
3119 + 'og_img_id' => null,
3120 + 'og_img_id_lib' => null,
3121 + 'og_img_url' => null,
3122 + 'pin_img_id' => null,
3123 + 'pin_img_id_lib' => null,
3124 + 'pin_img_url' => null,
3125 + 'schema_img_id' => null,
3126 + 'schema_img_id_lib' => null,
3127 + 'schema_img_url' => null,
3128 + 'tc_lrg_img_id' => null,
3129 + 'tc_lrg_img_id_lib' => null,
3130 + 'tc_lrg_img_url' => null,
3131 + 'tc_sum_img_id' => null,
3132 + 'tc_sum_img_id_lib' => null,
3133 + 'tc_sum_img_url' => null,
3134 +
3135 + /*
3136 + * Inherited product options.
3137 + */
3138 + 'product_adult_type' => null,
3139 + 'product_age_group' => null,
3140 + 'product_brand' => null,
3141 + 'product_category' => null, // Product Google Category.
3142 + 'product_energy_efficiency' => null,
3143 + 'product_energy_efficiency_min' => null,
3144 + 'product_energy_efficiency_max' => null,
3145 + 'product_min_advert_price' => null,
3146 + 'product_mrp' => null, // Product Return Policy.
3147 + 'product_price_type' => null,
3148 + 'product_size_group_0' => null,
3149 + 'product_size_group_1' => null,
3150 + 'product_size_system' => null,
3151 + 'product_target_gender' => null,
3152 +
3153 + /*
3154 + * Inherited Schema options.
3155 + */
3156 + 'schema_article_section' => null,
3157 + ),
3158 +
3159 + /*
3160 + * Inherit required properties from the product group for Google.
3161 + *
3162 + * Use an associative array to avoid property names from being translated.
3163 + *
3164 + * See WpssoJsonTypeProductGroup->filter_json_data_https_schema_org_productgroup().
3165 + */
3166 + 'inherit_variant_props' => array(
3167 + 'name' => null,
3168 + 'description' => null,
3169 + 'brand' => null,
3170 + ),
3171 + 'excl_varies_by_props' => array(
3172 + '@id' => null,
3173 + '@context' => null,
3174 + '@type' => null,
3175 + 'url' => null,
3176 + 'name' => null,
3177 + 'description' => null,
3178 + 'image' => null,
3179 + 'subjectOf' => null,
3180 + 'inProductGroupWithID' => null,
3181 + ),
3182 +
3183 + /*
3184 + * Organization and Place default selection.
3185 + */
3186 + 'contact_is_defaults' => array(
3187 + ),
3188 + 'org_is_defaults' => array(
3189 + 'schema_def_pub_org_id' => 'Default Creative Work Publisher Organization',
3190 + 'schema_def_prov_org_id' => 'Default Creative Work Provider Organization',
3191 + 'schema_def_fund_org_id' => 'Default Creative Work Funder Organization',
3192 + 'schema_def_event_performer_org_id' => 'Default Event Performer Organization',
3193 + 'schema_def_event_organizer_org_id' => 'Default Event Organizer Organization',
3194 + 'schema_def_event_fund_org_id' => 'Default Event Funder Organization',
3195 + 'schema_def_job_hiring_org_id' => 'Default Job Hiring Organization',
3196 + 'schema_def_service_prov_org_id' => 'Default Service Provider Organization',
3197 + ),
3198 + 'place_is_defaults' => array(
3199 + 'schema_def_event_location_id' => 'Default Event Venue',
3200 + 'schema_def_job_location_id' => 'Default Job Location',
3201 + ),
3202 +
3203 + /*
3204 + * Validated on 2022/12/26.
3205 + *
3206 + * Used for the Schema Product and Offer 'hasAdultConsideration' property.
3207 + *
3208 + * See https://schema.org/AdultOrientedEnumeration.
3209 + * See https://support.google.com/merchants/answer/6324508.
3210 + */
3211 + 'adult_type' => array(
3212 + 'none' => '[None]', // Removed for checklists.
3213 + 'https://schema.org/AlcoholConsideration' => 'Alcohol',
3214 + 'https://schema.org/DangerousGoodConsideration' => 'Dangerous Good',
3215 + 'https://schema.org/HealthcareConsideration' => 'Healthcare',
3216 + 'https://schema.org/NarcoticConsideration' => 'Narcotic',
3217 + 'https://schema.org/ReducedRelevanceForChildrenConsideration' => 'Reduced Relevance for Children',
3218 + 'https://schema.org/SexualContentConsideration' => 'Sexual Content',
3219 + 'https://schema.org/TobaccoNicotineConsideration' => 'Tobacco Nicotine',
3220 + 'https://schema.org/UnclassifiedAdultConsideration' => 'Unclassified Adult',
3221 + 'https://schema.org/ViolenceConsideration' => 'Violence',
3222 + 'https://schema.org/WeaponConsideration' => 'Weapon',
3223 + ),
3224 +
3225 + /*
3226 + * Validated on 2022/09/24.
3227 + *
3228 + * See https://developers.facebook.com/docs/marketing-api/catalog/reference/.
3229 + * See https://support.google.com/merchants/answer/6324463.
3230 + */
3231 + 'age_group' => array(
3232 + 'none' => '[None]', // Removed for checklists.
3233 + 'adult' => 'Adult (13 years old or more)',
3234 + 'all ages' => 'All Ages (13 years old or more)',
3235 + 'infant' => 'Infant (3–12 months old)',
3236 + 'kids' => 'Kids (5–13 years old)',
3237 + 'newborn' => 'Newborn (0-3 months old)',
3238 + 'teen' => 'Teen (13 years old or more)',
3239 + 'toddler' => 'Toddler (1–5 years old)',
3240 + ),
3241 +
3242 + /*
3243 + * Validated on 2022/12/26.
3244 + *
3245 + * See https://schema.org/BookFormatType.
3246 + */
3247 + 'book_format' => array(
3248 + 'none' => '[None]', // Removed for checklists.
3249 + 'https://schema.org/AudiobookFormat' => 'Audiobook',
3250 + 'https://schema.org/EBook' => 'eBook',
3251 + 'https://schema.org/GraphicNovel' => 'Graphic Novel',
3252 + 'https://schema.org/Hardcover' => 'Hardcover',
3253 + 'https://schema.org/Paperback' => 'Paperback',
3254 + ),
3255 +
3256 + /*
3257 + * Validated on 2025/06/13.
3258 + *
3259 + * See https://schema.org/ContactPointOption.
3260 + */
3261 + 'contact_point_option' => array(
3262 + 'none' => '[None]', // Removed for checklists.
3263 + 'https://schema.org/HearingImpairedSupported' => 'Hearing Impaired',
3264 + 'https://schema.org/TollFree' => 'Toll Free',
3265 + ),
3266 +
3267 + /*
3268 + * Validated on 2026/05/25.
3269 + *
3270 + * See https://schema.org/DayOfWeek.
3271 + */
3272 + 'day_of_week' => array(
3273 + 'sunday' => 'https://schema.org/Sunday',
3274 + 'monday' => 'https://schema.org/Monday',
3275 + 'tuesday' => 'https://schema.org/Tuesday',
3276 + 'wednesday' => 'https://schema.org/Wednesday',
3277 + 'thursday' => 'https://schema.org/Thursday',
3278 + 'friday' => 'https://schema.org/Friday',
3279 + 'saturday' => 'https://schema.org/Saturday',
3280 + 'publicholidays' => 'https://schema.org/PublicHolidays',
3281 + ),
3282 +
3283 + /*
3284 + * Validated on 2020/08/17.
3285 + *
3286 + * See https://developers.google.com/search/docs/data-types/job-postings.
3287 + */
3288 + 'employment_type' => array(
3289 + 'none' => '[None]', // Removed for checklists.
3290 + 'FULL_TIME' => 'Full Time',
3291 + 'PART_TIME' => 'Part Time',
3292 + 'CONTRACTOR' => 'Contractor',
3293 + 'TEMPORARY' => 'Temporary',
3294 + 'INTERN' => 'Intern',
3295 + 'VOLUNTEER' => 'Volunteer',
3296 + 'PER_DIEM' => 'Per Diem',
3297 + 'OTHER' => 'Other',
3298 + ),
3299 +
3300 + /*
3301 + * Validated on 2022/12/26.
3302 + *
3303 + * See https://schema.org/EUEnergyEfficiencyEnumeration.
3304 + * See https://support.google.com/merchants/answer/7562785.
3305 + */
3306 + 'energy_efficiency' => array(
3307 + 'none' => '[None]', // Removed for checklists.
3308 + 'https://schema.org/EUEnergyEfficiencyCategoryA3Plus' => 'A+++',
3309 + 'https://schema.org/EUEnergyEfficiencyCategoryA2Plus' => 'A++',
3310 + 'https://schema.org/EUEnergyEfficiencyCategoryA1Plus' => 'A+',
3311 + 'https://schema.org/EUEnergyEfficiencyCategoryA' => 'A',
3312 + 'https://schema.org/EUEnergyEfficiencyCategoryB' => 'B',
3313 + 'https://schema.org/EUEnergyEfficiencyCategoryC' => 'C',
3314 + 'https://schema.org/EUEnergyEfficiencyCategoryD' => 'D',
3315 + 'https://schema.org/EUEnergyEfficiencyCategoryE' => 'E',
3316 + 'https://schema.org/EUEnergyEfficiencyCategoryF' => 'F',
3317 + 'https://schema.org/EUEnergyEfficiencyCategoryG' => 'G',
3318 + ),
3319 +
3320 + /*
3321 + * Validated on 2022/12/26.
3322 + *
3323 + * Used by WpssoSchema->filter_sanitize_md_options().
3324 + *
3325 + * See https://schema.org/EventAttendanceModeEnumeration.
3326 + */
3327 + 'event_attendance' => array(
3328 + 'none' => '[None]', // Removed for checklists.
3329 + 'https://schema.org/MixedEventAttendanceMode' => 'Mixed',
3330 + 'https://schema.org/OnlineEventAttendanceMode' => 'Online',
3331 + 'https://schema.org/OfflineEventAttendanceMode' => 'Physical Location',
3332 + ),
3333 +
3334 + /*
3335 + * Validated on 2022/12/26.
3336 + *
3337 + * Used by WpssoSchema->filter_sanitize_md_options().
3338 + *
3339 + * See https://schema.org/EventStatusType.
3340 + */
3341 + 'event_status' => array(
3342 + 'none' => '[None]', // Removed for checklists.
3343 + 'https://schema.org/EventCancelled' => 'Cancelled',
3344 + 'https://schema.org/EventMovedOnline' => 'Moved Online',
3345 + 'https://schema.org/EventPostponed' => 'Postponed',
3346 + 'https://schema.org/EventRescheduled' => 'Rescheduled',
3347 + 'https://schema.org/EventScheduled' => 'Scheduled', // Default.
3348 + ),
3349 +
3350 + /*
3351 + * Validated on 2022/12/26.
3352 + *
3353 + * Used by WpssoSchema->filter_sanitize_md_options().
3354 + *
3355 + * See https://schema.org/ItemAvailability.
3356 + */
3357 + 'item_availability' => array(
3358 + 'none' => '[None]', // Removed for checklists.
3359 + 'https://schema.org/BackOrder' => 'Back Order', // Indicates that the item is available on back order.
3360 + 'https://schema.org/Discontinued' => 'Discontinued',
3361 + 'https://schema.org/InStock' => 'In Stock',
3362 + 'https://schema.org/InStoreOnly' => 'In Store Only',
3363 + 'https://schema.org/LimitedAvailability' => 'Limited Availability',
3364 + 'https://schema.org/OnlineOnly' => 'Online Only',
3365 + 'https://schema.org/OutOfStock' => 'Out Of Stock',
3366 + 'https://schema.org/PreOrder' => 'Pre-Order',
3367 + 'https://schema.org/PreSale' => 'Pre-Sale',
3368 + 'https://schema.org/SoldOut' => 'Sold Out',
3369 + ),
3370 +
3371 + /*
3372 + * Validated on 2022/12/26.
3373 + *
3374 + * Used by WpssoSchema->filter_sanitize_md_options().
3375 + *
3376 + * See https://schema.org/OfferItemCondition.
3377 + * See https://support.google.com/merchants/answer/6324469.
3378 + */
3379 + 'item_condition' => array(
3380 + 'none' => '[None]', // Removed for checklists.
3381 + 'https://schema.org/DamagedCondition' => 'Damaged',
3382 + 'https://schema.org/NewCondition' => 'New',
3383 + 'https://schema.org/RefurbishedCondition' => 'Refurbished',
3384 + 'https://schema.org/UsedCondition' => 'Used',
3385 + ),
3386 +
3387 + /*
3388 + * Validated on 2021/04/15.
3389 + *
3390 + * See https://developers.google.com/search/docs/data-types/job-postings.
3391 + */
3392 + 'job_location_type' => array(
3393 + 'none' => '[None]', // Removed for checklists.
3394 + 'TELECOMMUTE' => 'Telecommute (100% Remote)',
3395 + ),
3396 +
3397 + /*
3398 + * Validated on 2025/07/09.
3399 + *
3400 + * See https://schema.org/RefundTypeEnumeration.
3401 + * See https://developers.google.com/search/docs/appearance/structured-data/return-policy.
3402 + */
3403 + 'refund_type' => array(
3404 + 'https://schema.org/ExchangeRefund' => 'Exchange Refund',
3405 + 'https://schema.org/FullRefund' => 'Full Refund',
3406 + 'https://schema.org/StoreCreditRefund' => 'Store Credit Refund',
3407 + ),
3408 +
3409 + /*
3410 + * Validated on 2024/07/31.
3411 + *
3412 + * See https://schema.org/MerchantReturnEnumeration.
3413 + * See https://developers.google.com/search/docs/appearance/structured-data/return-policy.
3414 + */
3415 + 'merchant_return' => array(
3416 + 'https://schema.org/MerchantReturnFiniteReturnWindow' => 'Limited Return Window',
3417 + 'https://schema.org/MerchantReturnNotPermitted' => 'Not Permitted',
3418 + 'https://schema.org/MerchantReturnUnlimitedWindow' => 'Unlimited Window',
3419 + 'https://schema.org/MerchantReturnUnspecified' => 'Unspecified',
3420 + ),
3421 +
3422 + /*
3423 + * Validated on 2025/01/21.
3424 + *
3425 + * Used by WpssoSchema->filter_sanitize_md_options().
3426 + *
3427 + * See https://schema.org/PriceTypeEnumeration.
3428 + */
3429 + 'price_type' => array(
3430 + 'none' => '[None]', // Removed for checklists.
3431 + 'https://schema.org/InvoicePrice' => 'Invoice Price',
3432 + 'https://schema.org/ListPrice' => 'List Price',
3433 + 'https://schema.org/MSRP' => 'Manufacturer Suggested Retail Price',
3434 + 'https://schema.org/MinimumAdvertisedPrice' => 'Minimum Advertised Price',
3435 + 'https://schema.org/RegularPrice' => 'Regular Price',
3436 + 'https://schema.org/SalePrice' => 'Sale Price',
3437 + 'https://schema.org/SRP' => 'Suggested Retail Price',
3438 + 'https://schema.org/StrikethroughPrice' => 'Strikethrough Price',
3439 + ),
3440 +
3441 + /*
3442 + * Validated on 2024/07/31.
3443 + *
3444 + * See https://schema.org/ReturnFeesEnumeration.
3445 + */
3446 + 'return_fees' => array(
3447 + 'https://schema.org/FreeReturn' => 'Free Return',
3448 + 'https://schema.org/ReturnFeesCustomerResponsibility' => 'Customer Pays Shipping',
3449 + 'https://schema.org/ReturnShippingFees' => 'Return Has Shipping Fees',
3450 + ),
3451 +
3452 + /*
3453 + * Validated on 2025/07/09.
3454 + *
3455 + * See https://schema.org/ReturnLabelSourceEnumeration.
3456 + * See https://developers.google.com/search/docs/appearance/structured-data/return-policy.
3457 + */
3458 + 'return_label_source' => array(
3459 + 'https://schema.org/ReturnLabelCustomerResponsibility' => 'Customer Responsibility',
3460 + 'https://schema.org/ReturnLabelDownloadAndPrint' => 'Download And Print',
3461 + 'https://schema.org/ReturnLabelInBox' => 'Label In Box',
3462 + ),
3463 +
3464 + /*
3465 + * Validated on 2023/06/02.
3466 + *
3467 + * See https://schema.org/ReturnMethodEnumeration.
3468 + * See https://developers.google.com/search/docs/appearance/structured-data/merchant-listing#returns.
3469 + */
3470 + 'return_method' => array(
3471 + 'https://schema.org/ReturnAtKiosk' => 'At Kiosk',
3472 + 'https://schema.org/ReturnByMail' => 'By Mail',
3473 + 'https://schema.org/ReturnInStore' => 'In Store',
3474 + ),
3475 +
3476 + /*
3477 + * Validated on 2021/11/09.
3478 + *
3479 + * Used by WpssoSchema->filter_sanitize_md_options().
3480 + *
3481 + * See https://support.google.com/merchants/answer/6324497.
3482 + */
3483 + 'size_group' => array(
3484 + 'none' => '[None]', // Removed for checklists.
3485 + 'https://schema.org/WearableSizeGroupRegular' => 'Regular',
3486 + 'https://schema.org/WearableSizeGroupPetite' => 'Petite',
3487 + 'https://schema.org/WearableSizeGroupPlus' => 'Plus',
3488 + 'https://schema.org/WearableSizeGroupTall' => 'Tall',
3489 + 'https://schema.org/WearableSizeGroupBig' => 'Big',
3490 + 'https://schema.org/WearableSizeGroupMaternity' => 'Maternity',
3491 + ),
3492 +
3493 + /*
3494 + * Validated on 2022/12/26.
3495 + *
3496 + * Used by WpssoSchema->filter_sanitize_md_options().
3497 + *
3498 + * Not supposed by Google:
3499 + *
3500 + * https://schema.org/WearableSizeSystemContinental
3501 + * https://schema.org/WearableSizeSystemEN13402
3502 + * https://schema.org/WearableSizeSystemGS1
3503 + *
3504 + * See https://support.google.com/merchants/answer/6324502.
3505 + */
3506 + 'size_system' => array(
3507 + 'none' => '[None]', // Removed for checklists.
3508 + 'https://schema.org/WearableSizeSystemAU' => 'AU',
3509 + 'https://schema.org/WearableSizeSystemBR' => 'BR',
3510 + 'https://schema.org/WearableSizeSystemCN' => 'CN',
3511 + 'https://schema.org/WearableSizeSystemDE' => 'DE',
3512 + 'https://schema.org/WearableSizeSystemEurope' => 'EU',
3513 + 'https://schema.org/WearableSizeSystemFR' => 'FR',
3514 + 'https://schema.org/WearableSizeSystemIT' => 'IT',
3515 + 'https://schema.org/WearableSizeSystemJP' => 'JP',
3516 + 'https://schema.org/WearableSizeSystemMX' => 'MX',
3517 + 'https://schema.org/WearableSizeSystemUK' => 'UK',
3518 + 'https://schema.org/WearableSizeSystemUS' => 'US',
3519 + ),
3520 +
3521 + /*
3522 + * Validated on 2020/08/17.
3523 + *
3524 + * See https://developers.facebook.com/docs/marketing-api/catalog/reference/.
3525 + * See https://schema.org/suggestedGender.
3526 + * See https://support.google.com/merchants/answer/6324479.
3527 + */
3528 + 'target_gender' => array(
3529 + 'none' => '[None]', // Removed for checklists.
3530 + 'female' => 'Female',
3531 + 'male' => 'Male',
3532 + 'unisex' => 'Unisex',
3533 + ),
3534 +
3535 + /*
3536 + * The default warning is 90% of the maximum length.
3537 + *
3538 + * See sucomTextLen() in wpsso/live/js/com/jquery-admin-page.js.
3539 + */
3540 + 'input_limits' => array(
3541 +
3542 + /*
3543 + * While Google does not specify a recommended length for title tags, most desktop and
3544 + * mobile browsers are able to display the first 50–60 characters of a title tag. If you
3545 + * keep your titles under 60 characters, our research suggests that you can expect about
3546 + * 90% of your titles to display properly in the SERPs. (There's no exact character limit
3547 + * because characters can vary in pixel width. Google SERPs can usually display up to 600
3548 + * pixels.) While writing concise titles is important for human readability and
3549 + * comprehension, Google’s spiders will take into account the entire title tag (within
3550 + * reason) when they crawl the page, even if it is not displayed in full in the SERPs.
3551 + *
3552 + * See https://moz.com/learn/seo/title-tag.
3553 + */
3554 + 'seo_title' => array(
3555 + 'min' => 10,
3556 + 'warn' => 60,
3557 + 'max' => 70,
3558 + ),
3559 +
3560 + /*
3561 + * Meta descriptions can technically be any length, but Google generally truncates snippets
3562 + * to ~155-160 characters. It's best to keep meta descriptions long enough that they're
3563 + * sufficiently descriptive, so we recommend descriptions between 50 and 160 characters.
3564 + *
3565 + * See https://moz.com/learn/seo/meta-description.
3566 + */
3567 + 'seo_desc' => array(
3568 + 'min' => 50,
3569 + 'warn' => 150,
3570 + 'max' => 180,
3571 + ),
3572 +
3573 + /*
3574 + * Keep it short to prevent overflow. There’s no official guidance on this, but 40
3575 + * characters for mobile and 60 for desktop is roughly the sweet spot.
3576 + *
3577 + * See https://ahrefs.com/blog/open-graph-meta-tags/.
3578 + */
3579 + 'og_title' => array(
3580 + 'warn' => 40,
3581 + 'max' => 70,
3582 + ),
3583 +
3584 + /*
3585 + * Keep it short and sweet. Facebook recommends 2–4 sentences, but that often truncates.
3586 + *
3587 + * See https://ahrefs.com/blog/open-graph-meta-tags/.
3588 + */
3589 + 'og_desc' => array(
3590 + 'warn' => 200,
3591 + 'max' => 300,
3592 + ),
3593 + 'schema_title' => array(
3594 + 'min' => 10,
3595 + 'warn' => 60,
3596 + 'max' => 70,
3597 + ),
3598 + 'schema_title_alt' => array(
3599 + 'max' => 110,
3600 + ),
3601 + 'schema_title_bc' => array(
3602 + 'max' => 70,
3603 + ),
3604 +
3605 + /*
3606 + * The headline of the article. Headlines should not exceed 110 characters. For AMP
3607 + * stories, the headline should match the text in the first cover page in the AMP Story.
3608 + *
3609 + * See https://developers.google.com/search/docs/advanced/structured-data/article.
3610 + */
3611 + 'schema_headline' => array(
3612 + 'max' => 110,
3613 + ),
3614 + 'schema_desc' => array(
3615 + 'min' => 50,
3616 + 'warn' => 150,
3617 + 'max' => 300,
3618 + ),
3619 + 'schema_text' => array(
3620 + 'max' => 10000,
3621 + ),
3622 + 'pin_img_desc' => array(
3623 + 'warn' => 100,
3624 + 'max' => 300,
3625 + ),
3626 + 'tc_title' => array(
3627 + 'max' => 70,
3628 + ),
3629 + 'tc_desc' => array(
3630 + 'max' => 200,
3631 + ),
3632 + ),
3633 + ), // End of 'form' array.
3634 +
3635 + /*
3636 + * Reference for meta tags and Schema property values (limits, conversions, etc.).
3637 + */
3638 + 'head' => array(
3639 + 'limit' => array(
3640 + 'schema_1x1_img_ratio' => 1.000,
3641 + 'schema_4x3_img_ratio' => 1.333,
3642 + 'schema_16x9_img_ratio' => 1.778,
3643 + 'org_banner_width' => 600,
3644 + 'org_banner_height' => 60,
3645 + ),
3646 + 'limit_min' => array(
3647 + 'og_desc_len' => 160,
3648 + 'og_img_width' => 200,
3649 + 'og_img_height' => 200,
3650 + 'schema_desc_len' => 156,
3651 + 'seo_desc_len' => 156,
3652 + 'tc_desc_len' => 160,
3653 + 'tc_sum_img_width' => 144,
3654 + 'tc_sum_img_height' => 144,
3655 + 'tc_lrg_img_width' => 300,
3656 + 'tc_lrg_img_height' => 157,
3657 + 'schema_1x1_img_width' => 1200,
3658 + 'schema_1x1_img_height' => 1200,
3659 + 'schema_4x3_img_width' => 1200,
3660 + 'schema_4x3_img_height' => 900,
3661 + 'schema_16x9_img_width' => 1200,
3662 + 'schema_16x9_img_height' => 675,
3663 + 'thumb_img_width' => 300,
3664 + 'thumb_img_height' => 200,
3665 + 'org_logo_width' => 112,
3666 + 'org_logo_height' => 112,
3667 + ),
3668 + 'limit_max' => array(
3669 + 'og_img_ratio' => 3.000,
3670 + 'schema_headline_len' => 110,
3671 + 'tc_sum_img_width' => 4096,
3672 + 'tc_sum_img_height' => 4096,
3673 + 'tc_lrg_img_width' => 4096,
3674 + 'tc_lrg_img_height' => 4096,
3675 + ),
3676 +
3677 + /*
3678 + * Hard-code the Open Graph type based on the WordPress post type.
3679 + *
3680 + * Example, if the post type is 'product', hard-code the Open Graph type to 'product'.
3681 + */
3682 + 'og_type_by_post_type' => array(
3683 + 'book' => 'book',
3684 + 'download' => 'product',
3685 + 'organization' => 'website',
3686 + 'place' => 'place',
3687 + 'product' => 'product',
3688 + 'profile' => 'profile',
3689 + 'question' => 'article',
3690 + ),
3691 +
3692 + /*
3693 + * Hard-code the Open Graph type based on the Schema type.
3694 + *
3695 + * Example, if the Schema type is 'product', hard-code the Open Graph type to 'product'.
3696 + */
3697 + 'og_type_by_schema_type' => array(
3698 + 'article' => 'article',
3699 + 'book' => 'book',
3700 + 'webpage.checkout' => 'website',
3701 + 'event' => 'product',
3702 + 'item.list' => 'website',
3703 + 'place' => 'place', // Check for Schema place before Schema organization.
3704 + 'organization' => 'website', // Check for Schema place before Schema organization.
3705 + 'product' => 'product', // Allows for product offer options.
3706 + 'question' => 'article',
3707 + 'review' => 'article',
3708 + 'service' => 'product',
3709 + 'software.application' => 'product', // Allows for product offer options.
3710 + 'webpage.profile' => 'profile',
3711 + 'website' => 'website',
3712 + ),
3713 +
3714 + 'og_type_ns' => array( // See https://ogp.me/#types.
3715 + 'article' => 'https://ogp.me/ns/article#',
3716 + 'book' => 'https://ogp.me/ns/book#',
3717 + 'books.author' => 'https://ogp.me/ns/books#',
3718 + 'books.book' => 'https://ogp.me/ns/books#',
3719 + 'books.genre' => 'https://ogp.me/ns/books#',
3720 + 'business.business' => 'https://ogp.me/ns/business#',
3721 + 'music.album' => 'https://ogp.me/ns/music#',
3722 + 'music.playlist' => 'https://ogp.me/ns/music#',
3723 + 'music.radio_station' => 'https://ogp.me/ns/music#',
3724 + 'music.song' => 'https://ogp.me/ns/music#',
3725 + 'place' => 'https://ogp.me/ns/place#', // Supported by Facebook and Pinterest.
3726 + 'product' => 'https://ogp.me/ns/product#', // Supported by Facebook and Pinterest.
3727 + 'profile' => 'https://ogp.me/ns/profile#',
3728 + 'video.episode' => 'https://ogp.me/ns/video#',
3729 + 'video.movie' => 'https://ogp.me/ns/video#',
3730 + 'video.other' => 'https://ogp.me/ns/video#',
3731 + 'video.tv_show' => 'https://ogp.me/ns/video#',
3732 + 'website' => 'https://ogp.me/ns/website#',
3733 + ),
3734 + 'og_type_ns_compat' => array(
3735 + 'article' => 'https://ogp.me/ns/article#',
3736 + 'book' => 'https://ogp.me/ns/book#',
3737 + 'place' => 'https://ogp.me/ns/place#', // Supported by Facebook and Pinterest.
3738 + 'product' => 'https://ogp.me/ns/product#', // Supported by Facebook and Pinterest.
3739 + 'profile' => 'https://ogp.me/ns/profile#',
3740 + 'website' => 'https://ogp.me/ns/website#',
3741 + ),
3742 +
3743 + /*
3744 + * An array of Open Graph types, their meta tags, and their associated metadata keys.
3745 + *
3746 + * See WpssoOpengraph->add_data_og_type_md().
3747 + * See WpssoOpengraph->sanitize_mt_array().
3748 + * See https://developers.facebook.com/docs/reference/opengraph/.
3749 + */
3750 + 'og_type_mt' => array(
3751 +
3752 + /*
3753 + * See https://developers.facebook.com/docs/reference/opengraph/object-type/article/.
3754 + */
3755 + 'article' => array(
3756 + 'article:author' => '',
3757 + 'article:publisher' => '',
3758 + 'article:published_time' => '',
3759 + 'article:modified_time' => '',
3760 + 'article:expiration_time' => '',
3761 + 'article:section' => 'schema_article_section',
3762 + 'article:tag' => '',
3763 + ),
3764 + 'book' => array(
3765 + 'book:author' => 'schema_book_author_url',
3766 + 'book:isbn' => 'schema_book_isbn',
3767 + 'book:release_date' => '',
3768 + 'book:tag' => '',
3769 + ),
3770 + 'books.author' => array(
3771 + 'books:book' => '',
3772 + 'books:gender' => '',
3773 + 'books:genre' => '',
3774 + 'books:official_site' => '',
3775 + ),
3776 + 'books.book' => array(
3777 + 'books:author' => '',
3778 + 'books:genre' => '',
3779 + 'books:initial_release_date' => '',
3780 + 'books:isbn' => '',
3781 + 'books:language:locale' => '',
3782 + 'books:language:alternate' => '',
3783 + 'books:page_count' => '',
3784 + 'books:rating:value' => '',
3785 + 'books:rating:scale' => '',
3786 + 'books:rating:normalized_value' => '',
3787 + 'books:release_date' => '',
3788 + 'books:sample' => '',
3789 + ),
3790 + 'books.genre' => array(
3791 + 'books:author' => '',
3792 + 'books:book' => '',
3793 + 'books:canonical_name' => '',
3794 + ),
3795 + 'business.business' => array(
3796 + 'business:contact_data:street_address' => '',
3797 + 'business:contact_data:locality' => '',
3798 + 'business:contact_data:region' => '',
3799 + 'business:contact_data:postal_code' => '',
3800 + 'business:contact_data:country_name' => '',
3801 + 'business:contact_data:email' => '',
3802 + 'business:contact_data:phone_number' => '',
3803 + 'business:contact_data:phone_number' => '',
3804 + 'business:contact_data:website' => '',
3805 + 'business:hours:day' => '',
3806 + 'business:hours:start' => '',
3807 + 'business:hours:end' => '',
3808 + ),
3809 + 'music.album' => array(
3810 + 'music:song' => '',
3811 + 'music:song:disc' => '',
3812 + 'music:song:track' => '',
3813 + 'music:musician' => '',
3814 + 'music:release_date' => '',
3815 + ),
3816 + 'music.playlist' => array(
3817 + 'music:creator' => '',
3818 + 'music:song' => '',
3819 + 'music:song:disc' => '',
3820 + 'music:song:track' => '',
3821 + ),
3822 + 'music.radio_station' => array(
3823 + 'music:creator' => '',
3824 + ),
3825 + 'music.song' => array(
3826 + 'music:album' => '',
3827 + 'music:album:disc' => '',
3828 + 'music:album:track' => '',
3829 + 'music:duration' => '',
3830 + 'music:musician' => '',
3831 + ),
3832 + 'place' => array(
3833 + 'place:location:latitude' => '',
3834 + 'place:location:longitude' => '',
3835 + 'place:location:altitude' => '',
3836 + 'place:street_address' => '',
3837 + 'place:locality' => '',
3838 + 'place:region' => '',
3839 + 'place:postal_code' => '',
3840 + 'place:country_name' => '',
3841 + ),
3842 +
3843 + /*
3844 + * See https://developers.facebook.com/docs/marketing-api/catalog/reference/.
3845 + */
3846 + 'product' => array(
3847 + 'product:adult_type' => 'product_adult_type', // Internal meta tag.
3848 + 'product:age_group' => 'product_age_group',
3849 + 'product:availability' => 'product_avail',
3850 + 'product:awards' => '', // Internal meta tag.
3851 + 'product:brand' => 'product_brand',
3852 + 'product:category' => 'product_category', // Product Google Category.
3853 + 'product:color' => 'product_color',
3854 + 'product:condition' => 'product_condition',
3855 + 'product:ean' => 'product_gtin13',
3856 + 'product:energy_efficiency:value' => 'product_energy_efficiency', // Internal meta tag.
3857 + 'product:energy_efficiency:min_value' => 'product_energy_efficiency_min', // Internal meta tag.
3858 + 'product:energy_efficiency:max_value' => 'product_energy_efficiency_max', // Internal meta tag.
3859 + 'product:expiration_time' => '',
3860 + 'product:fluid_volume:value' => 'product_fluid_volume_value', // Internal meta tag.
3861 + 'product:fluid_volume:units' => 'product_fluid_volume_units', // Internal meta tag.
3862 + 'product:gtin14' => 'product_gtin14', // Internal meta tag.
3863 + 'product:gtin13' => 'product_gtin13', // Internal meta tag.
3864 + 'product:gtin12' => 'product_gtin12', // Internal meta tag.
3865 + 'product:gtin8' => 'product_gtin8', // Internal meta tag.
3866 + 'product:gtin' => 'product_gtin', // Internal meta tag.
3867 + 'product:height:value' => 'product_height_value', // Internal meta tag.
3868 + 'product:height:units' => 'product_height_units', // Internal meta tag.
3869 + 'product:isbn' => 'product_isbn',
3870 + 'product:item_group_id' => '', // Product variant group ID.
3871 + 'product:length:value' => 'product_length_value', // Internal meta tag.
3872 + 'product:length:units' => 'product_length_units', // Internal meta tag.
3873 + 'product:material' => 'product_material',
3874 + 'product:mfr_part_no' => 'product_mfr_part_no', // Product MPN.
3875 + 'product:min_advert_price:amount' => 'product_min_advert_price', // Internal meta tag.
3876 + 'product:min_advert_price:currency' => '', // Internal meta tag.
3877 + 'product:mrp_id' => 'product_mrp', // Internal meta tag.
3878 + 'product:original_price:amount' => '', // Used by WooCommerce module.
3879 + 'product:original_price:currency' => '', // Used by WooCommerce module.
3880 + 'product:pattern' => 'product_pattern',
3881 + 'product:pretax_price:amount' => '', // Used by WooCommerce module.
3882 + 'product:pretax_price:currency' => '', // Used by WooCommerce module.
3883 + 'product:price:type' => 'product_price_type', // Internal meta tag.
3884 + 'product:price:amount' => 'product_price',
3885 + 'product:price:currency' => 'product_currency',
3886 + 'product:purchase_limit' => '',
3887 + 'product:retailer_category' => '', // Internal meta tag.
3888 + 'product:retailer_item_id' => '', // Product ID.
3889 + 'product:retailer_part_no' => 'product_retailer_part_no', // Product SKU.
3890 + 'product:sale_price:amount' => '', // Used by WooCommerce module.
3891 + 'product:sale_price:currency' => '', // Used by WooCommerce module.
3892 + 'product:sale_price_dates:start' => '', // Used by WooCommerce module.
3893 + 'product:sale_price_dates:end' => '', // Used by WooCommerce module.
3894 + 'product:shipping_cost:amount' => '',
3895 + 'product:shipping_cost:currency' => '',
3896 + 'product:shipping_height:value' => 'product_shipping_height_value', // Internal meta tag.
3897 + 'product:shipping_height:units' => 'product_shipping_height_units', // Internal meta tag.
3898 + 'product:shipping_length:value' => 'product_shipping_length_value', // Internal meta tag.
3899 + 'product:shipping_length:units' => 'product_shipping_length_units', // Internal meta tag.
3900 + 'product:shipping_weight:value' => 'product_shipping_weight_value',
3901 + 'product:shipping_weight:units' => 'product_shipping_weight_units',
3902 + 'product:shipping_width:value' => 'product_shipping_width_value', // Internal meta tag.
3903 + 'product:shipping_width:units' => 'product_shipping_width_units', // Internal meta tag.
3904 + 'product:size' => 'product_size',
3905 + 'product:size_group' => 'product_size_group', // Internal meta tag.
3906 + 'product:size_system' => 'product_size_system', // Internal meta tag.
3907 + 'product:target_gender' => 'product_target_gender',
3908 + 'product:upc' => 'product_gtin12',
3909 + 'product:weight:value' => 'product_weight_value',
3910 + 'product:weight:units' => 'product_weight_units',
3911 + 'product:width:value' => 'product_width_value', // Internal meta tag.
3912 + 'product:width:units' => 'product_width_units', // Internal meta tag.
3913 + ),
3914 + 'profile' => array(
3915 + 'profile:first_name' => '',
3916 + 'profile:last_name' => '',
3917 + 'profile:username' => '',
3918 + 'profile:gender' => '',
3919 + ),
3920 + 'video.episode' => array(
3921 + 'video:actor' => '',
3922 + 'video:actor:role' => '',
3923 + 'video:director' => '',
3924 + 'video:writer' => '',
3925 + 'video:duration' => '',
3926 + 'video:release_date' => '',
3927 + 'video:tag' => '',
3928 + 'video:series' => '',
3929 + ),
3930 + 'video.movie' => array(
3931 + 'video:actor' => '',
3932 + 'video:actor:role' => '',
3933 + 'video:director' => '',
3934 + 'video:writer' => '',
3935 + 'video:duration' => '',
3936 + 'video:release_date' => '',
3937 + 'video:tag' => '',
3938 + ),
3939 + 'video.other' => array(
3940 + 'video:actor' => '',
3941 + 'video:actor:role' => '',
3942 + 'video:director' => '',
3943 + 'video:writer' => '',
3944 + 'video:duration' => '',
3945 + 'video:release_date' => '',
3946 + 'video:tag' => '',
3947 + ),
3948 + 'video.tv_show' => array(
3949 + 'video:actor' => '',
3950 + 'video:actor:role' => '',
3951 + 'video:director' => '',
3952 + 'video:writer' => '',
3953 + 'video:duration' => '',
3954 + 'video:release_date' => '',
3955 + 'video:tag' => '',
3956 + ),
3957 + ),
3958 + 'og_content_map' => array( // Element of 'head' array.
3959 +
3960 + /*
3961 + * Validated on 2021/07/22.
3962 + *
3963 + * See https://developers.facebook.com/docs/marketing-api/catalog/reference/#og-tags.
3964 + *
3965 + * Required. Current availability of the item: in stock, out of stock, available for order,
3966 + * discontinued. Supports pixel-based catalogs.
3967 + */
3968 + 'product:availability' => array(
3969 + 'https://schema.org/BackOrder' => 'available for order',
3970 + 'https://schema.org/Discontinued' => 'discontinued',
3971 + 'https://schema.org/InStock' => 'in stock',
3972 + 'https://schema.org/InStoreOnly' => 'in stock',
3973 + 'https://schema.org/LimitedAvailability' => 'in stock',
3974 + 'https://schema.org/OnlineOnly' => 'in stock',
3975 + 'https://schema.org/OutOfStock' => 'out of stock',
3976 + 'https://schema.org/PreOrder' => 'available for order',
3977 + 'https://schema.org/PreSale' => 'available for order',
3978 + 'https://schema.org/SoldOut' => 'out of stock',
3979 + ),
3980 +
3981 + /*
3982 + * Validated on 2020/08/17.
3983 + *
3984 + * See https://developers.facebook.com/docs/marketing-api/catalog/reference/#og-tags.
3985 + *
3986 + * Required. Current condition of the item: new, refurbished, used. Supports pixel-based
3987 + * catalogs.
3988 + */
3989 + 'product:condition' => array(
3990 + 'https://schema.org/DamagedCondition' => 'used',
3991 + 'https://schema.org/NewCondition' => 'new',
3992 + 'https://schema.org/RefurbishedCondition' => 'refurbished',
3993 + 'https://schema.org/UsedCondition' => 'used',
3994 + ),
3995 + ),
3996 + 'schema_type' => array( // Element of 'head' array.
3997 + 'thing' => array( // Most generic type.
3998 + 'creative.work' => array( // Creative work, including books, movies, photographs, software programs, etc.
3999 + 'amp.story' => 'https://schema.org/AmpStory',
4000 + 'article' => array(
4001 + 'article' => 'https://schema.org/Article',
4002 + 'article.advertiser.content' => 'https://schema.org/AdvertiserContentArticle',
4003 + 'article.news' => array(
4004 + 'article.news' => 'https://schema.org/NewsArticle',
4005 + 'article.news.analysis' => 'https://schema.org/AnalysisNewsArticle',
4006 + 'article.news.ask.public' => 'https://schema.org/AskPublicNewsArticle',
4007 + 'article.news.background' => 'https://schema.org/BackgroundNewsArticle',
4008 + 'article.news.opinion' => 'https://schema.org/OpinionNewsArticle',
4009 + 'article.news.reportage' => 'https://schema.org/ReportageNewsArticle',
4010 + 'article.news.review' => 'https://schema.org/ReviewNewsArticle',
4011 + ),
4012 + 'article.satirical' => 'https://schema.org/SatiricalArticle',
4013 + 'article.scholarly' => array(
4014 + 'article.scholarly' => 'https://schema.org/ScholarlyArticle',
4015 + 'article.scholarly.medical' => 'https://schema.org/MedicalScholarlyArticle',
4016 + ),
4017 + 'article.tech' => array(
4018 + 'article.tech' => 'https://schema.org/TechArticle',
4019 + 'article.tech.reference.api' => 'https://schema.org/APIReference',
4020 + ),
4021 + 'report' => 'https://schema.org/Report',
4022 + 'social.media.posting' => array(
4023 + 'blog.posting' => array(
4024 + 'blog.posting' => 'https://schema.org/BlogPosting',
4025 + 'blog.posting.live' => 'https://schema.org/LiveBlogPosting',
4026 + ),
4027 + 'discussion.forum.posting' => 'https://schema.org/DiscussionForumPosting',
4028 + 'social.media.posting' => 'https://schema.org/SocialMediaPosting',
4029 + ),
4030 + ),
4031 + 'blog' => 'https://schema.org/Blog',
4032 + 'book' => array(
4033 + 'book' => 'https://schema.org/Book',
4034 + 'book.audio' => 'https://schema.org/Audiobook',
4035 + ),
4036 + 'claim' => 'https://schema.org/Claim',
4037 + 'clip' => 'https://schema.org/Clip',
4038 + 'comic.story' => 'https://schema.org/ComicStory',
4039 + 'comment' => array(
4040 + 'answer' => 'https://schema.org/Answer',
4041 + 'comment' => 'https://schema.org/Comment',
4042 + 'question' => 'https://schema.org/Question',
4043 + ),
4044 + 'conversation' => 'https://schema.org/Conversation',
4045 + 'course' => 'https://schema.org/Course',
4046 + 'creative.work' => 'https://schema.org/CreativeWork',
4047 + 'creative.work.season' => array(
4048 + 'creative.work.season' => 'https://schema.org/CreativeWorkSeason',
4049 + 'podcast.season' => 'https://schema.org/PodcastSeason',
4050 + 'radio.season' => 'https://schema.org/RadioSeason',
4051 + 'tv.season' => 'https://schema.org/TVSeason',
4052 + ),
4053 + 'creative.work.series' => array(
4054 + 'book.series' => 'https://schema.org/BookSeries',
4055 + 'creative.work.series' => 'https://schema.org/CreativeWorkSeries',
4056 + 'movie.series' => 'https://schema.org/MovieSeries',
4057 + 'periodical' => 'https://schema.org/Periodical',
4058 + 'podcast.series' => 'https://schema.org/PodcastSeries',
4059 + 'radio.series' => 'https://schema.org/RadioSeries',
4060 + 'tv.series' => 'https://schema.org/TVSeries',
4061 + 'video.game.series' => 'https://schema.org/VideoGameSeries',
4062 + ),
4063 + 'data.catalog' => 'https://schema.org/DataCatalog',
4064 + 'data.set' => 'https://schema.org/DataSet',
4065 + 'digital.document' => 'https://schema.org/DigitalDocument',
4066 + 'episode' => array(
4067 + 'episode' => 'https://schema.org/Episode',
4068 + 'episode.podcast' => 'https://schema.org/PodcastEpisode',
4069 + 'episode.radio' => 'https://schema.org/RadioEpisode',
4070 + 'episode.tv' => 'https://schema.org/TVEpisode',
4071 + ),
4072 + 'game' => 'https://schema.org/Game',
4073 + 'howto' => array(
4074 + 'howto' => 'https://schema.org/HowTo',
4075 + 'recipe' => 'https://schema.org/Recipe', // Recipe is a sub-type of HowTo.
4076 + ),
4077 + 'learning.resource' => array(
4078 + 'learning.course' => 'https://schema.org/Course',
4079 + 'learning.resource' => 'https://schema.org/LearningResource',
4080 + 'learning.quiz' => 'https://schema.org/Quiz',
4081 + 'learning.syllabus' => 'https://schema.org/Syllabus',
4082 + ),
4083 + 'map' => 'https://schema.org/Map',
4084 + 'media.object' => array(
4085 + 'audio.object' => array(
4086 + 'audio.object' => 'https://schema.org/AudioObject',
4087 + 'book.audio' => 'https://schema.org/Audiobook',
4088 + ),
4089 + 'data.download' => 'https://schema.org/DataDownload',
4090 + 'image.object' => 'https://schema.org/ImageObject',
4091 + 'media.object' => 'https://schema.org/MediaObject',
4092 + 'music.video.object' => 'https://schema.org/MusicVideoObject',
4093 + 'video.object' => 'https://schema.org/VideoObject',
4094 + ),
4095 + 'menu' => 'https://schema.org/Menu',
4096 + 'menu.section' => 'https://schema.org/MenuSection',
4097 + 'message' => 'https://schema.org/Message',
4098 + 'movie' => 'https://schema.org/Movie',
4099 + 'music.composition' => 'https://schema.org/MusicComposition',
4100 + 'music.playlist' => array(
4101 + 'music.album' => 'https://schema.org/MusicAlbum',
4102 + 'music.playlist' => 'https://schema.org/MusicPlaylist',
4103 + 'music.release' => 'https://schema.org/MusicRelease',
4104 + ),
4105 + 'music.recording' => 'https://schema.org/MusicRecording',
4106 + 'painting' => 'https://schema.org/Painting',
4107 + 'photograph' => 'https://schema.org/Photograph',
4108 + 'publication.issue' => 'https://schema.org/PublicationIssue',
4109 + 'publication.volume' => 'https://schema.org/PublicationVolume',
4110 + 'review' => array(
4111 + 'review' => 'https://schema.org/Review',
4112 + 'review.claim' => 'https://schema.org/ClaimReview',
4113 + 'review.critic' => array(
4114 + 'review.critic' => 'https://schema.org/CriticReview',
4115 + 'article.news.review' => 'https://schema.org/ReviewNewsArticle',
4116 + ),
4117 + 'review.employer' => 'https://schema.org/EmployerReview',
4118 + 'review.media' => 'https://schema.org/MediaReview',
4119 + 'review.recommendation' => 'https://schema.org/Recommendation',
4120 + 'review.user' => 'https://schema.org/UserReview',
4121 + ),
4122 + 'sculpture' => 'https://schema.org/Sculpture',
4123 + 'series' => 'https://schema.org/Series',
4124 + 'software.application' => array(
4125 + 'software.application' => 'https://schema.org/SoftwareApplication',
4126 + 'software.application.mobile' => 'https://schema.org/MobileApplication',
4127 + 'software.application.video.game' => 'https://schema.org/VideoGame',
4128 + 'software.application.web' => 'https://schema.org/WebApplication',
4129 + ),
4130 + 'software.source.code' => 'https://schema.org/SoftwareSourceCode',
4131 + 'special.announcement' => 'https://schema.org/SpecialAnnouncement',
4132 + 'tv.season' => 'https://schema.org/TVSeason',
4133 + 'tv.series' => 'https://schema.org/TVSeries',
4134 + 'visual.artwork' => 'https://schema.org/VisualArtwork',
4135 + 'webpage' => array(
4136 + 'webpage' => 'https://schema.org/WebPage',
4137 + 'webpage.about' => 'https://schema.org/AboutPage',
4138 + 'webpage.checkout' => 'https://schema.org/CheckoutPage',
4139 + 'webpage.collection' => array(
4140 + 'webpage.collection' => 'https://schema.org/CollectionPage',
4141 + 'webpage.gallery.media' => array(
4142 + 'webpage.gallery.media' => 'https://schema.org/MediaGallery',
4143 + 'webpage.gallery.image' => 'https://schema.org/ImageGallery',
4144 + 'webpage.gallery.video' => 'https://schema.org/VideoGallery',
4145 + ),
4146 + ),
4147 + 'webpage.contact' => 'https://schema.org/ContactPage',
4148 + 'webpage.faq' => 'https://schema.org/FAQPage',
4149 + 'webpage.item' => 'https://schema.org/ItemPage',
4150 + 'webpage.medical' => 'https://schema.org/MedicalWebPage',
4151 + 'webpage.profile' => 'https://schema.org/ProfilePage',
4152 + 'webpage.qa' => 'https://schema.org/QAPage',
4153 + 'webpage.real.estate.listing' => 'https://schema.org/RealEstateListing',
4154 + 'webpage.search.results' => 'https://schema.org/SearchResultsPage',
4155 + ),
4156 + 'webpage.element' => 'https://schema.org/WebPageElement',
4157 + 'website' => 'https://schema.org/WebSite',
4158 + ),
4159 + 'event' => array(
4160 + 'event' => 'https://schema.org/Event',
4161 + 'event.business' => 'https://schema.org/BusinessEvent',
4162 + 'event.childrens' => 'https://schema.org/ChildrensEvent',
4163 + 'event.comedy' => 'https://schema.org/ComedyEvent',
4164 + 'event.dance' => 'https://schema.org/DanceEvent',
4165 + 'event.delivery' => 'https://schema.org/DeliveryEvent',
4166 + 'event.education' => 'https://schema.org/EducationEvent',
4167 + 'event.exhibition' => 'https://schema.org/ExhibitionEvent',
4168 + 'event.festival' => 'https://schema.org/Festival',
4169 + 'event.food' => 'https://schema.org/FoodEvent',
4170 + 'event.literary' => 'https://schema.org/LiteraryEvent',
4171 + 'event.music' => 'https://schema.org/MusicEvent',
4172 + 'event.publication' => 'https://schema.org/PublicationEvent',
4173 + 'event.sale' => 'https://schema.org/SaleEvent',
4174 + 'event.screening' => 'https://schema.org/ScreeningEvent',
4175 + 'event.social' => 'https://schema.org/SocialEvent',
4176 + 'event.sports' => 'https://schema.org/SportsEvent',
4177 + 'event.theater' => 'https://schema.org/TheaterEvent',
4178 + 'event.visual.arts' => 'https://schema.org/VisualArtsEvent',
4179 + ),
4180 + 'intangible' => array(
4181 + 'alignment.object' => 'https://schema.org/AlignmentObject',
4182 + 'audience' => array(
4183 + 'audience' => 'https://schema.org/Audience',
4184 + 'audience.business' => 'https://schema.org/BusinessAudience',
4185 + 'audience.educational' => 'https://schema.org/EducationalAudience',
4186 + 'audience.medical' => 'https://schema.org/MedicalAudience',
4187 + 'audience.people' => 'https://schema.org/PeopleAudience',
4188 + ),
4189 + 'bed.details' => 'https://schema.org/BedDetails',
4190 + 'brand' => 'https://schema.org/Brand',
4191 + 'broadcast.channel' => 'https://schema.org/BroadcastChannel',
4192 + 'computer.language' => 'https://schema.org/ComputerLanguage',
4193 + 'data.feed.item' => 'https://schema.org/DataFeedItem',
4194 + 'demand' => 'https://schema.org/Demand',
4195 + 'digital.document.permission' => 'https://schema.org/DigitalDocumentPermission',
4196 + 'entry.point' => 'https://schema.org/EntryPoint',
4197 + 'enumeration' => array(
4198 + 'action.status.type' => 'https://schema.org/ActionStatusType',
4199 + 'boarding.policy.type' => 'https://schema.org/BoardingPolicyType',
4200 + 'book.format.type' => 'https://schema.org/BookFormatType',
4201 + 'business.entity.type' => 'https://schema.org/BusinessEntityType',
4202 + 'business.function' => 'https://schema.org/BusinessFunction',
4203 + 'contact.point.option' => 'https://schema.org/ContactPointOption',
4204 + 'day.of.week' => 'https://schema.org/DayOfWeek',
4205 + 'delivery.method' => 'https://schema.org/DeliveryMethod',
4206 + 'digital.document.permission.type' => 'https://schema.org/DigitalDocumentPermissionType',
4207 + 'enumeration' => 'https://schema.org/Enumeration',
4208 + 'event.status.type' => 'https://schema.org/EventStatusType',
4209 + 'game.play.mode' => 'https://schema.org/GamePlayMode',
4210 + 'game.server.status' => 'https://schema.org/GameServerStatus',
4211 + 'gender.type' => 'https://schema.org/GenderType',
4212 + 'item.availability' => 'https://schema.org/ItemAvailability',
4213 + 'item.list.order.type' => 'https://schema.org/ItemListOrderType',
4214 + 'map.category.type' => 'https://schema.org/MapCategoryType',
4215 + 'medical.enumeration' => array(
4216 + 'audience.medical' => 'https://schema.org/MedicalAudience',
4217 + 'medical.enumeration' => 'https://schema.org/MedicalEnumeration',
4218 + 'medical.specialty' => array(
4219 + 'anesthesia.specialty' => 'https://schema.org/Anesthesia',
4220 + 'cardiovascular.specialty' => 'https://schema.org/Cardiovascular',
4221 + 'community.health.specialty' => 'https://schema.org/CommunityHealth',
4222 + 'dentistry.specialty' => 'https://schema.org/Dentistry',
4223 + 'dermatologic.specialty' => 'https://schema.org/Dermatologic',
4224 + 'dermatology.specialty' => 'https://schema.org/Dermatology',
4225 + 'diet.nutrition.specialty' => 'https://schema.org/DietNutrition',
4226 + 'emergency.specialty' => 'https://schema.org/Emergency',
4227 + 'endocrine.specialty' => 'https://schema.org/Endocrine',
4228 + 'gastroenterologic.specialty' => 'https://schema.org/Gastroenterologic',
4229 + 'genetic.specialty' => 'https://schema.org/Genetic',
4230 + 'geriatric.specialty' => 'https://schema.org/Geriatric',
4231 + 'gynecologic.specialty' => 'https://schema.org/Gynecologic',
4232 + 'hematologic.specialty' => 'https://schema.org/Hematologic',
4233 + 'infectious.specialty' => 'https://schema.org/Infectious',
4234 + 'laboratory.science.specialty' => 'https://schema.org/LaboratoryScience',
4235 + 'medical.specialty' => 'https://schema.org/MedicalSpecialty',
4236 + 'midwifery.specialty' => 'https://schema.org/Midwifery',
4237 + 'musculoskeletal.specialty' => 'https://schema.org/Musculoskeletal',
4238 + 'neurologic.specialty' => 'https://schema.org/Neurologic',
4239 + 'nursing.specialty' => 'https://schema.org/Nursing',
4240 + 'obstetric.specialty' => 'https://schema.org/Obstetric',
4241 + 'occupational.therapy.specialty' => 'https://schema.org/OccupationalTherapy',
4242 + 'oncologic.specialty' => 'https://schema.org/Oncologic',
4243 + 'optometric.specialty' => 'https://schema.org/Optometric',
4244 + 'otolaryngologic.specialty' => 'https://schema.org/Otolaryngologic',
4245 + 'pathology.specialty' => 'https://schema.org/Pathology',
4246 + 'pediatric.specialty' => 'https://schema.org/Pediatric',
4247 + 'pharmacy.specialty' => 'https://schema.org/PharmacySpecialty',
4248 + 'physiotherapy.specialty' => 'https://schema.org/Physiotherapy',
4249 + 'plastic.surgery.specialty' => 'https://schema.org/PlasticSurgery',
4250 + 'podiatric.specialty' => 'https://schema.org/Podiatric',
4251 + 'primary.care.specialty' => 'https://schema.org/PrimaryCare',
4252 + 'psychiatric.specialty' => 'https://schema.org/Psychiatric',
4253 + 'public.health.specialty' => 'https://schema.org/PublicHealth',
4254 + 'pulmonary.specialty' => 'https://schema.org/Pulmonary',
4255 + 'radiography.specialty' => 'https://schema.org/Radiography',
4256 + 'renal.specialty' => 'https://schema.org/Renal',
4257 + 'respiratory.therapy.specialty' => 'https://schema.org/RespiratoryTherapy',
4258 + 'rheumatologic.specialty' => 'https://schema.org/Rheumatologic',
4259 + 'speech.pathology.specialty' => 'https://schema.org/SpeechPathology',
4260 + 'surgical.specialty' => 'https://schema.org/Surgical',
4261 + 'toxicologic.specialty' => 'https://schema.org/Toxicologic',
4262 + 'urologic.specialty' => 'https://schema.org/Urologic',
4263 + ),
4264 + 'medicine.system' => array(
4265 + 'ayurvedic.system' => 'https://schema.org/Ayurvedic',
4266 + 'chiropractic.system' => 'https://schema.org/Chiropractic',
4267 + 'homeopathic.system' => 'https://schema.org/Homeopathic',
4268 + 'medicine.system' => 'https://schema.org/MedicineSystem',
4269 + 'osteopathic.system' => 'https://schema.org/Osteopathic',
4270 + 'traditional.chinese.system' => 'https://schema.org/TraditionalChinese',
4271 + 'western.conventional.system' => 'https://schema.org/WesternConventional',
4272 + ),
4273 + ),
4274 + 'music.album.production.type' => 'https://schema.org/MusicAlbumProductionType',
4275 + 'music.album.release.type' => 'https://schema.org/MusicAlbumReleaseType',
4276 + 'music.release.format.type' => 'https://schema.org/MusicReleaseFormatType',
4277 + 'offer.item.condition' => 'https://schema.org/OfferItemCondition',
4278 + 'order.status' => 'https://schema.org/OrderStatus',
4279 + 'payment.method' => array(
4280 + 'payment.card' => array(
4281 + 'credit.card' => 'https://schema.org/CreditCard',
4282 + 'payment.card' => 'https://schema.org/PaymentCard',
4283 + ),
4284 + 'payment.method' => 'https://schema.org/PaymentMethod',
4285 + ),
4286 + 'payment.status.type' => 'https://schema.org/PaymentStatusType',
4287 + 'qualitative.value' => 'https://schema.org/QualitativeValue',
4288 + 'reservation.status.type' => 'https://schema.org/ReservationStatusType',
4289 + 'restricted.diet' => 'https://schema.org/RestrictedDiet',
4290 + 'rsvp.response.type' => 'https://schema.org/RsvpResponseType',
4291 + 'specialty' => array(
4292 + // 'medical.specialty' array added by WpssoSchema::add_schema_type_xrefs().
4293 + 'specialty' => 'https://schema.org/Specialty',
4294 + ),
4295 + 'warranty.scope' => 'https://schema.org/WarrantyScope',
4296 + ),
4297 + 'game.server' => 'https://schema.org/GameServer',
4298 + 'intangible' => 'https://schema.org/Intangible',
4299 + 'invoice' => 'https://schema.org/Invoice',
4300 + 'item.list' => array(
4301 + 'breadcrumb.list' => 'https://schema.org/BreadcrumbList',
4302 + 'howto.section' => 'https://schema.org/HowToSection',
4303 + 'howto.step' => 'https://schema.org/HowToStep',
4304 + 'item.list' => 'https://schema.org/ItemList',
4305 + 'offer.catalog' => 'https://schema.org/OfferCatalog',
4306 + ),
4307 + 'job.posting' => 'https://schema.org/JobPosting',
4308 + 'language' => 'https://schema.org/Language',
4309 + 'list.item' => array(
4310 + 'howto.direction' => 'https://schema.org/HowToDirection',
4311 + 'howto.item' => array(
4312 + 'howto.item' => 'https://schema.org/HowToItem',
4313 + 'howto.supply' => 'https://schema.org/HowToSupply',
4314 + 'howto.tool' => 'https://schema.org/HowToTool',
4315 + ),
4316 + 'howto.section' => 'https://schema.org/HowToSection',
4317 + 'howto.step' => 'https://schema.org/HowToStep',
4318 + 'howto.tip' => 'https://schema.org/HowToTip',
4319 + 'list.item' => 'https://schema.org/ListItem',
4320 + ),
4321 + 'menu.item' => 'https://schema.org/MenuItem',
4322 + 'offer' => array(
4323 + 'offer' => 'https://schema.org/Offer',
4324 + 'offer.aggregate' => 'https://schema.org/AggregateOffer',
4325 + ),
4326 + 'order' => 'https://schema.org/Order',
4327 + 'order.item' => 'https://schema.org/OrderItem',
4328 + 'parcel.delivery' => 'https://schema.org/ParcelDelivery',
4329 + 'permit' => 'https://schema.org/Permit',
4330 + 'program.membership' => 'https://schema.org/ProgramMembership',
4331 + 'property.value.specification' => 'https://schema.org/PropertyValueSpecification',
4332 + 'quantity' => 'https://schema.org/Quantity',
4333 + 'rating' => array(
4334 + 'rating' => 'https://schema.org/Rating',
4335 + 'rating.aggregate' => 'https://schema.org/AggregateRating',
4336 + ),
4337 + 'reservation' => 'https://schema.org/Reservation',
4338 + 'role' => 'https://schema.org/Role',
4339 + 'seat' => 'https://schema.org/Seat',
4340 +
4341 + /*
4342 + * A service provided by an organization, e.g. delivery service, print services, etc.
4343 + */
4344 + 'service' => array(
4345 + 'service' => 'https://schema.org/Service',
4346 + 'service.broadcast' => array(
4347 + 'service.broadcast' => 'https://schema.org/BroadcastService',
4348 + 'service.broadcast.radio' => 'https://schema.org/RadioBroadcastService',
4349 + ),
4350 + 'service.cable.or.satellite' => 'https://schema.org/CableOrSatelliteService',
4351 + 'service.financial.product' => array(
4352 + 'bank.account' => array(
4353 + 'bank.account' => 'https://schema.org/BankAccount',
4354 + 'deposit.account' => 'https://schema.org/DepositAccount',
4355 + ),
4356 + 'service.currency.conversion' => 'https://schema.org/CurrencyConversionService',
4357 + 'service.financial.product' => 'https://schema.org/FinancialProduct',
4358 + 'service.investment.or.deposit' => array(
4359 + 'brokerage.account' => 'https://schema.org/BrokerageAccount',
4360 + 'deposit.account' => 'https://schema.org/DepositAccount',
4361 + 'service.investment.or.deposit' => 'https://schema.org/InvestmentOrDeposit',
4362 + 'service.investment.fund' => 'https://schema.org/InvestmentFund',
4363 + ),
4364 + 'service.loan.or.credit' => array(
4365 + 'credit.card' => 'https://schema.org/CreditCard',
4366 + 'mortgage.loan' => 'https://schema.org/MortgageLoan',
4367 + 'service.loan.or.credit' => 'https://schema.org/LoanOrCredit',
4368 + ),
4369 + // 'payment.card' array added by WpssoSchema::add_schema_type_xrefs().
4370 + 'service.payment' => 'https://schema.org/PaymentService',
4371 + ),
4372 + 'service.food' => 'https://schema.org/FoodService',
4373 + 'service.government' => 'https://schema.org/GovernmentService',
4374 + 'service.taxi' => 'https://schema.org/TaxiService',
4375 + 'service.webapi' => 'https://schema.org/WebAPI',
4376 + ),
4377 + 'service.channel' => 'https://schema.org/ServiceChannel',
4378 + 'structured.value' => array(
4379 + 'cdc.pmd.record' => 'https://schema.org/CDCPMDRecord',
4380 + 'contact.point' => array(
4381 + 'contact.point' => 'https://schema.org/ContactPoint',
4382 + 'postal.address' => 'https://schema.org/PostalAddress',
4383 + ),
4384 + 'defined.region' => 'https://schema.org/DefinedRegion',
4385 + 'engine.specification' => 'https://schema.org/EngineSpecification',
4386 + 'exchange.rate.specification' => 'https://schema.org/ExchangeRateSpecification',
4387 + 'geo.coordinates' => 'https://schema.org/GeoCoordinates',
4388 + 'geo.shape' => array(
4389 + 'geo.circle' => 'https://schema.org/GeoCircle',
4390 + 'geo.shape' => 'https://schema.org/GeoShape',
4391 + ),
4392 + 'interaction.counter' => 'https://schema.org/InteractionCounter',
4393 + 'monetary.amount' => 'https://schema.org/MonetaryAmount',
4394 + 'nutrition.information' => 'https://schema.org/NutritionInformation',
4395 + 'offer.shipping.details' => 'https://schema.org/OfferShippingDetails',
4396 + 'opening.hours.specification' => 'https://schema.org/OpeningHoursSpecification',
4397 + 'ownership.info' => 'https://schema.org/OwnershipInfo',
4398 + 'postal.code.range.specification' => 'https://schema.org/PostalCodeRangeSpecification',
4399 + 'price.specification' => 'https://schema.org/PriceSpecification',
4400 + 'property.value' => 'https://schema.org/PropertyValue',
4401 + 'quantitative.value' => 'https://schema.org/QuantitativeValue',
4402 + 'quantitative.value.distribution' => 'https://schema.org/QuantitativeValueDistribution',
4403 + 'repayment.specification' => 'https://schema.org/RepaymentSpecification',
4404 + 'service.period' => 'https://schema.org/ServicePeriod',
4405 + 'shipping.conditions' => 'https://schema.org/ShippingConditions',
4406 + 'shipping.delivery.time' => 'https://schema.org/ShippingDeliveryTime',
4407 + 'Shipping.rate.settings' => 'https://schema.org/ShippingRateSettings',
4408 + 'Shipping.service' => 'https://schema.org/ShippingService',
4409 + 'structured.value' => 'https://schema.org/StructuredValue',
4410 + 'type.and.quantity.node' => 'https://schema.org/TypeAndQuantityNode',
4411 + 'warranty.promise' => 'https://schema.org/WarrantyPromise',
4412 + ),
4413 + 'ticket' => 'https://schema.org/Ticket',
4414 + 'trip' => array(
4415 + 'trip' => 'https://schema.org/Trip',
4416 + 'trip.bus' => 'https://schema.org/BusTrip',
4417 + 'trip.flight' => 'https://schema.org/Flight',
4418 + 'trip.train' => 'https://schema.org/TrainTrip',
4419 + 'trip.tourist' => 'https://schema.org/TouristTrip',
4420 + ),
4421 + 'virtual.location' => 'https://schema.org/VirtualLocation',
4422 + ),
4423 + 'medical.entity' => array(
4424 + 'medical.anatomical.structure' => 'https://schema.org/AnatomicalStructure',
4425 + 'medical.anatomical.systems' => 'https://schema.org/AnatomicalSystem',
4426 + 'medical.cause' => 'https://schema.org/MedicalCause',
4427 + 'medical.condition' => array(
4428 + 'medical.condition' => 'https://schema.org/MedicalCondition',
4429 + 'medical.infectious.disease' => 'https://schema.org/InfectiousDisease',
4430 + 'medical.sign.or.symptom' => array(
4431 + 'medical.sign.or.symptom' => 'https://schema.org/MedicalSignOrSymptom',
4432 + 'medical.sign' => array(
4433 + 'medical.sign' => 'https://schema.org/MedicalSign',
4434 + 'medical.sign.vital' => 'https://schema.org/MedicalVitalSign',
4435 + ),
4436 + 'medical.symptom' => 'https://schema.org/MedicalSymptom',
4437 + ),
4438 + ),
4439 + 'medical.contraindication' => 'https://schema.org/MedicalContraindication',
4440 + 'medical.device' => 'https://schema.org/MedicalDevice',
4441 + 'medical.entity' => 'https://schema.org/MedicalEntity',
4442 + 'medical.guideline' => 'https://schema.org/MedicalGuideline',
4443 + 'medical.indication' => 'https://schema.org/MedicalIndication',
4444 + 'medical.intangible' => 'https://schema.org/MedicalIntangible',
4445 + 'medical.lifestyle.modifications' => 'https://schema.org/LifestyleModification',
4446 + 'medical.procedure' => 'https://schema.org/MedicalProcedure',
4447 + 'medical.risk.estimator' => 'https://schema.org/MedicalRiskEstimator',
4448 + 'medical.risk.factor' => 'https://schema.org/MedicalRiskFactor',
4449 + 'medical.study' => 'https://schema.org/MedicalStudy',
4450 + 'medical.substance' => 'https://schema.org/Substance',
4451 + 'medical.superficial.anatomy' => 'https://schema.org/SuperficialAnatomy',
4452 + 'medical.test' => 'https://schema.org/MedicalTest',
4453 + ),
4454 + 'organization' => array(
4455 + 'airline' => 'https://schema.org/Airline',
4456 + 'consortium' => 'https://schema.org/Consortium',
4457 + 'corporation' => 'https://schema.org/Corporation',
4458 + // 'educational.organization' array added by WpssoSchema::add_schema_type_xrefs().
4459 + 'funding.scheme' => 'https://schema.org/FundingScheme',
4460 + 'government.organization' => 'https://schema.org/GovernmentOrganization',
4461 + 'library.system' => 'https://schema.org/LibrarySystem',
4462 + // 'local.business' array added by WpssoSchema::add_schema_type_xrefs().
4463 + 'medical.organization' => array(
4464 + 'dentist.organization' => 'https://schema.org/Dentist',
4465 + 'diagnostic.lab.organization' => 'https://schema.org/DiagnosticLab',
4466 + 'hospital' => 'https://schema.org/Hospital',
4467 + 'medical.clinic' => array(
4468 + 'medical.clinic' => 'https://schema.org/MedicalClinic',
4469 + 'covid.testing.facility' => 'https://schema.org/CovidTestingFacility',
4470 + ),
4471 + 'pharmacy.organization' => 'https://schema.org/Pharmacy',
4472 + 'physician.organization' => 'https://schema.org/Physician',
4473 + 'veterinary.care' => 'https://schema.org/VeterinaryCare',
4474 + ),
4475 + 'non-governmental.organization' => 'https://schema.org/NGO',
4476 + 'news.media.organization' => 'https://schema.org/NewsMediaOrganization',
4477 + 'online.business' => array(
4478 + 'online.business' => 'https://schema.org/OnlineBusiness',
4479 + 'online.store' => 'https://schema.org/OnlineStore',
4480 + ),
4481 + 'organization' => 'https://schema.org/Organization',
4482 + 'performing.group' => array(
4483 + 'dance.group' => 'https://schema.org/DanceGroup',
4484 + 'music.group' => 'https://schema.org/MusicGroup',
4485 + 'performing.group' => 'https://schema.org/PerformingGroup',
4486 + 'theater.group' => 'https://schema.org/TheaterGroup',
4487 + ),
4488 + 'project' => array(
4489 + 'funding.agency' => 'https://schema.org/FundingAgency',
4490 + 'project' => 'https://schema.org/Project',
4491 + 'research.project' => 'https://schema.org/ResearchProject',
4492 + ),
4493 + 'research.organization' => 'https://schema.org/ResearchOrganization',
4494 + 'search.rescue.organization' => 'https://schema.org/SearchRescueOrganization',
4495 + 'sports.organization' => array(
4496 + 'sports.team' => 'https://schema.org/SportsTeam',
4497 + 'sports.organization' => 'https://schema.org/SportsOrganization',
4498 + ),
4499 + 'workers.union' => 'https://schema.org/WorkersUnion',
4500 + ),
4501 + 'person' => 'https://schema.org/Person',
4502 + 'place' => array(
4503 + 'accommodation' => array(
4504 + 'accommodation' => 'https://schema.org/Accommodation',
4505 + 'apartment' => 'https://schema.org/Apartment',
4506 + 'camping.pitch' => 'https://schema.org/CampingPitch',
4507 + 'house' => array(
4508 + 'house' => 'https://schema.org/House',
4509 + 'house.single.family' => 'https://schema.org/SingleFamilyResidence',
4510 + ),
4511 + 'room' => array(
4512 + 'room' => 'https://schema.org/Room',
4513 + 'room.hotel' => 'https://schema.org/HotelRoom',
4514 + 'room.meeting' => 'https://schema.org/MeetingRoom',
4515 + ),
4516 + 'suite' => 'https://schema.org/Suite',
4517 + ),
4518 + 'administrative.area' => array(
4519 + 'administrative.area' => 'https://schema.org/AdministrativeArea',
4520 + 'city' => 'https://schema.org/City',
4521 + 'country' => 'https://schema.org/Country',
4522 + 'state' => 'https://schema.org/State',
4523 + ),
4524 + 'civic.structure' => array(
4525 + 'airport' => 'https://schema.org/Airport',
4526 + 'aquarium' => 'https://schema.org/Aquarium',
4527 + 'beach' => 'https://schema.org/Beach',
4528 + 'boat.terminal' => 'https://schema.org/BoatTerminal',
4529 + 'bridge' => 'https://schema.org/Bridge',
4530 + 'bus.station' => 'https://schema.org/BusStation',
4531 + 'bus.stop' => 'https://schema.org/BusStop',
4532 + 'campground' => 'https://schema.org/Campground',
4533 + 'cemetary' => 'https://schema.org/Cemetery',
4534 + 'civic.structure' => 'https://schema.org/CivicStructure',
4535 + 'crematorium' => 'https://schema.org/Crematorium',
4536 + 'educational.organization' => array(
4537 + 'college.or.university' => 'https://schema.org/CollegeOrUniversity',
4538 + 'educational.organization' => 'https://schema.org/EducationalOrganization',
4539 + 'elementary.school' => 'https://schema.org/ElementarySchool',
4540 + 'high.school' => 'https://schema.org/HighSchool',
4541 + 'middle.school' => 'https://schema.org/MiddleSchool',
4542 + 'preschool' => 'https://schema.org/Preschool',
4543 + 'school' => 'https://schema.org/School',
4544 + ),
4545 + 'event.venue' => 'https://schema.org/EventVenue',
4546 + 'fire.station' => 'https://schema.org/FireStation',
4547 + 'government.building' => 'https://schema.org/GovernmentBuilding',
4548 + 'hospital' => 'https://schema.org/Hospital',
4549 + 'movie.theater' => 'https://schema.org/MovieTheater',
4550 + 'museum' => 'https://schema.org/Museum',
4551 + 'music.venue' => 'https://schema.org/MusicVenue',
4552 + 'park' => 'https://schema.org/Park',
4553 + 'parking.facility' => 'https://schema.org/ParkingFacility',
4554 + 'performing.arts.theatre' => 'https://schema.org/PerformingArtsTheater',
4555 + 'place.of.worship' => 'https://schema.org/PlaceOfWorship',
4556 + 'playground' => 'https://schema.org/Playground',
4557 + 'rv.park' => 'https://schema.org/RVPark',
4558 + 'police.station' => 'https://schema.org/PoliceStation',
4559 + 'public.toilet' => 'https://schema.org/PublicToilet',
4560 + 'stadium.or.arena' => 'https://schema.org/StadiumOrArena',
4561 + 'subway.station' => 'https://schema.org/SubwayStation',
4562 + 'taxi.stand' => 'https://schema.org/TaxiStand',
4563 + 'train.station' => 'https://schema.org/TrainStation',
4564 + 'zoo' => 'https://schema.org/Zoo',
4565 + ),
4566 + 'landform' => 'https://schema.org/Landform',
4567 + 'landmarks.or.historical.buildings' => 'https://schema.org/LandmarksOrHistoricalBuildings',
4568 + 'local.business' => array(
4569 + 'animal.shelter' => 'https://schema.org/AnimalShelter',
4570 + 'automotive.business' => array(
4571 + 'auto.body.shop' => 'https://schema.org/AutoBodyShop',
4572 + 'auto.dealer' => 'https://schema.org/AutoDealer',
4573 + 'auto.parts.store' => 'https://schema.org/AutoPartsStore',
4574 + 'auto.rental' => 'https://schema.org/AutoRental',
4575 + 'auto.repair' => 'https://schema.org/AutoRepair',
4576 + 'auto.wash' => 'https://schema.org/AutoWash',
4577 + 'automotive.business' => 'https://schema.org/AutomotiveBusiness',
4578 + 'gas.station' => 'https://schema.org/GasStation',
4579 + 'motorcycle.dealer' => 'https://schema.org/MotorcycleDealer',
4580 + 'motorcycle.repair' => 'https://schema.org/MotorcycleRepair',
4581 + ),
4582 + 'child.care' => 'https://schema.org/ChildCare',
4583 + 'dentist.organization' => 'https://schema.org/Dentist',
4584 + 'dry.cleaning.or.laundry' => 'https://schema.org/DryCleaningOrLaundry',
4585 + 'emergency.service' => array(
4586 + 'emergency.service' => 'https://schema.org/EmergencyService',
4587 + 'fire.station' => 'https://schema.org/FireStation',
4588 + 'hospital' => 'https://schema.org/Hospital',
4589 + 'police.station' => 'https://schema.org/PoliceStation',
4590 + ),
4591 + 'employment.agency' => 'https://schema.org/EmploymentAgency',
4592 + 'entertainment.business' => array(
4593 + 'adult.entertainment' => 'https://schema.org/AdultEntertainment',
4594 + 'amusement.park' => 'https://schema.org/AmusementPark',
4595 + 'art.gallery' => 'https://schema.org/ArtGallery',
4596 + 'casino' => 'https://schema.org/Casino',
4597 + 'comedy.club' => 'https://schema.org/ComedyClub',
4598 + 'entertainment.business' => 'https://schema.org/EntertainmentBusiness',
4599 + 'movie.theater' => 'https://schema.org/MovieTheater',
4600 + 'night.club' => 'https://schema.org/NightClub',
4601 + ),
4602 + 'financial.service' => 'https://schema.org/FinancialService',
4603 + 'food.establishment' => array(
4604 + 'bakery' => 'https://schema.org/Bakery',
4605 + 'bar.or.pub' => 'https://schema.org/BarOrPub',
4606 + 'brewery' => 'https://schema.org/Brewery',
4607 + 'cafe.or.coffee.shop' => 'https://schema.org/CafeOrCoffeeShop',
4608 + 'fast.food.restaurant' => 'https://schema.org/FastFoodRestaurant',
4609 + 'food.establishment' => 'https://schema.org/FoodEstablishment',
4610 + 'ice.cream.shop' => 'https://schema.org/IceCreamShop',
4611 + 'restaurant' => 'https://schema.org/Restaurant',
4612 + 'winery' => 'https://schema.org/Winery',
4613 + ),
4614 + 'government.office' => 'https://schema.org/GovernmentOffice',
4615 + 'health.and.beauty.business' => array(
4616 + 'beauty.salon' => 'https://schema.org/BeautySalon',
4617 + 'day.spa' => 'https://schema.org/DaySpa',
4618 + 'health.and.beauty.business' => 'https://schema.org/HealthAndBeautyBusiness',
4619 + 'hair.salon' => 'https://schema.org/HairSalon',
4620 + 'health.club' => 'https://schema.org/HealthClub',
4621 + 'nail.salon' => 'https://schema.org/NailSalon',
4622 + 'tattoo.parlor' => 'https://schema.org/TattooParlor',
4623 + ),
4624 + 'home.and.construction.business' => array(
4625 + 'electrician' => 'https://schema.org/Electrician',
4626 + 'general.contractor' => 'https://schema.org/GeneralContractor',
4627 + 'hvac.business' => 'https://schema.org/HVACBusiness',
4628 + 'home.and.construction.business' => 'https://schema.org/HomeAndConstructionBusiness',
4629 + 'house.painter' => 'https://schema.org/HousePainter',
4630 + 'locksmith' => 'https://schema.org/Locksmith',
4631 + 'moving.company' => 'https://schema.org/MovingCompany',
4632 + 'plumber' => 'https://schema.org/Plumber',
4633 + 'roofing.contractor' => 'https://schema.org/RoofingContractor',
4634 + ),
4635 + 'internet.cafe' => 'https://schema.org/InternetCafe',
4636 + 'legal.service' => array(
4637 + 'attorney' => 'https://schema.org/Attorney',
4638 + 'legal.service' => 'https://schema.org/LegalService',
4639 + 'notary' => 'https://schema.org/Notary',
4640 + ),
4641 + 'library' => 'https://schema.org/Library',
4642 + 'local.business' => 'https://schema.org/LocalBusiness',
4643 + 'lodging.business' => array(
4644 + 'bed.and.breakfast' => 'https://schema.org/BedAndBreakfast',
4645 + 'campground' => 'https://schema.org/Campground',
4646 + 'lodging.business' => 'https://schema.org/LodgingBusiness',
4647 + 'hostel' => 'https://schema.org/Hostel',
4648 + 'hotel' => 'https://schema.org/Hotel',
4649 + 'motel' => 'https://schema.org/Motel',
4650 + 'resort' => 'https://schema.org/Resort',
4651 + ),
4652 + 'medical.business' => array(
4653 + 'community.health.business' => 'https://schema.org/CommunityHealth',
4654 + 'dentist.business' => 'https://schema.org/Dentist',
4655 + 'dermatology.business' => 'https://schema.org/Dermatology',
4656 + 'diet.nutrition.business' => 'https://schema.org/DietNutrition',
4657 + 'emergency.business' => 'https://schema.org/Emergency',
4658 + 'geriatric.business' => 'https://schema.org/Geriatric',
4659 + 'gynecologic.business' => 'https://schema.org/Gynecologic',
4660 + 'medical.business' => 'https://schema.org/MedicalBusiness',
4661 + 'medical.clinic' => array(
4662 + 'medical.clinic' => 'https://schema.org/MedicalClinic',
4663 + 'covid.testing.facility' => 'https://schema.org/CovidTestingFacility',
4664 + ),
4665 + 'midwifery.business' => 'https://schema.org/Midwifery',
4666 + 'nursing.business' => 'https://schema.org/Nursing',
4667 + 'obstetric.business' => 'https://schema.org/Obstetric',
4668 + 'oncologic.business' => 'https://schema.org/Oncologic',
4669 + 'optician.business' => 'https://schema.org/Optician',
4670 + 'optometric.business' => 'https://schema.org/Optometric',
4671 + 'otolaryngologic.business' => 'https://schema.org/Otolaryngologic',
4672 + 'pediatric.business' => 'https://schema.org/Pediatric',
4673 + 'pharmacy.business' => 'https://schema.org/Pharmacy',
4674 + 'physician.business' => 'https://schema.org/Physician',
4675 + 'physiotherapy.business' => 'https://schema.org/Physiotherapy',
4676 + 'plastic.surgery.business' => 'https://schema.org/PlasticSurgery',
4677 + 'podiatric.business' => 'https://schema.org/Podiatric',
4678 + 'primary.care.business' => 'https://schema.org/PrimaryCare',
4679 + 'psychiatric.business' => 'https://schema.org/Psychiatric',
4680 + 'public.health.business' => 'https://schema.org/PublicHealth',
4681 + ),
4682 + 'professional.service' => 'https://schema.org/ProfessionalService',
4683 + 'radio.station' => 'https://schema.org/RadioStation',
4684 + 'real.estate.agent' => 'https://schema.org/RealEstateAgent',
4685 + 'recycling.center' => 'https://schema.org/RecyclingCenter',
4686 + 'self.storage' => 'https://schema.org/SelfStorage',
4687 + 'shopping.center' => 'https://schema.org/ShoppingCenter',
4688 + 'sports.activity.location' => array(
4689 + 'sports.activity.location' => 'https://schema.org/SportsActivityLocation',
4690 + 'stadium.or.arena' => 'https://schema.org/StadiumOrArena',
4691 + ),
4692 + 'store' => array(
4693 + 'auto.parts.store' => 'https://schema.org/AutoPartsStore',
4694 + 'bike.store' => 'https://schema.org/BikeStore',
4695 + 'book.store' => 'https://schema.org/BookStore',
4696 + 'clothing.store' => 'https://schema.org/ClothingStore',
4697 + 'computer.store' => 'https://schema.org/ComputerStore',
4698 + 'convenience.store' => 'https://schema.org/ConvenienceStore',
4699 + 'department.store' => 'https://schema.org/DepartmentStore',
4700 + 'electronics.store' => 'https://schema.org/ElectronicsStore',
4701 + 'florist' => 'https://schema.org/Florist',
4702 + 'flower.shop' => 'https://schema.org/Florist',
4703 + 'furniture.store' => 'https://schema.org/FurnitureStore',
4704 + 'garden.store' => 'https://schema.org/GardenStore',
4705 + 'grocery.store' => 'https://schema.org/GroceryStore',
4706 + 'hardware.store' => 'https://schema.org/HardwareStore',
4707 + 'hobby.shop' => 'https://schema.org/HobbyShop',
4708 + 'home.goods.store' => 'https://schema.org/HomeGoodsStore',
4709 + 'jewelry.store' => 'https://schema.org/JewelryStore',
4710 + 'liquor.store' => 'https://schema.org/LiquorStore',
4711 + 'mens.clothing.store' => 'https://schema.org/MensClothingStore',
4712 + 'mobile.phone.store' => 'https://schema.org/MobilePhoneStore',
4713 + 'movie.rental.store' => 'https://schema.org/MovieRentalStore',
4714 + 'music.store' => 'https://schema.org/MusicStore',
4715 + 'office.equipment.store' => 'https://schema.org/OfficeEquipmentStore',
4716 + 'outlet.store' => 'https://schema.org/OutletStore',
4717 + 'pawn.shop' => 'https://schema.org/PawnShop',
4718 + 'pet.store' => 'https://schema.org/PetStore',
4719 + 'shoe.store' => 'https://schema.org/ShoeStore',
4720 + 'sporting.goods.store' => 'https://schema.org/SportingGoodsStore',
4721 + 'store' => 'https://schema.org/Store',
4722 + 'tire.shop' => 'https://schema.org/TireShop',
4723 + 'toy.store' => 'https://schema.org/ToyStore',
4724 + 'wholesale.store' => 'https://schema.org/WholesaleStore',
4725 + ),
4726 + 'television.station' => 'https://schema.org/TelevisionStation',
4727 + 'tourist.information.center' => 'https://schema.org/TouristInformationCenter',
4728 + 'travel.agency' => 'https://schema.org/TravelAgency',
4729 + ),
4730 + 'place' => 'https://schema.org/Place',
4731 + 'residence' => array(
4732 + 'residence' => 'https://schema.org/Residence',
4733 + 'residence.apartment.complex' => 'https://schema.org/ApartmentComplex',
4734 + 'residence.gated.community' => 'https://schema.org/GatedResidenceCommunity',
4735 + ),
4736 + 'tourist.attraction' => 'https://schema.org/TouristAttraction',
4737 + 'tourist.destination' => 'https://schema.org/TouristDestination',
4738 + ),
4739 + 'product' => array(
4740 + 'individual.product' => 'https://schema.org/IndividualProduct', // Individual product with unique serial number.
4741 + 'product' => 'https://schema.org/Product',
4742 + 'product.group' => 'https://schema.org/ProductGroup',
4743 + 'product.model' => 'https://schema.org/ProductModel',
4744 + 'some.products' => 'https://schema.org/SomeProducts',
4745 + 'vehicle' => array(
4746 + 'bus.or.coach' => 'https://auto.schema.org/BusOrCoach',
4747 + 'car' => 'https://auto.schema.org/Car',
4748 + 'motorcycle' => 'https://auto.schema.org/Motorcycle',
4749 + 'motorized.bicycle' => 'https://auto.schema.org/MotorizedBicycle',
4750 + 'vehicle' => 'https://auto.schema.org/Vehicle',
4751 + ),
4752 + ),
4753 + 'thing' => 'https://schema.org/Thing',
4754 + ),
4755 + ), // End of 'schema_type' array.
4756 + 'schema_renamed' => array( // Element of 'head' array.
4757 + 'anesthesia' => 'anesthesia.specialty',
4758 + 'cardiovascular' => 'cardiovascular.specialty',
4759 + 'community.health' => 'community.health.specialty',
4760 + 'dentist' => 'dentist.organization',
4761 + 'dentistry' => 'dentistry.specialty',
4762 + 'dermatologic' => 'dermatologic.specialty',
4763 + 'dermatology' => 'dermatology.specialty',
4764 + 'diet.nutrition' => 'diet.nutrition.specialty',
4765 + 'emergency' => 'emergency.specialty',
4766 + 'endocrine' => 'endocrine.specialty',
4767 + 'event.venu' => 'event.venue',
4768 + 'gastroenterologic' => 'gastroenterologic.specialty',
4769 + 'genetic' => 'genetic.specialty',
4770 + 'geriatric' => 'geriatric.specialty',
4771 + 'gynecologic' => 'gynecologic.specialty',
4772 + 'hematologic' => 'hematologic.specialty',
4773 + 'how.to' => 'howto',
4774 + 'infectious' => 'infectious.specialty',
4775 + 'laboratory.science' => 'laboratory.science.specialty',
4776 + 'medical.clinic.business' => 'medical.clinic',
4777 + 'medical.audience' => 'audience.medical',
4778 + 'midwifery' => 'midwifery.specialty',
4779 + 'movie.theatre' => 'movie.theater',
4780 + 'musculoskeletal' => 'musculoskeletal.specialty',
4781 + 'music.venu' => 'music.venue',
4782 + 'neurologic' => 'neurologic.specialty',
4783 + 'nursing' => 'nursing.specialty',
4784 + 'obstetric' => 'obstetric.specialty',
4785 + 'occupational.therapy' => 'occupational.therapy.specialty',
4786 + 'oncologic' => 'oncologic.specialty',
4787 + 'optometric' => 'optometric.specialty',
4788 + 'otolaryngologic' => 'otolaryngologic.specialty',
4789 + 'pathology' => 'pathology.specialty',
4790 + 'pediatric' => 'pediatric.specialty',
4791 + 'pharmacy' => 'pharmacy.organization',
4792 + 'physician' => 'physician.organization',
4793 + 'physiotherapy' => 'physiotherapy.specialty',
4794 + 'plastic.surgery' => 'plastic.surgery.specialty',
4795 + 'podiatric' => 'podiatric.specialty',
4796 + 'primary.care' => 'primary.care.specialty',
4797 + 'psychiatric' => 'psychiatric.specialty',
4798 + 'public.health' => 'public.health.specialty',
4799 + 'pulmonary' => 'pulmonary.specialty',
4800 + 'radiography' => 'radiography.specialty',
4801 + 'renal' => 'renal.specialty',
4802 + 'respiratory.therapy' => 'respiratory.therapy.specialty',
4803 + 'rheumatologic' => 'rheumatologic.specialty',
4804 + 'service.bank.account' => 'bank.account',
4805 + 'service.credit.card' => 'credit.card',
4806 + 'service.deposit.account' => 'deposit.account',
4807 + 'residence.single.family' => 'house.single.family',
4808 + 'speech.pathology' => 'speech.pathology.specialty',
4809 + 'surgical' => 'surgical.specialty',
4810 + 'toxicologic' => 'toxicologic.specialty',
4811 + 'train.trip' => 'trip.train',
4812 + 'urologic' => 'urologic.specialty',
4813 + ),
4814 +
4815 + /*
4816 + * See http://wiki.goodrelations-vocabulary.org/Documentation/UN/CEFACT_Common_Codes.
4817 + */
4818 + 'schema_units' => array( // Element of 'head' array.
4819 + 'fluid_volume' => array( // Unitcode index value.
4820 + 'additionalProperty' => array( // Schema property name.
4821 + '@context' => 'https://schema.org',
4822 + '@type' => 'PropertyValue',
4823 + 'propertyID' => 'fluid_volume',
4824 + 'name' => 'Fluid Volume',
4825 + 'unitText' => 'ml',
4826 + 'unitCode' => 'MLT',
4827 + ),
4828 + ),
4829 + 'height' => array( // Unitcode index value.
4830 + 'height' => array( // Schema property name.
4831 + '@context' => 'https://schema.org',
4832 + '@type' => 'QuantitativeValue',
4833 + 'name' => 'Height',
4834 + 'unitText' => 'cm',
4835 + 'unitCode' => 'CMT',
4836 + ),
4837 + ),
4838 + 'height_px' => array( // Unitcode index value.
4839 + 'height' => array( // Schema property name.
4840 + '@context' => 'https://schema.org',
4841 + '@type' => 'QuantitativeValue',
4842 + 'name' => 'Height',
4843 + 'unitText' => 'px',
4844 + 'unitCode' => 'E37',
4845 + ),
4846 + ),
4847 + 'length' => array( // Unitcode index value.
4848 + 'depth' => array( // Schema property name.
4849 + '@context' => 'https://schema.org',
4850 + '@type' => 'QuantitativeValue',
4851 + 'name' => 'Length or Depth',
4852 + 'unitText' => 'cm',
4853 + 'unitCode' => 'CMT',
4854 + ),
4855 + ),
4856 + 'size' => array( // Unitcode index value.
4857 + 'additionalProperty' => array( // Schema property name.
4858 + '@context' => 'https://schema.org',
4859 + '@type' => 'PropertyValue',
4860 + 'propertyID' => 'size',
4861 + 'name' => 'Size',
4862 + ),
4863 + ),
4864 + 'weight' => array( // Unitcode index value.
4865 + 'weight' => array( // Schema property name.
4866 + '@context' => 'https://schema.org',
4867 + '@type' => 'QuantitativeValue',
4868 + 'name' => 'Weight',
4869 + 'unitText' => 'kg',
4870 + 'unitCode' => 'KGM',
4871 + ),
4872 + ),
4873 + 'width' => array( // Unitcode index value.
4874 + 'width' => array( // Schema property name.
4875 + '@context' => 'https://schema.org',
4876 + '@type' => 'QuantitativeValue',
4877 + 'name' => 'Width',
4878 + 'unitText' => 'cm',
4879 + 'unitCode' => 'CMT',
4880 + ),
4881 + ),
4882 + 'width_px' => array( // Unitcode index value.
4883 + 'width' => array( // Schema property name.
4884 + '@context' => 'https://schema.org',
4885 + '@type' => 'QuantitativeValue',
4886 + 'name' => 'Width',
4887 + 'unitText' => 'px',
4888 + 'unitCode' => 'E37',
4889 + ),
4890 + ),
4891 + ),
4892 +
4893 + /*
4894 + * See https://developers.google.com/search/docs/appearance/structured-data/review-snippet.
4895 + *
4896 + * Google allows the 'aggregateRating' property only for these types:
4897 + *
4898 + * Book
4899 + * Course
4900 + * Event
4901 + * HowTo (includes Recipe)
4902 + * LocalBusiness
4903 + * Movie
4904 + * Product
4905 + * SoftwareApplication
4906 + *
4907 + * Google allows the 'review' property only for these types:
4908 + *
4909 + * Book
4910 + * Course
4911 + * CreativeWorkSeason
4912 + * CreativeWorkSeries
4913 + * Episode
4914 + * Event
4915 + * Game
4916 + * HowTo (includes Recipe)
4917 + * LocalBusiness
4918 + * MediaObject
4919 + * Movie
4920 + * MusicPlaylist
4921 + * MusicRecording
4922 + * Organization
4923 + * Product
4924 + * SoftwareApplication
4925 + */
4926 + 'schema_aggregate_rating_parents' => array( // Element of 'head' array.
4927 + 'book',
4928 + 'course',
4929 + 'event',
4930 + 'howto',
4931 + 'local.business',
4932 + 'movie',
4933 + 'product',
4934 + 'software.application',
4935 + ),
4936 + 'schema_review_parents' => array( // Element of 'head' array.
4937 + 'book',
4938 + 'course',
4939 + 'creative.work.season',
4940 + 'creative.work.series',
4941 + 'episode',
4942 + 'event',
4943 + 'game',
4944 + 'howto',
4945 + 'local.business',
4946 + 'media.object',
4947 + 'movie',
4948 + 'music.playlist',
4949 + 'music.recording',
4950 + 'organization',
4951 + 'product',
4952 + 'software.application',
4953 + ),
4954 +
4955 + /*
4956 + * Good Relations.
4957 + */
4958 + 'schema_gr' => array( // Element of 'head' array.
4959 + 'DeliveryMethod' => array(
4960 + 'Download' => 'http://purl.org/goodrelations/v1#DeliveryModeDirectDownload',
4961 + 'Freight' => 'http://purl.org/goodrelations/v1#DeliveryModeFreight',
4962 + 'Mail' => 'http://purl.org/goodrelations/v1#DeliveryModeMail',
4963 + 'Fleet' => 'http://purl.org/goodrelations/v1#DeliveryModeOwnFleet',
4964 + 'PickUp' => 'http://purl.org/goodrelations/v1#DeliveryModePickUp',
4965 + 'DHL' => 'http://purl.org/goodrelations/v1#DHL',
4966 + 'FedEx' => 'http://purl.org/goodrelations/v1#FederalExpress',
4967 + 'UPS' => 'http://purl.org/goodrelations/v1#UPS',
4968 + ),
4969 + ),
4970 + ), // End of 'head' array.
4971 + 'extend' => array(
4972 + 'https://wpsso.com/extend/plugins/',
4973 + ),
4974 + ); // End of 'cf' array.
4975 +
4976 + public static function get_version( $add_slug = false ) {
4977 +
4978 + $info = self::$cf[ 'plugin' ][ 'wpsso' ];
4979 +
4980 + return $add_slug ? $info[ 'slug' ] . '-' . $info[ 'version' ] : $info[ 'version' ];
4981 + }
4982 +
4983 + public static function get_config( $read_cache = true ) {
4984 +
4985 + if ( $read_cache ) {
4986 +
4987 + if ( ! empty( self::$cf[ 'config_filtered' ] ) ) { // Only if already filtered.
4988 +
4989 + return self::$cf;
4990 + }
4991 + }
4992 +
4993 + self::$cf[ '*' ] = array(
4994 + 'base' => array(),
4995 + 'lib' => array(
4996 + 'pro' => array(),
4997 + 'std' => array(),
4998 + ),
4999 + 'version' => '',
5000 + );
5001 +
5002 + self::$cf[ 'opt' ][ 'version' ] = '';
5003 +
5004 + self::$cf[ 'config_filtered' ] = false;
5005 +
5006 + /*
5007 + * Wpsso->__construct() calls WpssoConfig::get_config() before WpssoConfig::set_constants(), which defines
5008 + * 'WPSSO_VERSION', so use 'WPSSO_VERSION' as a signal to skip applying filters until later.
5009 + */
5010 + if ( ! defined( 'WPSSO_VERSION' ) ) {
5011 +
5012 + return self::$cf;
5013 + }
5014 +
5015 + /*
5016 + * Apply filters to have add-ons include their config.
5017 + */
5018 + if ( empty( self::$cf[ 'config_filtered' ] ) ) {
5019 +
5020 + self::$cf = apply_filters( 'wpsso_get_config', self::$cf );
5021 + }
5022 +
5023 + self::$cf[ 'config_filtered' ] = true;
5024 +
5025 + $pro_disable = defined( 'WPSSO_PRO_DISABLE' ) && WPSSO_PRO_DISABLE ? true : false;
5026 +
5027 + foreach ( self::$cf[ 'plugin' ] as $ext => $info ) {
5028 +
5029 + $pkg_dir = 'std';
5030 +
5031 + if ( ! $pro_disable ) {
5032 +
5033 + $ext_dir = self::get_ext_dir( $ext, $read_cache );
5034 +
5035 + if ( is_dir( $ext_dir . 'lib/pro/' ) ) {
5036 +
5037 + $pkg_dir = 'pro';
5038 + }
5039 + }
5040 +
5041 + if ( isset( $info[ 'slug' ] ) ) {
5042 +
5043 + self::$cf[ '*' ][ 'slug' ][ $info[ 'slug' ] ] = $ext;
5044 + }
5045 +
5046 + if ( isset( $info[ 'base' ] ) ) {
5047 +
5048 + self::$cf[ '*' ][ 'base' ][ $info[ 'base' ] ] = $ext;
5049 + }
5050 +
5051 + if ( isset( $info[ 'lib' ] ) && is_array( $info[ 'lib' ] ) ) {
5052 +
5053 + self::$cf[ '*' ][ 'lib' ] = SucomUtil::array_merge_recursive_distinct( self::$cf[ '*' ][ 'lib' ], $info[ 'lib' ] );
5054 + }
5055 +
5056 + if ( isset( $info[ 'version' ] ) ) {
5057 +
5058 + self::$cf[ '*' ][ 'version' ] .= '-' . $ext . $info[ 'version' ] . $pkg_dir;
5059 + }
5060 +
5061 + if ( isset( $info[ 'opt_version' ] ) ) {
5062 +
5063 + self::$cf[ 'opt' ][ 'version' ] .= '-' . $ext . $info[ 'opt_version' ] . $pkg_dir;
5064 + }
5065 +
5066 + /*
5067 + * Maybe complete relative paths in the assets array.
5068 + */
5069 + if ( ! empty( $info[ 'base' ] ) ) { // Just in case.
5070 +
5071 + /*
5072 + * Returns a plugin base URL like 'https://wpsso.com/wp-content/plugins/wpsso/'.
5073 + */
5074 + $plugins_url_base = trailingslashit( plugins_url( '', $info[ 'base' ] ) );
5075 +
5076 + array_walk_recursive( self::$cf[ 'plugin' ][ $ext ][ 'assets' ], array( __CLASS__, 'maybe_prefix_base_url' ), $plugins_url_base );
5077 + }
5078 + }
5079 +
5080 + return self::$cf;
5081 + }
5082 +
5083 + private static function maybe_prefix_base_url( &$url, $key, $plugins_url_base ) {
5084 +
5085 + if ( ! empty( $url ) && false === strpos( $url, '//' ) ) {
5086 +
5087 + $url = $plugins_url_base . $url;
5088 + }
5089 + }
5090 +
5091 + public static function set_constants( $plugin_file ) {
5092 +
5093 + if ( defined( 'WPSSO_VERSION' ) ) { // Define constants only once.
5094 +
5095 + return;
5096 + }
5097 +
5098 + $info =& self::$cf[ 'plugin' ][ 'wpsso' ];
5099 +
5100 + $nonce_key = defined( 'NONCE_KEY' ) ? NONCE_KEY : '';
5101 +
5102 + /*
5103 + * Define fixed constants.
5104 + */
5105 + define( 'WPSSO_DATA_ID', 'wpsso structured data' );
5106 + define( 'WPSSO_FILEPATH', $plugin_file );
5107 + define( 'WPSSO_NONCE_NAME', md5( $nonce_key . var_export( $info, $return = true ) ) );
5108 + define( 'WPSSO_PLUGINBASE', $info[ 'base' ] ); // Example: wpsso/wpsso.php.
5109 + define( 'WPSSO_PLUGINDIR', trailingslashit( realpath( dirname( $plugin_file ) ) ) );
5110 + define( 'WPSSO_PLUGINSLUG', $info[ 'slug' ] ); // Example: wpsso.
5111 + define( 'WPSSO_UNDEF', -1 ); // Default undefined image width / height value.
5112 + define( 'WPSSO_URLPATH', trailingslashit( plugins_url( '', $plugin_file ) ) );
5113 + define( 'WPSSO_VERSION', $info[ 'version' ] );
5114 +
5115 + define( 'WPSSO_INIT_CONFIG_PRIORITY', -10 );
5116 + define( 'WPSSO_INIT_OPTIONS_PRIORITY', 9 );
5117 + define( 'WPSSO_INIT_OBJECTS_PRIORITY', 10 );
5118 + define( 'WPSSO_INIT_JSON_FILTERS_PRIORITY', 11 );
5119 + define( 'WPSSO_INIT_SHORTCODES_PRIORITY', 11 );
5120 + define( 'WPSSO_INIT_PLUGIN_PRIORITY', 12 );
5121 +
5122 + /*
5123 + * Define variable constants.
5124 + */
5125 + self::set_variable_constants();
5126 + }
5127 +
5128 + public static function set_variable_constants( $var_const = null ) {
5129 +
5130 + if ( ! is_array( $var_const ) ) {
5131 +
5132 + $var_const = self::get_variable_constants();
5133 + }
5134 +
5135 + /*
5136 + * Define the variable constants, if not already defined.
5137 + */
5138 + foreach ( $var_const as $name => $value ) {
5139 +
5140 + if ( ! defined( $name ) ) {
5141 +
5142 + define( $name, $value );
5143 + }
5144 + }
5145 + }
5146 +
5147 + public static function get_variable_constants() {
5148 +
5149 + $var_const = array();
5150 +
5151 + if ( defined( 'WPSSO_PLUGINDIR' ) ) {
5152 +
5153 + $var_const[ 'WPSSO_ARTICLE_SECTIONS_LIST' ] = WPSSO_PLUGINDIR . 'share/article-sections.txt';
5154 + $var_const[ 'WPSSO_PRODUCT_CATEGORIES_LIST' ] = WPSSO_PLUGINDIR . 'share/product-categories.txt';
5155 + }
5156 +
5157 + /*
5158 + * MENU_ORDER (aka menu_position):
5159 + *
5160 + * null – below Comments
5161 + * 5 – below Posts
5162 + * 10 – below Media
5163 + * 15 – below Links
5164 + * 20 – below Pages
5165 + * 25 – below comments
5166 + * 60 – below first separator
5167 + * 65 – below Plugins
5168 + * 70 – below Users
5169 + * 75 – below Tools
5170 + * 80 – below Settings
5171 + * 100 – below second separator
5172 + */
5173 + $var_const[ 'WPSSO_MENU_ORDER' ] = 85; // Position of the SSO settings menu item.
5174 + $var_const[ 'WPSSO_TB_NOTICE_MENU_ORDER' ] = 55; // Position of the SSO notices toolbar menu item.
5175 + $var_const[ 'WPSSO_TB_NOTICE_TIME_ERR' ] = 3000; // Show notification (-1 don't show, 0 show until clicked, ms to auto-show).
5176 + $var_const[ 'WPSSO_TB_NOTICE_TIME_WARN' ] = -1; // Show notification (-1 don't show, 0 show until clicked, ms to auto-show).
5177 + $var_const[ 'WPSSO_TB_NOTICE_TIME_INF' ] = -1; // Show notification (-1 don't show, 0 show until clicked, ms to auto-show).
5178 + $var_const[ 'WPSSO_TB_NOTICE_TIME_UPD' ] = 2000; // Show notification (-1 don't show, 0 show until clicked, ms to auto-show).
5179 + $var_const[ 'WPSSO_TB_LOCALE_MENU_ORDER' ] = 56; // Position of the user locale toolbar menu item.
5180 + $var_const[ 'WPSSO_TB_VALIDATE_MENU_ORDER' ] = 57; // Position of the validate menu item.
5181 + $var_const[ 'WPSSO_TB_VIEW_PROFILE_MENU_ORDER' ] = 80; // Position of the view profile menu item.
5182 + $var_const[ 'WPSSO_ADD_ROLE_MAX_TIME' ] = 300; // 5 minutes.
5183 + $var_const[ 'WPSSO_REMOVE_ROLE_MAX_TIME' ] = 300; // 5 minutes.
5184 + $var_const[ 'WPSSO_CACHE_ARRAY_FIFO_MAX' ] = 8;
5185 + $var_const[ 'WPSSO_CACHE_DIR' ] = self::get_cache_dir();
5186 + $var_const[ 'WPSSO_CACHE_FILES_EXP_SECS' ] = WEEK_IN_SECONDS; // See WpssoUtilCache->clear_cache_files_expired().
5187 + $var_const[ 'WPSSO_CACHE_REFRESH_MAX_TIME' ] = 1800; // 30 mins by default.
5188 + $var_const[ 'WPSSO_CACHE_SELECT_JSON_EXP_SECS' ] = WEEK_IN_SECONDS; // JS URLs for Schema types, article sections, and product categories.
5189 + $var_const[ 'WPSSO_CACHE_URL' ] = self::get_cache_url();
5190 + $var_const[ 'WPSSO_CONTENT_BLOCK_FILTER_OUTPUT' ] = true; // Monitor and fix incorrectly coded filter hooks.
5191 + $var_const[ 'WPSSO_CONTENT_FILTERS_MAX_TIME' ] = 1.50; // Issue a warning if the content filter takes longer than 1 second.
5192 + $var_const[ 'WPSSO_CONTENT_IMAGES_MAX' ] = 5; // Maximum number of images extracted from the content.
5193 + $var_const[ 'WPSSO_DUPE_CHECK_HEADER_COUNT' ] = 3; // Maximum number of times to check for duplicates.
5194 + $var_const[ 'WPSSO_DUPE_CHECK_TIMEOUT_TIME' ] = 3.00; // Hard-limit - most crawlers time-out after 3 seconds.
5195 + $var_const[ 'WPSSO_DUPE_CHECK_WARNING_TIME' ] = 2.50; // Issue a warning if getting shortlink took more than 2.5 seconds.
5196 + $var_const[ 'WPSSO_IMAGE_MAKE_SIZE_MAX_TIME' ] = 5.00; // Error to trigger_error() if image_make_intermediate_size() takes longer.
5197 + $var_const[ 'WPSSO_METABOX_TAB_LAYOUT' ] = 'vertical'; // Default tab layout (vertical or horizontal).
5198 + $var_const[ 'WPSSO_PHP_GETIMGSIZE_MAX_TIME' ] = 3.00; // Send an error to trigger_error() if getimagesize() takes longer.
5199 + $var_const[ 'WPSSO_READING_WORDS_PER_MIN' ] = 200; // Estimated reading words per minute.
5200 + $var_const[ 'WPSSO_SCHEDULE_SINGLE_EVENT_TIME' ] = 10; // Schedule single events for now + 10 seconds.
5201 + $var_const[ 'WPSSO_SELECT_PERSON_NAMES_MAX' ] = 200; // Maximum number of persons to include in a form select.
5202 +
5203 + /*
5204 + * Schema limits.
5205 + */
5206 + $var_const[ 'WPSSO_SCHEMA_ADDL_TYPE_URL_MAX' ] = 8;
5207 + $var_const[ 'WPSSO_SCHEMA_SERVICE_AREAS_MAX' ] = 5;
5208 + $var_const[ 'WPSSO_SCHEMA_AWARDS_MAX' ] = 5;
5209 + $var_const[ 'WPSSO_SCHEMA_CITATIONS_MAX' ] = 5;
5210 + $var_const[ 'WPSSO_SCHEMA_COMMENTS_MAX' ] = 50; // Maximum number of comments when "Break comments into pages" is unchecked.
5211 + $var_const[ 'WPSSO_SCHEMA_CONTACT_POINTS_MAX' ] = 5;
5212 + $var_const[ 'WPSSO_SCHEMA_HOWTO_STEPS_MAX' ] = 40;
5213 + $var_const[ 'WPSSO_SCHEMA_HOWTO_SUPPLIES_MAX' ] = 30;
5214 + $var_const[ 'WPSSO_SCHEMA_HOWTO_TOOLS_MAX' ] = 20;
5215 + $var_const[ 'WPSSO_SCHEMA_ISPARTOF_URLS_MAX' ] = 10;
5216 + $var_const[ 'WPSSO_SCHEMA_METADATA_OFFERS_MAX' ] = 5;
5217 + $var_const[ 'WPSSO_SCHEMA_MOVIE_ACTORS_MAX' ] = 10;
5218 + $var_const[ 'WPSSO_SCHEMA_MOVIE_DIRECTORS_MAX' ] = 5;
5219 + $var_const[ 'WPSSO_SCHEMA_OFFER_CATALOGS_MAX' ] = 5;
5220 + $var_const[ 'WPSSO_SCHEMA_ORGANIZATION_TYPE_ID' ] = 'organization';
5221 + $var_const[ 'WPSSO_SCHEMA_RECIPE_INGREDIENTS_MAX' ] = 40;
5222 + $var_const[ 'WPSSO_SCHEMA_RECIPE_INSTRUCTIONS_MAX' ] = 40;
5223 + $var_const[ 'WPSSO_SCHEMA_REVIEWS_MAX' ] = 100;
5224 + $var_const[ 'WPSSO_SCHEMA_SAMEAS_URLS_MAX' ] = 5;
5225 + $var_const[ 'WPSSO_SCHEMA_WEBPAGE_REVIEWED_BY_MAX' ] = 5;
5226 +
5227 + /*
5228 + * Setting and meta array names.
5229 + */
5230 + $var_const[ 'WPSSO_DISMISS_NAME' ] = 'wpsso_dismissed';
5231 + $var_const[ 'WPSSO_NOTICES_NAME' ] = 'wpsso_notices';
5232 + $var_const[ 'WPSSO_META_NAME' ] = '_wpsso_meta';
5233 + $var_const[ 'WPSSO_META_ATTACHED_NAME' ] = '_wpsso_meta_attached';
5234 + $var_const[ 'WPSSO_META_RATING_NAME' ] = 'rating';
5235 + $var_const[ 'WPSSO_PREF_NAME' ] = '_wpsso_pref';
5236 + $var_const[ 'WPSSO_OPTIONS_NAME' ] = 'wpsso_options';
5237 + $var_const[ 'WPSSO_REG_TS_NAME' ] = 'wpsso_timestamps';
5238 + $var_const[ 'WPSSO_SITE_OPTIONS_NAME' ] = 'wpsso_site_options';
5239 + $var_const[ 'WPSSO_POST_CHECK_COUNT_NAME' ] = 'wpsso_post_check_count';
5240 + $var_const[ 'WPSSO_TMPL_HEAD_CHECK_NAME' ] = 'wpsso_tmpl_head_check';
5241 + $var_const[ 'WPSSO_WP_CONFIG_CHECK_NAME' ] = 'wpsso_wp_config_check';
5242 + $var_const[ 'WPSSO_PAGE_TAG_TAXONOMY' ] = 'page_tag';
5243 +
5244 + /*
5245 + * Hook priorities.
5246 + */
5247 + $var_const[ 'WPSSO_ADD_MENU_PRIORITY' ] = -20; // 'admin_menu' hook priority.
5248 + $var_const[ 'WPSSO_ADD_SUBMENU_PRIORITY' ] = -10; // 'admin_menu' hook priority.
5249 + $var_const[ 'WPSSO_ADD_COLUMN_PRIORITY' ] = 100;
5250 + $var_const[ 'WPSSO_ADMIN_SCRIPTS_PRIORITY' ] = -1000; // 'admin_enqueue_scripts' hook priority.
5251 + $var_const[ 'WPSSO_BLOCK_ASSETS_PRIORITY' ] = -1000; // 'enqueue_block_editor_assets' hook priority.
5252 + $var_const[ 'WPSSO_HEAD_PRIORITY' ] = -10;
5253 + $var_const[ 'WPSSO_META_SAVE_PRIORITY' ] = -1000; // Save custom post/term/user meta before clearing the cache.
5254 + $var_const[ 'WPSSO_META_CLEAR_PRIORITY' ] = -100; // Clear cache before priority 10 (where most caching plugins are hooked).
5255 + $var_const[ 'WPSSO_META_REFRESH_PRIORITY' ] = -10; // Refresh cache before priority 10 (where most caching plugins are hooked).
5256 + $var_const[ 'WPSSO_TITLE_TAG_PRIORITY' ] = 1000; // Priority for the WordPress 'document_title' filters.
5257 +
5258 + /*
5259 + * PHP cURL library settings.
5260 + */
5261 + $var_const[ 'WPSSO_PHP_CURL_CAINFO' ] = ABSPATH . WPINC . '/certificates/ca-bundle.crt';
5262 + $var_const[ 'WPSSO_PHP_CURL_USERAGENT' ] = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:128.0) Gecko/20100101 Firefox/128.0';
5263 + $var_const[ 'WPSSO_PHP_CURL_USERAGENT_FACEBOOK' ] = 'facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)';
5264 +
5265 + /*
5266 + * Maybe override the default constant value with a pre-defined constant value.
5267 + */
5268 + foreach ( $var_const as $name => $value ) {
5269 +
5270 + if ( defined( $name ) ) {
5271 +
5272 + $var_const[ $name ] = constant( $name );
5273 + }
5274 + }
5275 +
5276 + return $var_const;
5277 + }
5278 +
5279 + /*
5280 + * Load all essential library files.
5281 + *
5282 + * Avoid calling is_admin() here as it can be unreliable this early in the load process - some plugins that operate
5283 + * outside of the standard WordPress load process do not define WP_ADMIN as they should (which is required by
5284 + * is_admin() this early in the WordPress load process).
5285 + */
5286 + public static function require_libs( $plugin_file ) {
5287 +
5288 + require_once WPSSO_PLUGINDIR . 'lib/com/cache.php';
5289 + require_once WPSSO_PLUGINDIR . 'lib/com/nodebug.php'; // Always load the debug fallback class.
5290 + require_once WPSSO_PLUGINDIR . 'lib/com/nonotice.php'; // Always load the notice fallback class.
5291 + require_once WPSSO_PLUGINDIR . 'lib/com/plugin.php';
5292 + require_once WPSSO_PLUGINDIR . 'lib/com/util.php';
5293 + require_once WPSSO_PLUGINDIR . 'lib/com/util-options.php';
5294 + require_once WPSSO_PLUGINDIR . 'lib/com/util-wp.php';
5295 +
5296 + require_once WPSSO_PLUGINDIR . 'lib/check.php';
5297 + require_once WPSSO_PLUGINDIR . 'lib/exception.php'; // Extends ErrorException.
5298 + require_once WPSSO_PLUGINDIR . 'lib/functions.php';
5299 + require_once WPSSO_PLUGINDIR . 'lib/head.php';
5300 + require_once WPSSO_PLUGINDIR . 'lib/media.php';
5301 + require_once WPSSO_PLUGINDIR . 'lib/options.php';
5302 + require_once WPSSO_PLUGINDIR . 'lib/page.php';
5303 + require_once WPSSO_PLUGINDIR . 'lib/register.php';
5304 + require_once WPSSO_PLUGINDIR . 'lib/script.php';
5305 + require_once WPSSO_PLUGINDIR . 'lib/style.php';
5306 + require_once WPSSO_PLUGINDIR . 'lib/util.php'; // Extends SucomUtil.
5307 +
5308 + /*
5309 + * Comment, post, term, user modules.
5310 + */
5311 + require_once WPSSO_PLUGINDIR . 'lib/abstract/wp-meta.php';
5312 + require_once WPSSO_PLUGINDIR . 'lib/comment.php'; // Extends WpssoAbstractWpMeta.
5313 + require_once WPSSO_PLUGINDIR . 'lib/post.php'; // Extends WpssoAbstractWpMeta.
5314 + require_once WPSSO_PLUGINDIR . 'lib/term.php'; // Extends WpssoAbstractWpMeta.
5315 + require_once WPSSO_PLUGINDIR . 'lib/user.php'; // Extends WpssoAbstractWpMeta.
5316 +
5317 + /*
5318 + * Meta tags and markup.
5319 + */
5320 + require_once WPSSO_PLUGINDIR . 'lib/link-rel.php';
5321 + require_once WPSSO_PLUGINDIR . 'lib/meta-name.php';
5322 + require_once WPSSO_PLUGINDIR . 'lib/oembed.php';
5323 + require_once WPSSO_PLUGINDIR . 'lib/opengraph.php';
5324 + require_once WPSSO_PLUGINDIR . 'lib/pinterest.php';
5325 + require_once WPSSO_PLUGINDIR . 'lib/schema.php';
5326 + require_once WPSSO_PLUGINDIR . 'lib/twittercard.php';
5327 +
5328 + /*
5329 + * Module library loader.
5330 + */
5331 + require_once WPSSO_PLUGINDIR . 'lib/loader.php';
5332 +
5333 + /*
5334 + * Add-ons library.
5335 + */
5336 + require_once WPSSO_PLUGINDIR . 'lib/abstract/add-on.php';
5337 +
5338 + add_filter( 'wpsso_load_lib', array( __CLASS__, 'load_lib' ), 10, 3 );
5339 + }
5340 +
5341 + public static function load_lib( $success = false, $filespec = '', $classname = '' ) {
5342 +
5343 + if ( false !== $success ) {
5344 +
5345 + return $success;
5346 + }
5347 +
5348 + if ( ! empty( $classname ) ) {
5349 +
5350 + if ( class_exists( $classname ) ) {
5351 +
5352 + return $classname;
5353 + }
5354 + }
5355 +
5356 + if ( ! empty( $filespec ) ) {
5357 +
5358 + $file_path = WPSSO_PLUGINDIR . 'lib/' . $filespec . '.php';
5359 +
5360 + if ( file_exists( $file_path ) ) {
5361 +
5362 + require_once $file_path;
5363 +
5364 + if ( empty( $classname ) ) {
5365 +
5366 + return SucomUtil::sanitize_classname( 'wpsso' . $filespec, $allow_underscore = false );
5367 + }
5368 +
5369 + return $classname;
5370 + }
5371 + }
5372 +
5373 + return $success;
5374 + }
5375 +
5376 + public static function get_cache_dir() {
5377 +
5378 + if ( defined( 'WPSSO_CACHE_DIR' ) ) {
5379 +
5380 + return WPSSO_CACHE_DIR;
5381 + }
5382 +
5383 + if ( defined( 'WP_CONTENT_DIR' ) ) {
5384 +
5385 + $content_dir = trailingslashit( WP_CONTENT_DIR );
5386 +
5387 + if ( self::is_cache_dir( $content_dir . 'cache/wpsso/' ) ) {
5388 +
5389 + return $content_dir . 'cache/wpsso/';
5390 + }
5391 + }
5392 +
5393 + if ( defined( 'WPSSO_PLUGINDIR' ) ) {
5394 +
5395 + if ( self::is_cache_dir( WPSSO_PLUGINDIR . 'cache/' ) ) {
5396 +
5397 + return WPSSO_PLUGINDIR . 'cache/';
5398 + }
5399 + }
5400 +
5401 + return false;
5402 + }
5403 +
5404 + public static function get_cache_url() {
5405 +
5406 + if ( defined( 'WPSSO_CACHE_URL' ) ) {
5407 +
5408 + return WPSSO_CACHE_URL;
5409 + }
5410 +
5411 + if ( defined( 'WP_CONTENT_DIR' ) ) {
5412 +
5413 + $content_dir = trailingslashit( WP_CONTENT_DIR );
5414 +
5415 + if ( self::is_cache_dir( $content_dir . 'cache/wpsso/' ) ) {
5416 +
5417 + return content_url( 'cache/wpsso/' );
5418 + }
5419 + }
5420 +
5421 + if ( defined( 'WPSSO_PLUGINDIR' ) ) {
5422 +
5423 + if ( self::is_cache_dir( WPSSO_PLUGINDIR . 'cache/' ) ) {
5424 +
5425 + if ( defined( 'WPSSO_URLPATH' ) ) { // Just in case.
5426 +
5427 + return WPSSO_URLPATH . 'cache/';
5428 + }
5429 + }
5430 + }
5431 +
5432 + return false;
5433 + }
5434 +
5435 + private static function is_cache_dir( $dir ) {
5436 +
5437 + $dir = trailingslashit( $dir ); // Just in case.
5438 +
5439 + $index_file = $dir . 'index.php';
5440 + $access_file = $dir . '.htaccess';
5441 +
5442 + if ( file_exists( $index_file ) ) { // Assume directory permissions are good.
5443 +
5444 + return true;
5445 + }
5446 +
5447 + $index_str = '<?php // These aren\'t the droids you\'re looking for.' . "\n";
5448 + $access_str = '<FilesMatch "\.(php|pl|cgi|shtml)$">
5449 + # Apache 2.2
5450 + <IfModule !mod_authz_core.c>
5451 + Order deny,allow
5452 + Deny from all
5453 + </IfModule>
5454 + # Apache 2.4
5455 + <IfModule mod_authz_core.c>
5456 + Require all denied
5457 + </IfModule>
5458 +</FilesMatch>' . "\n";
5459 +
5460 + if ( is_dir( $dir ) || @mkdir( $dir, $mode = 0755, $recursive = true ) ) {
5461 +
5462 + if ( ( $index_fh = @fopen( $index_file, $mode = 'wb' ) ) &&
5463 + ( $access_fh = @fopen( $access_file, $mode = 'wb' ) ) ) {
5464 +
5465 + if ( @fwrite( $index_fh, $index_str ) && @fwrite( $access_fh, $access_str ) ) {
5466 +
5467 + fclose( $index_fh );
5468 + fclose( $access_fh );
5469 +
5470 + @chmod( $index_file, $mode = 0644 );
5471 + @chmod( $access_file, $mode = 0644 );
5472 +
5473 + return true;
5474 + }
5475 + }
5476 + }
5477 +
5478 + return false;
5479 + }
5480 +
5481 + /*
5482 + * Returns $cf[ 'plugin' ] with 'wpsso' as the first array element and all other plugins sorted by translated name.
5483 + */
5484 + public static function get_ext_sorted() {
5485 +
5486 + $cf = self::get_config();
5487 +
5488 + /*
5489 + * Sort the array by plugin name and maintain index association.
5490 + */
5491 + uasort( $cf[ 'plugin' ], array( __CLASS__, 'sort_plugin_by_name_key' ) );
5492 +
5493 + reset( $cf[ 'plugin' ] ); // Just in case.
5494 +
5495 + $first_key = key( $cf[ 'plugin' ] );
5496 +
5497 + /*
5498 + * Make sure the core plugin is listed first.
5499 + */
5500 + if ( 'wpsso' !== $first_key ) {
5501 +
5502 + SucomUtil::move_to_front( $cf[ 'plugin' ], 'wpsso' );
5503 + }
5504 +
5505 + return $cf[ 'plugin' ];
5506 + }
5507 +
5508 + /*
5509 + * Returns 'plugin' or 'add-on' translated string.
5510 + */
5511 + public static function get_ext_type_transl( $ext ) {
5512 +
5513 + return 'wpsso' === $ext ? _x( 'plugin', 'plugin type', 'wpsso' ) : _x( 'add-on', 'plugin type', 'wpsso' );
5514 + }
5515 +
5516 + public static function get_ext_text_domain( $ext ) {
5517 +
5518 + $cf = self::get_config();
5519 + $text_domain = false;
5520 +
5521 + if ( isset( $cf[ 'plugin' ][ $ext ][ 'text_domain' ] ) ) {
5522 +
5523 + $text_domain = $cf[ 'plugin' ][ $ext ][ 'text_domain' ];
5524 + }
5525 +
5526 + return $text_domain;
5527 + }
5528 +
5529 + /*
5530 + * Returns false or a slashed directory path.
5531 + */
5532 + public static function get_ext_dir( $ext, $read_cache = true ) {
5533 +
5534 + static $local_cache = array();
5535 +
5536 + if ( $read_cache ) {
5537 +
5538 + if ( isset( $local_cache[ $ext ] ) ) {
5539 +
5540 + return $local_cache[ $ext ];
5541 + }
5542 + }
5543 +
5544 + /*
5545 + * Check for active plugin constant first.
5546 + */
5547 + $ext_dir_const = strtoupper( $ext ) . '_PLUGINDIR';
5548 +
5549 + if ( defined( $ext_dir_const ) && is_dir( $ext_dir = constant( $ext_dir_const ) ) ) {
5550 +
5551 + return $local_cache[ $ext ] = trailingslashit( $ext_dir );
5552 + }
5553 +
5554 + /*
5555 + * Fallback to checking for inactive plugin folder.
5556 + */
5557 + $cf = self::get_config();
5558 +
5559 + if ( isset( $cf[ 'plugin' ][ $ext ][ 'slug' ] ) ) {
5560 +
5561 + $slug = $cf[ 'plugin' ][ $ext ][ 'slug' ];
5562 +
5563 + if ( defined ( 'WPMU_PLUGIN_DIR' ) && is_dir( $ext_dir = trailingslashit( WPMU_PLUGIN_DIR ) . $slug . '/' ) ) {
5564 +
5565 + return $local_cache[ $ext ] = $ext_dir;
5566 + }
5567 +
5568 + if ( defined ( 'WP_PLUGIN_DIR' ) && is_dir( $ext_dir = trailingslashit( WP_PLUGIN_DIR ) . $slug . '/' ) ) {
5569 +
5570 + return $local_cache[ $ext ] = $ext_dir;
5571 + }
5572 + }
5573 +
5574 + return $local_cache[ $ext ] = false;
5575 + }
5576 +
5577 + /*
5578 + * Returns false, a slashed directory path, or the file name path.
5579 + *
5580 + * Use $file_is_dir = true when specifically checking for a sub-folder path.
5581 + */
5582 + public static function get_ext_file_path( $ext, $rel_file, $file_is_dir = false ) {
5583 +
5584 + $file_path = false;
5585 +
5586 + if ( $ext_dir = self::get_ext_dir( $ext ) ) { // Returns false or a slashed directory path.
5587 +
5588 + $rel_file = SucomUtil::sanitize_file_path( $rel_file );
5589 +
5590 + if ( $file_is_dir ) { // Must be a directory.
5591 +
5592 + if ( is_dir( trailingslashit( $ext_dir . $rel_file ) ) ) {
5593 +
5594 + $file_path = trailingslashit( $ext_dir . $rel_file );
5595 + }
5596 +
5597 + } elseif ( file_exists( $ext_dir . $rel_file ) ) {
5598 +
5599 + $file_path = $ext_dir . $rel_file;
5600 + }
5601 + }
5602 +
5603 + return $file_path;
5604 + }
5605 +
5606 + public static function get_ext_file_url( $ext, $rel_file ) {
5607 +
5608 + $cf = self::get_config();
5609 +
5610 + $url_key = SucomUtil::sanitize_hookname( basename( $rel_file ) ); // Changes html/setup.html to setup_html (note underscore).
5611 +
5612 + $file_url = false;
5613 +
5614 + if ( isset( $cf[ 'plugin' ][ $ext ][ 'url' ][ $url_key ] ) ) {
5615 +
5616 + /*
5617 + * Returns URL or false on failure.
5618 + *
5619 + * See https://developer.wordpress.org/reference/functions/wp_http_validate_url/
5620 + */
5621 + $file_url = wp_http_validate_url( $cf[ 'plugin' ][ $ext ][ 'url' ][ $url_key ] );
5622 + }
5623 +
5624 + return $file_url;
5625 + }
5626 +
5627 + public static function get_schema_units() {
5628 +
5629 + static $local_cache = null;
5630 +
5631 + if ( null === $local_cache ) {
5632 +
5633 + $local_cache = apply_filters( 'wpsso_schema_units', self::$cf[ 'head' ][ 'schema_units' ] );
5634 + }
5635 +
5636 + return $local_cache;
5637 + }
5638 +
5639 + public static function get_social_accounts( $key = false ) {
5640 +
5641 + static $local_cache = null;
5642 +
5643 + if ( null === $local_cache ) {
5644 +
5645 + $local_cache = apply_filters( 'wpsso_social_accounts', self::$cf[ 'form' ][ 'social_accounts' ] );
5646 +
5647 + foreach ( $local_cache as $k => $label ) {
5648 +
5649 + $local_cache[ $k ] = _x( $label, 'option value', 'wpsso' );
5650 + }
5651 +
5652 + /*
5653 + * Sort the associative array by value (ie. the translated label).
5654 + */
5655 + method_exists( 'SucomUtil', 'natasort' ) ? SucomUtil::natasort( $local_cache ) : uasort( $local_cache, 'strnatcasecmp' );
5656 + }
5657 +
5658 + if ( false !== $key ) {
5659 +
5660 + if ( $key && is_string( $key ) ) {
5661 +
5662 + if ( isset( $local_cache[ $key ] ) ) { // Just in case.
5663 +
5664 + return $local_cache[ $key ];
5665 + }
5666 + }
5667 +
5668 + return null;
5669 + }
5670 +
5671 + return $local_cache;
5672 + }
5673 +
5674 + public static function get_input_limits( $opt_key = false ) {
5675 +
5676 + static $local_cache = null;
5677 +
5678 + if ( null === $local_cache ) {
5679 +
5680 + $local_cache = self::$cf[ 'form' ][ 'input_limits' ];
5681 +
5682 + foreach ( $local_cache as $key => $input_limits ) {
5683 +
5684 + $filter_name = SucomUtil::sanitize_hookname( 'wpsso_input_limits_' . $key );
5685 +
5686 + $local_cache[ $key ] = apply_filters( $filter_name, $input_limits );
5687 + }
5688 + }
5689 +
5690 + if ( false !== $opt_key ) {
5691 +
5692 + if ( $opt_key && is_string( $opt_key ) ) {
5693 +
5694 + if ( isset( $local_cache[ $opt_key ] ) ) {
5695 +
5696 + return $local_cache[ $opt_key ];
5697 + }
5698 + }
5699 +
5700 + return null;
5701 + }
5702 +
5703 + return $local_cache;
5704 + }
5705 +
5706 + /*
5707 + * Provides a key index for attributes to meta data options.
5708 + *
5709 + * Returns false or an options key.
5710 + */
5711 + public static function get_attr_md_index( $md_key = false ) {
5712 +
5713 + return self::get_opt_md_info( $md_index = 'attr_md_index', $md_key );
5714 + }
5715 +
5716 + /*
5717 + * Provides a key index for custom fields to meta data options.
5718 + *
5719 + * Returns false or an options key.
5720 + */
5721 + public static function get_cf_md_index( $md_key = false ) {
5722 +
5723 + return self::get_opt_md_info( $md_index = 'cf_md_index', $md_key );
5724 + }
5725 +
5726 + /*
5727 + * Provides information to help read and split custom field values into numbered options.
5728 + *
5729 + * Returns true, false, or an array.
5730 + */
5731 + public static function get_md_keys_multi( $md_key = false ) {
5732 +
5733 + return self::get_opt_md_info( $md_index = 'md_keys_multi', $md_key );
5734 + }
5735 +
5736 + /*
5737 + * Returns an array of metadata keys (can be empty).
5738 + *
5739 + * $md_key = true | false | string | array
5740 + */
5741 + public static function get_md_keys_fallback( $md_key = false ) {
5742 +
5743 + static $local_cache = null;
5744 +
5745 + if ( is_array( $md_key ) ) { // Just in case.
5746 +
5747 + return $md_key; // Return an array.
5748 +
5749 + } elseif ( null === $local_cache ) {
5750 +
5751 + $local_cache = self::$cf[ 'opt' ][ 'md_keys_fallback' ];
5752 +
5753 + foreach ( $local_cache as $key => $fallback ) {
5754 +
5755 + $filter_name = SucomUtil::sanitize_hookname( 'wpsso_md_keys_fallback_' . $key );
5756 +
5757 + $local_cache[ $key ] = apply_filters( $filter_name, $fallback );
5758 + }
5759 + }
5760 +
5761 + if ( false !== $md_key ) {
5762 +
5763 + if ( $md_key && is_string( $md_key ) ) {
5764 +
5765 + if ( isset( $local_cache[ $md_key ] ) ) {
5766 +
5767 + return $local_cache[ $md_key ]; // Return an array.
5768 + }
5769 +
5770 + return array( $md_key ); // Return an array.
5771 + }
5772 +
5773 + return array(); // Return an array.
5774 + }
5775 +
5776 + return $local_cache; // Return an array.
5777 + }
5778 +
5779 + /*
5780 + * Provides a key index for attributes and custom fields to meta data options.
5781 + *
5782 + * Provides information to help read and split attribute and custom field values into numbered options.
5783 + *
5784 + * Example $md_index values: 'attr_md_index', 'cf_md_index', or 'md_keys_multi'.
5785 + */
5786 + private static function get_opt_md_info( $md_index, $md_key = false ) {
5787 +
5788 + static $local_cache = array();
5789 +
5790 + if ( ! isset( $local_cache[ $md_index ] ) ) {
5791 +
5792 + $local_cache[ $md_index ] = isset( self::$cf[ 'opt' ][ $md_index ] ) ? self::$cf[ 'opt' ][ $md_index ] : array();
5793 +
5794 + /*
5795 + * See WpssoIntegRecipeWpRecipeMaker->filter_cf_md_index().
5796 + */
5797 + $local_cache[ $md_index ] = apply_filters( 'wpsso_' . $md_index, $local_cache[ $md_index ] );
5798 + }
5799 +
5800 + if ( false !== $md_key ) {
5801 +
5802 + if ( isset( $local_cache[ $md_index ][ $md_key ] ) ) {
5803 +
5804 + return $local_cache[ $md_index ][ $md_key ];
5805 + }
5806 +
5807 + return false;
5808 + }
5809 +
5810 + return $local_cache[ $md_index ];
5811 + }
5812 +
5813 + private static function sort_plugin_by_name_key( $a, $b ) {
5814 +
5815 + if ( isset( $a[ 'name' ] ) && isset( $b[ 'name' ] ) ) {
5816 +
5817 + $a[ 'name' ] = _x( $a[ 'name' ], 'plugin name', 'wpsso' );
5818 + $b[ 'name' ] = _x( $b[ 'name' ], 'plugin name', 'wpsso' );
5819 +
5820 + /*
5821 + * Case insensitive string comparisons using a "natural order" algorithm.
5822 + */
5823 + return strnatcasecmp( $a[ 'name' ], $b[ 'name' ] );
5824 + }
5825 +
5826 + return 0; // No change.
5827 + }
5828 + }
5829 +}