钩子文档

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.

User Contributed Notes

  1. Skip to note 2 content

    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;
    }