| @@ -71,8 +71,17 @@ | ||
| 71 | 71 | 'file' => 'squirrly-seo/squirrly.php', |
| 72 | 72 | 'extra_files' => ['squirrly-seo-pack/index.php'], |
| 73 | 73 | 'importable' => true, |
| 74 | 74 | ], |
| 75 | + 'slimseo' => [ | |
| 76 | + 'name' => 'Slim SEO', | |
| 77 | + 'class' => 'SlimSEO\\Activator', | |
| 78 | + 'function' => '', | |
| 79 | + 'file' => 'slim-seo/slim-seo.php', | |
| 80 | + // Slim SEO Pro runs with or without the free plugin (#886). | |
| 81 | + 'extra_files' => ['slim-seo-pro/slim-seo-pro.php'], | |
| 82 | + 'importable' => true, | |
| 83 | + ], | |
| 75 | 84 | 'theseoframework' => [ |
| 76 | 85 | 'name' => 'The SEO Framework', |
| 77 | 86 | 'class' => 'The_SEO_Framework\\Load', |
| 78 | 87 | 'function' => 'the_seo_framework', |
| @@ -79,8 +88,20 @@ | ||
| 79 | 88 | 'file' => 'autodescription/autodescription.php', |
| 80 | 89 | 'extra_files' => [], |
| 81 | 90 | 'importable' => false, |
| 82 | 91 | ], |
| 92 | + // Brainstorm Force's SEO plugin. Missing from this list, a site moving | |
| 93 | + // from SureRank kept both running: every head tag doubled and no | |
| 94 | + // conflict notice or deactivate action appeared (#916). The class is | |
| 95 | + // declared by loader.php, which surerank.php requires directly. | |
| 96 | + 'surerank' => [ | |
| 97 | + 'name' => 'SureRank', | |
| 98 | + 'class' => 'SureRank\\Loader', | |
| 99 | + 'function' => '', | |
| 100 | + 'file' => 'surerank/surerank.php', | |
| 101 | + 'extra_files' => [], | |
| 102 | + 'importable' => false, | |
| 103 | + ], | |
| 83 | 104 | ]; |
| 84 | 105 | |
| 85 | 106 | /** |
| 86 | 107 | * Detected plugins cache |
| @@ -156,11 +177,16 @@ | ||
| 156 | 177 | if (!empty($plugin['function']) && function_exists($plugin['function'])) { |
| 157 | 178 | return true; |
| 158 | 179 | } |
| 159 | 180 | |
| 160 | - // Check by plugin file | |
| 161 | - if (!empty($plugin['file']) && function_exists('is_plugin_active') && is_plugin_active($plugin['file'])) { | |
| 162 | - return true; | |
| 181 | + // Check by plugin file, the add-on's included: Slim SEO Pro runs | |
| 182 | + // without the free plugin, and is no less a second SEO plugin then. | |
| 183 | + if (function_exists('is_plugin_active')) { | |
| 184 | + foreach (array_merge([$plugin['file'] ?? ''], $plugin['extra_files'] ?? []) as $file) { | |
| 185 | + if ($file !== '' && is_plugin_active($file)) { | |
| 186 | + return true; | |
| 187 | + } | |
| 188 | + } | |
| 163 | 189 | } |
| 164 | 190 | |
| 165 | 191 | return false; |
| 166 | 192 | } |
| @@ -174,9 +200,9 @@ | ||
| 174 | 200 | if (!self::has_seo_plugins()) { |
| 175 | 201 | return ''; |
| 176 | 202 | } |
| 177 | 203 | |
| 178 | - return __('Running more than one SEO plugin can create conflicts — duplicate meta tags, sitemaps, and schema markup that may hurt your search rankings. To avoid any SEO-related conflicts, we recommend deactivating third-party SEO plugins.', 'thinkrank'); | |
| 204 | + return __('Running more than one SEO plugin can create conflicts: duplicate meta tags, sitemaps, and schema markup that may hurt your search rankings. To avoid any SEO-related conflicts, we recommend deactivating third-party SEO plugins.', 'thinkrank'); | |
| 179 | 205 | } |
| 180 | 206 | |
| 181 | 207 | /** |
| 182 | 208 | * Whether any detected plugin's SEO data can be imported into ThinkRank. |