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的请求,不用担心所有请求都走代理的情况。

WPJAM分离的代理功能解决WordPress更新问题

WPJAM分离的代理功能解决WordPress更新问题

代码法

下载文末的插件包,将里面的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环境需要配置其支持。另外还会报个警告,不过不影响使用。

类别:SEO

本文收集自互联网,转载请注明来源。
如有侵权,请联系 wper_net@163.com 删除。

评论 (0)COMMENT

登录 账号发表你的看法,还没有账号?立即免费 注册