PluginProbe
ThinkRank AI SEO – AI SEO Plugin for WordPress: Schema, XML Sitemaps, Meta Tags, Search Console & Local SEO / 2.10.0
ThinkRank AI SEO – AI SEO Plugin for WordPress: Schema, XML Sitemaps, Meta Tags, Search Console & Local SEO v2.10.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 1.27.0 1.26.0 1.25.0 trunk 1.0.0 All 52 releases
← All changes | includes/seo/class-schema-factory.php +32 -0 2.3.0 → 2.10.0 View file →
@@ -86,8 +86,40 @@
86 86 'required' => ['@type', 'mainEntity'],
87 87 'recommended' => ['about', 'author'],
88 88 'optional' => ['name', 'description', 'url', 'dateModified']
89 89 ],
90 + // The WebPage family. Schema_Builder has had a `case 'WebPage'` branch
91 + // all along, but nothing here declared the type — so build_schema()
92 + // rejected it before the switch was ever reached, and that branch was
93 + // dead code. A customer asking for AboutPage and ContactPage is what
94 + // surfaced it (#624).
95 + //
96 + // Only the four the output side can actually emit as themselves.
97 + // ItemPage, QAPage and CollectionPage appear in
98 + // Schema_Graph::PAGE_LEVEL_TYPES but have no branch in
99 + // Global_SEO_Schema_Output::generate_schema(), so they fall to its
100 + // `default` arm and publish plain WebPage — offering a type that
101 + // silently emits a different one is worse than not offering it.
102 + 'WebPage' => [
103 + 'required' => ['@type', 'name'],
104 + 'recommended' => ['description', 'url', 'datePublished', 'dateModified'],
105 + 'optional' => ['image', 'breadcrumb', 'primaryImageOfPage', 'about', 'mainEntity']
106 + ],
107 + 'AboutPage' => [
108 + 'required' => ['@type', 'name'],
109 + 'recommended' => ['description', 'url', 'datePublished', 'dateModified'],
110 + 'optional' => ['image', 'breadcrumb', 'primaryImageOfPage', 'about', 'mainEntity']
111 + ],
112 + 'ContactPage' => [
113 + 'required' => ['@type', 'name'],
114 + 'recommended' => ['description', 'url', 'datePublished', 'dateModified'],
115 + 'optional' => ['image', 'breadcrumb', 'primaryImageOfPage', 'about', 'mainEntity']
116 + ],
117 + 'ProfilePage' => [
118 + 'required' => ['@type', 'name'],
119 + 'recommended' => ['description', 'url', 'datePublished', 'dateModified'],
120 + 'optional' => ['image', 'breadcrumb', 'primaryImageOfPage', 'about', 'mainEntity']
121 + ],
90 122 'LocalBusiness' => [
91 123 'required' => ['@type', 'name', 'address'],
92 124 'recommended' => ['telephone', 'url', 'openingHours', 'geo', 'priceRange'],
93 125 'optional' => ['description', 'logo', 'contactPoint', 'sameAs', 'paymentAccepted', 'currenciesAccepted']