pre_http_request
云策文档标注
概述
pre_http_request 是一个 WordPress 过滤器,用于在 HTTP 请求执行前拦截并返回预定义值,从而短路请求流程。开发者可以通过此 Hook 控制请求的提前返回行为。
关键要点
- 过滤器允许返回数组、WP_Error 实例或布尔值 false,以短路或继续 HTTP 请求。
- 返回非 false 值(如数组或 WP_Error)将直接结束请求,避免实际网络调用。
- 参数包括 $response(默认 false)、$parsed_args(请求参数)和 $url(请求 URL)。
- 错误使用可能导致意外行为,需确保返回值符合规范。
代码示例
add_filter( 'pre_http_request', 'pass_or_reject_request', 10, 3 );
function pass_or_reject_request( $preempt, $parsed_args, $url ){
// filter...
if( strpos($url, 'http(s)://any_domain.com') !== false ){
return new WP_Error( 'http_request_block', __( "This request is not allowed", "textdomain" ) );
}
return $preempt;
}注意事项
返回除数组、WP_Error 或 false 外的其他值可能引发不可预测的问题,应严格遵循文档规范。
原文内容
Filters the preemptive return value of an HTTP request.
Description
Returning a non-false value from the filter will short-circuit the HTTP request and return early with that value. A filter should return one of:
- An array containing ‘headers’, ‘body’, ‘response’, ‘cookies’, and ‘filename’ elements
- A WP_Error instance
- Boolean false to avoid short-circuiting the response
Returning any other value may result in unexpected behavior.
Parameters
$responsefalse|array|WP_Error-
A preemptive return value of an HTTP request. Default false.
$parsed_argsarray-
HTTP request arguments.
$urlstring-
The request URL.
Source
$pre = apply_filters( 'pre_http_request', false, $parsed_args, $url );
Changelog
| Version | Description |
|---|---|
| 2.9.0 | Introduced. |
Skip to note 2 content
expresstechsoftware
add_filter( 'pre_http_request', 'pass_or_reject_request', 10, 3 ); function pass_or_reject_request( $preempt, $parsed_args, $url ){ // filter... if( strpos($url, 'http(s)://any_domain.com') !==false ){ return new WP_Error( 'http_request_block', __( "This request is not allowed", "textdomain" ) ); } return $preempt; }