WPJAM分离的代理功能解决WordPress更新问题
WordPress更新出现429 Too Many Requests怎么解决?出现这个问题一般是因为你的服务器…
WordPress更新出现429 Too Many Requests怎么解决?出现这个问题一般是因为你的服务器被WordPress屏蔽了,就跟大陆访问不了WordPress官网一样。对于有小飞机的朋友来说手动更新并不难,如果你没有小飞机,可以到这里下载WordPress的所有中文版本WordPress下载。有人觉得手动更新太麻烦,想要解决自动更新错误的问题,那么下面的方案应该适合你。
此程序由我爱水煮鱼发布于WPJAM插件中,为方便没使用WPJAM插件的用户使用,我把它分离了出来,说是分离,其实就是删掉了基于WPJAM的后台配置。重新写了个通用的插件后台,如果你懂代码可以不用后台。
实现原理
将代理程序上传到能访问WordPress官网的服务器上,然后通过pre_http_request过滤器修改WordPress发出的请求。将请求发送到代理程序上处理,再将结果返回给WordPress。
实现步骤
插件法
插件在文末,里面有一个proxy.php文件和一个文件夹。将proxy.php上传到能上WordPress官网的服务器上,然后将文件夹上传到你的WordPress网站的插件目录中,启用插件后设置菜单下会有一个代理设置选项,在其中填入proxy.php的网络地址即可。
我测试了下插件下载与WordPress更新,代理后正常。这个插件只会处理发往api.wordpress.org与downloads.wordpress.org的请求,不用担心所有请求都走代理的情况。
代码法
下载文末的插件包,将里面的proxy.php上传到能上WordPress官网的服务器上,由此得到代理文件的网络地址。然后在你的主题functions.php文件中添加如下代码。
add_filter('pre_http_request', function ($pre, $parsed_args, $url) { $host = parse_url($url, PHP_URL_HOST); if (!in_array($host, ['api.wordpress.org', 'downloads.wordpress.org'])) { return $pre; } $proxy_url = "你的proxy.php代理文件地址"; if (!$proxy_url) { return $pre; } return wp_remote_request($proxy_url . '?url=' . urlencode($url), $parsed_args); }, 10, 3);
异常现象
部分服务器不能访问WordPress官网,使用代理后你的所有发往api.wordpress.org与downloads.wordpress.org的请求都会超时。比如打开安装插件页面,此页面会请求api.wordpress.org,如果不能访问,将无法显示插件列表。另外,这个proxy.php使用了file_get_contents发起网络请求,部分PHP环境需要配置其支持。另外还会报个警告,不过不影响使用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 wper_net@163.com 删除。
还没有任何评论,赶紧来占个楼吧!