我正在尝试使用瞬态自动更新我的 WordPress 插件。
我有一个可以工作,但它添加了authorize_token来查询参数,如下代码所示。
$new_files = $this->github_response['zipball_url']; // Get the ZIP
***$package = add_query_arg(array("access_token" => $this->authorize_token), $new_files);***
$slug = current( explode('/', $this->basename ) ); // Create valid slug
$plugin = array( // setup our plugin info
'url' => $this->plugin["PluginURI"],
'slug' => $slug,
'package' => $package,
'new_version' => $this->github_response['tag_name']
);
$transient->response[$this->basename] = (object) $plugin;
但我收到了来自 github 的电子邮件,说我应该将authorize_token 添加到标头中。
我试图通过谷歌找到解决方案,但找不到。
我该如何修复它?
我认为您必须向 http_request 添加一个过滤器。因此,当 wordpress 尝试任何 http 请求时,它将通过您的过滤器。然后在该过滤器中,您可以检查 url,如果它是您的插件源 url,则可以将 accessToken 添加到标头。
该方法位于我的更新程序类中,并且我在初始化更新程序时设置了类属性 accessToken 和用户名。
add_filter( "http_request_args", array( $this, "addHeaders") , 10, 3);
public function addHeaders($parsed_args, $url)
{
if(empty($parsed_args['headers']))
{
$parsed_args['headers'] = [];
}
if(strpos($url, "https://api.github.com/repos/{$this->username}/{$this->repo}") !== FALSE)
{
$parsed_args['headers']['Authorization'] = "token $this->accessToken";
error_log("Adding token for : $url");
}
else
{
error_log("Not adding token for $url");
}
return $parsed_args;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)