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.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/core/class-settings-manager.php +25 -0 2.6.0 → 2.10.0 View file →
@@ -83,12 +83,21 @@
83 83 'gemini_api_key',
84 84 'gemini_model',
85 85 'openrouter_api_key',
86 86 'openrouter_model',
87 + 'openai_compatible_base_url',
88 + 'openai_compatible_api_key',
89 + 'openai_compatible_model',
90 + 'openai_compatible_timeout',
91 + 'openai_compatible_supports_images',
92 + 'openai_compatible_json_mode',
93 + 'openai_compatible_price_per_million',
87 94 'max_tokens',
88 95 'temperature',
89 96 'cache_duration',
90 97 'max_requests_per_minute',
98 + 'ai_daily_request_limit',
99 + 'ai_paused',
91 100 'enable_logging',
92 101 'debug_mode',
93 102 'api_timeout',
94 103 'retry_attempts',
@@ -805,8 +814,10 @@
805 814 switch ($key) {
806 815 case 'openai_api_key':
807 816 case 'claude_api_key':
808 817 case 'openrouter_api_key':
818 + case 'openai_compatible_api_key':
819 + case 'openai_compatible_model':
809 820 if (!empty($value) && !is_string($value)) {
810 821 $validation['valid'] = false;
811 822 $validation['errors'][] = "{$key} must be a string";
812 823 }
@@ -811,15 +822,29 @@
811 822 $validation['errors'][] = "{$key} must be a string";
812 823 }
813 824 break;
814 825
826 + case 'openai_compatible_base_url':
827 + // An unreachable or dangerous URL is refused with a reason
828 + // rather than quietly stored (see Endpoint_URL_Validator).
829 + if (!empty($value)) {
830 + $validated = \ThinkRank\AI\Endpoint_URL_Validator::validate((string) $value);
831 + if (is_wp_error($validated)) {
832 + $validation['valid'] = false;
833 + $validation['errors'][] = $validated->get_error_message();
834 + }
835 + }
836 + break;
837 +
815 838 case 'max_tokens':
816 839 case 'cache_duration':
817 840 case 'max_requests_per_minute':
841 + case 'ai_daily_request_limit':
818 842 case 'seo_score_threshold':
819 843 case 'api_timeout':
820 844 case 'retry_attempts':
821 845 case 'data_retention_days':
846 + case 'openai_compatible_timeout':
822 847 if (!is_numeric($value) || $value < 0) {
823 848 $validation['valid'] = false;
824 849 $validation['errors'][] = "{$key} must be a positive number";
825 850 }