From a025a6bdd80fba64fc4826d7e38b92e24e354cae Mon Sep 17 00:00:00 2001 From: nanhaoluo <3075912108@qq.com> Date: Mon, 26 Jan 2026 11:44:52 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=AE=8C=E5=96=84=E5=A4=9A=20API=20?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 为每个 API 配置添加刷新模型列表按钮 - 支持从 API 端点动态获取可用模型列表 - 添加模型选择界面,支持单选和快速应用 - 优化配置获取函数的错误处理和向后兼容性 - 修复空配置导致的 Fatal Error 问题 - 每个提供商可独立配置多个 API(不同密钥、端点、模型) - 支持负载均衡、备用切换等使用场景 --- settings.php | 102 ++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 101 insertions(+), 1 deletion(-) diff --git a/settings.php b/settings.php index 2a31c28..4aa1b39 100644 --- a/settings.php +++ b/settings.php @@ -2133,8 +2133,14 @@ function themeoptions_page(){
+
@@ -2339,6 +2345,100 @@ function themeoptions_page(){ $('.argon-api-form[data-provider="' + provider + '"]').slideUp(); }); + // 刷新模型列表 + $('.argon-refresh-models').on('click', function() { + var btn = $(this); + var provider = btn.data('provider'); + var form = $('.argon-api-form[data-provider="' + provider + '"]'); + var modelsList = form.find('.argon-models-list'); + var apiKey = form.find('.argon-api-form-key').val().trim(); + var apiEndpoint = form.find('.argon-api-form-endpoint').val().trim(); + + if (!apiKey) { + alert(''); + return; + } + + // 显示加载状态 + btn.prop('disabled', true); + btn.find('.dashicons').addClass('spin'); + modelsList.html('
').slideDown(); + + // 发送 AJAX 请求 + $.post(ajaxurl, { + action: 'argon_get_ai_models', + nonce: '', + provider: provider, + api_key: apiKey, + api_endpoint: apiEndpoint + }, function(response) { + btn.prop('disabled', false); + btn.find('.dashicons').removeClass('spin'); + + if (response.success && response.data.models) { + var models = response.data.models; + var html = ''; + html += ': ' + (response.data || '') + '
'); + } + }).fail(function() { + btn.prop('disabled', false); + btn.find('.dashicons').removeClass('spin'); + modelsList.html(''); + }); + }); + + // 使用选中的模型 + $(document).on('click', '.argon-use-selected-model', function() { + var provider = $(this).data('provider'); + var form = $('.argon-api-form[data-provider="' + provider + '"]'); + var selectedModel = form.find('input[name="model_select_' + provider + '"]:checked').val(); + + if (selectedModel) { + form.find('.argon-api-form-model').val(selectedModel); + form.find('.argon-models-list').slideUp(); + } else { + alert(''); + } + }); + // 渲染 API 列表 function renderApiList(provider, apisData) { var apiList = $('.argon-api-list[data-provider="' + provider + '"]');