PluginProbe
ThinkRank AI SEO – AI SEO Plugin for WordPress: Schema, XML Sitemaps, Meta Tags, Search Console & Local SEO / 2.14.2
ThinkRank AI SEO – AI SEO Plugin for WordPress: Schema, XML Sitemaps, Meta Tags, Search Console & Local SEO v2.14.2
2.14.2 2.14.1 2.14.0 2.13.0 2.12.0 2.11.0 2.10.0 2.9.0 2.8.0 2.7.0 2.6.0 2.5.0 2.4.0 2.3.0 2.2.0 2.1.1 2.1.0 2.0.2 2.0.1 2.0.0 1.32.0 1.31.0 1.30.0 1.29.0 1.28.0 All 57 releases
← All changes | includes/seo/class-schema-validator.php +12 -3 1.30.0 → 2.14.2 View file →
@@ -80,10 +80,19 @@
80 80 return $validation;
81 81 }
82 82
83 83 $schema_type = $schema['@type'];
84 - $spec = $this->schema_factory->get_schema_specification($schema_type);
85 84
85 + // A LocalBusiness node carries the subtype the site chose ("Dentist"),
86 + // and none of the ~150 subtypes has a spec of its own. They all share
87 + // LocalBusiness's requirements, so validate against that rather than
88 + // reporting the site's own business type as unsupported.
89 + if (\ThinkRank\Config\Local_Business_Types_Config::is_local_business($schema_type)) {
90 + $schema_type = 'LocalBusiness';
91 + }
92 +
93 + $spec =$this->schema_factory->get_schema_specification($schema_type);
94 +
86 95 if (empty($spec)) {
87 96 $validation['errors'][] = "Unsupported schema type: {$schema_type}";
88 97 $validation['valid'] = false;
89 98 return $validation;
@@ -309,9 +318,9 @@
309 318
310 319 // Check for social media profiles - properly validate array
311 320 if (!isset($schema['sameAs']) || empty($schema['sameAs']) ||
312 321 (is_array($schema['sameAs']) && count(array_filter($schema['sameAs'], function($url) {
313 - return !empty($url) && filter_var($url, FILTER_VALIDATE_URL);
322 + return !empty($url) && \ThinkRank\Core\Url_Validator::is_valid($url);
314 323 })) === 0)) {
315 324 $validation['suggestions'][] = 'Social media profiles (sameAs) are recommended for organization schema - add Facebook, Twitter, LinkedIn, Instagram, or YouTube URLs.';
316 325 }
317 326
@@ -347,9 +356,9 @@
347 356
348 357 // Check for social media profiles - properly validate array
349 358 if (!isset($schema['sameAs']) || empty($schema['sameAs']) ||
350 359 (is_array($schema['sameAs']) && count(array_filter($schema['sameAs'], function($url) {
351 - return !empty($url) && filter_var($url, FILTER_VALIDATE_URL);
360 + return !empty($url) && \ThinkRank\Core\Url_Validator::is_valid($url);
352 361 })) === 0)) {
353 362 $validation['suggestions'][] = 'Social media profiles (sameAs) are recommended for local business schema.';
354 363 }
355 364