PluginProbe
ThinkRank AI SEO – AI SEO Plugin for WordPress: Schema, XML Sitemaps, Meta Tags, Search Console & Local SEO / 2.7.0
ThinkRank AI SEO – AI SEO Plugin for WordPress: Schema, XML Sitemaps, Meta Tags, Search Console & Local SEO v2.7.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 1.0.2 1.1.0 1.10.0 All 48 releases
← All changes | includes/core/class-settings.php +5 -45 2.3.02.7.0 View file →
@@ -231,37 +231,8 @@
231 231 'seo_score_threshold' => 70,
232 232 'enable_meta_generation' => true,
233 233 'enable_schema_markup' => true,
234 234
235 - // Auto AI Optimization (on-publish metadata fill; #248 P1)
236 - 'auto_ai_meta_enabled' => false,
237 - 'auto_ai_meta_post_types' => ['post'],
238 -
239 - // Brand Visibility v2. The brand profile drives question generation
240 - // and mention detection; per-platform keys let this feature query
241 - // several assistants without changing the site-wide AI provider.
242 - 'bv_brand_name' => '',
243 - 'bv_variants' => [],
244 - 'bv_location' => '',
245 - 'bv_category' => '',
246 - 'bv_description' => '',
247 - 'bv_competitors' => [],
248 - 'bv_queries' => [],
249 - 'bv_platforms' => ['chatgpt'],
250 - 'bv_samples' => 1,
251 - 'bv_key_chatgpt' => '',
252 - 'bv_key_gemini' => '',
253 - 'bv_key_claude' => '',
254 - 'bv_key_perplexity' => '',
255 - // Empty = use the platform's default model (see Brand_Visibility_Providers).
256 - 'bv_model_chatgpt' => '',
257 - 'bv_model_gemini' => '',
258 - 'bv_model_claude' => '',
259 - 'bv_model_perplexity' => '',
260 -
261 - // AI Brand Visibility (BYO-key checks; #248 P1)
262 - 'brand_visibility_queries' => [],
263 -
264 235 // Author Archives Settings
265 236 'author_archives_enabled' => true,
266 237 'author_archives_index' => true,
267 238 'author_archives_show_empty' => false,
@@ -296,16 +267,8 @@
296 267 // Integration Settings
297 268 'google_analytics_id' => '',
298 269 'search_console_property' => '',
299 270
300 - // GA4 Tracking Settings
301 - 'ga4_measurement_id' => '',
302 - 'ga4_auto_inject' => false,
303 - 'ga4_anonymize_ip' => false,
304 - 'ga4_exclude_admin' => false,
305 - 'ga4_tracking_verified' => false,
306 - 'ga4_last_verification' => '',
307 -
308 271 // SEO Analytics Settings
309 272 'seo_analytics_enabled' => false,
310 273 'seo_analytics_setup_completed' => false,
311 274 'seo_analytics_google_analytics_property_id' => '',
@@ -879,15 +842,13 @@
879 842 case 'seo_analytics_report_schedule':
880 843 return sanitize_text_field($value);
881 844
882 845 case 'robots_txt_content':
883 - case 'bv_description':
884 846 // Multi-line content — sanitize_text_field() collapses newlines
885 847 // and would flatten the whole file onto a single line. set()
886 848 // routes every write through here, so a caller that chose
887 - // sanitize_textarea_field() itself (Brand_Visibility_Endpoint
888 - // does, for bv_description) is otherwise silently overridden
889 - // by the default: arm below (#587).
849 + // sanitize_textarea_field() itself is otherwise silently
850 + // overridden by the default: arm below (#587).
890 851 return sanitize_textarea_field($value);
891 852
892 853 default:
893 854 if (is_bool($value)) {
@@ -896,12 +857,11 @@
896 857 return sanitize_text_field($value);
897 858 } elseif (is_array($value)) {
898 859 // Recurse rather than drop. Skipping nested members was
899 860 // harmless while this ran only on the register_setting()
900 - // path, but set() now routes every write through here and
901 - // structured settings — bv_competitors is a list of
902 - // ['name','url'] maps, bv_queries a list of ['text','type']
903 - // — were being silently emptied on save.
861 + // path, but set() now routes every write through here, and
862 + // structured settings (lists of maps) were being silently
863 + // emptied on save.
904 864 return $this->sanitize_array_recursive($value);
905 865 }
906 866 return $value;
907 867 }