PluginProbe
ThinkRank AI SEO – AI SEO Plugin for WordPress: Schema, XML Sitemaps, Meta Tags, Search Console & Local SEO / 2.9.0
ThinkRank AI SEO – AI SEO Plugin for WordPress: Schema, XML Sitemaps, Meta Tags, Search Console & Local SEO v2.9.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 1.0.1 All 51 releases
← All changes | includes/admin/importers/class-import-detector.php +31 -0 2.5.0 → 2.9.0 View file →
@@ -68,8 +68,16 @@
68 68 'meta_prefix' => '',
69 69 'option_keys' => ['aioseo_options'],
70 70 'plugin_files' => ['all-in-one-seo-pack/all_in_one_seo_pack.php', 'all-in-one-seo-pack-pro/all_in_one_seo_pack.php'],
71 71 ],
72 + 'squirrly' => [
73 + 'name' => 'Squirrly SEO',
74 + // Squirrly keeps SEO in its own `qss` table, not postmeta (#740);
75 + // `_sq_` only covers its few fallback meta keys.
76 + 'meta_prefix' => '_sq_',
77 + 'option_keys' => ['sq_options'],
78 + 'plugin_files' => ['squirrly-seo/squirrly.php'],
79 + ],
72 80 ];
73 81
74 82 /**
75 83 * Detect all source plugins present in the database
@@ -168,8 +176,11 @@
168 176
169 177 if ($slug === 'aioseo') {
170 178 // AIOSEO uses a custom table
171 179 $counts = $this->detect_aioseo();
180 + } elseif ($slug === 'squirrly') {
181 + // Squirrly uses a custom table too; the exporter classifies rows.
182 + $counts = $this->detect_squirrly();
172 183 } else {
173 184 // Standard postmeta-based plugins
174 185 $prefix = $config['meta_prefix'];
175 186
@@ -303,8 +314,28 @@
303 314 if ($redirects > 0) {
304 315 $counts['redirections'] = $redirects;
305 316 }
306 317 }
318 + // Squirrly's Advanced Pack redirects are counted by the exporter in
319 + // detect_squirrly(), since only its `url` actions are redirects.
320 +
321 + return $counts;
322 + }
323 +
324 + /**
325 + * Detect Squirrly SEO data (custom `qss` table + Advanced Pack redirects).
326 + *
327 + * Delegated to the exporter: the table mixes posts, terms, author
328 + * profiles and the homepage, and only the exporter knows how to tell
329 + * them apart from the serialized `post` column.
330 + *
331 + * @return array Counts array
332 + */
333 + private function detect_squirrly(): array {
334 + $exporter = new Squirrly_Exporter();
335 + $counts = $exporter->get_available_types();
336 + // Settings are added by the caller from option_keys.
337 + unset($counts['settings']);
307 338
308 339 return $counts;
309 340 }
310 341