You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

自定义主题更新遇未授权问题:如何适配基础认证?

解决Plugin Update Checker适配服务器基础认证的问题

我刚好处理过类似的问题,Plugin Update Checker其实提供了专门的钩子来帮我们添加HTTP认证信息,解决这个401 Unauthorized错误很简单,跟着下面的步骤来就行:

1. 生成基础认证的编码字符串

基础认证的请求头格式是 Authorization: Basic <Base64编码的用户名:密码>,你需要先把服务器认证凭据转换成对应的编码字符串。

可以用PHP代码直接生成,把下面的your_username和your_password替换成实际的认证信息:

echo base64_encode('your_username:your_password');

运行这段代码后得到的字符串就是我们需要的编码值。

2. 通过过滤器添加认证请求头

Plugin Update Checker提供了puc_request_args过滤器,我们可以用它来修改下载请求的参数,添加上认证头。

把下面的代码添加到你的主题functions.php文件,或者自定义插件里:

add_filter('puc_request_args', 'add_basic_auth_to_theme_update', 10, 2);
function add_basic_auth_to_theme_update($request_args, $request_url) {
    // 只针对你的主题更新包URL生效,避免影响其他请求
    $theme_update_url = 'https://your-server-url/path/to/your-theme.zip';
    if (strpos($request_url, $theme_update_url) !== false) {
        // 替换成你刚才生成的Base64编码字符串
        $auth_credentials = base64_encode('your_username:your_password');
        $request_args['headers']['Authorization'] = 'Basic ' . $auth_credentials;
    }
    return $request_args;
}

安全提示(非常重要)

不要直接把明文的用户名和密码写在代码里!建议通过WordPress后台添加一个私密设置项来存储这些凭据,然后用get_option()来获取:

// 假设你已经在后台保存了名为theme_update_auth_user和theme_update_auth_pass的选项
$auth_user = get_option('theme_update_auth_user');
$auth_pass = get_option('theme_update_auth_pass');
$auth_credentials = base64_encode("$auth_user:$auth_pass");

3. 测试验证

修改完成后,回到WordPress后台的更新页面,再次尝试更新主题。如果配置正确,应该就能正常下载并更新了。

你也可以先通过curl命令手动测试一下请求是否有效:

curl -H "Authorization: Basic <你的编码字符串>" https://your-server-url/path/to/your-theme.zip

如果能正常下载主题压缩包,说明认证配置没问题。

内容的提问来源于stack exchange,提问作者Raf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:21:19