WordPress 的 HTTP 请求的底层是使用 Requests for PHP 这个库来实现的,WordPress 6.1 之前使用的是 Requests 1.0 版本,WordPress 6.2 将其升级为 2.0.5。
引入了命名空间
Requests 2.0.0 为所有的 Requests 代码引入了命名空间,但是同时也兼容不使用命名空间的用法,但是会产生启用消息通知。
如果你的插件或者主题使用 WordPress 原生的 wp_remote_*()
函数,那么你啥都不用做,WPJAM Basic 的 HTTP 请求就是使用 wp_remote_*()
函数实现的,所以这个升级没有任何影响。
如果你的插件或者主题直接使用了 Requests 库,并且只支持最新版本的 WordPress 的话,你应该更新代码,用上命名空间的名称。例如使用命名空间的方式在 try-catch 代码块中执行请求:
// Old: Perform a request with a try-catch in Requests 1.x.
try {
$response = Requests::request( $url, $headers, $data, $type, $options );
} catch ( Requests_Exception $e ) {
return new WP_Error( 'http_request_failed', $e->getMessage() );
}
// New: Perform a request with a try-catch in Requests 2.x.
try {
$response = WpOrg\Requests\Requests::request( $url, $headers, $data, $type, $options );
} catch ( WpOrg\Requests\Exception $e ) {
return new WP_Error( 'http_request_failed', $e->getMessage() );
}
如果你的插件或者主题直接使用了 Requests 库并且希望支持比较多的 WordPress 版本,那么可能需要根据情况设置常量 REQUESTS_SILENCE_PSR0_DEPRECATIONS
为 true
来消除旧版本的启用通知。一旦,WordPress 6.2 成为你的插件或者主题的最低版本,就要升级代码中 Requests 代码。
if ( ! defined( 'REQUESTS_SILENCE_PSR0_DEPRECATIONS' ) ) {
define( 'REQUESTS_SILENCE_PSR0_DEPRECATIONS', true );
}
目录结构变化
wp-includes/class-requests.php
和 wp-includes/Requests/library/Requests.php
在 WordPress 6.2 被弃用。
类和接口文件或者目录已被迁移:
- 旧位置:
wp-includes/Requests/
. - 新位置:
wp-includes/Requests/src/
.
Requests
类文件现在位于 wp-includes/Requests/src/Requests.php
.
最低 PHP 版本要求
Requests 2.0.0 放弃了对 PHP 5.2 – 5.5 的支持,新的最低支持 PHP 版本现在是 5.6,也正式放弃了对 HHVM 的支持。
更严格的输入验证
Requests 中现在的所有常用的入口方法都将直接或间接地验证接收到的输入参数的类型是否正确。当接收到不正确的参数类型时,将抛出可捕获的 WpOrg\Requests\Exception\InvalidArgument
异常。