The ‘pre_http_request’ WordPress PHP filter allows you to modify or short-circuit an HTTP request in WordPress by using filters. You can return an array containing specific elements, a WP_Error
instance, or false
to avoid short-circuiting the response. Returning any other value may result in unexpected behavior.
Usage
$result = apply_filters('pre_http_request', $response, $parsed_args, $url);
Parameters
$response
(false|array|WP_Error): A preemptive return value of an HTTP request. Default:false
.$parsed_args
(array): HTTP request arguments.$url
(string): The request URL.
Examples
Bypass an HTTP request for a specific URL
function my_custom_pre_http_request($response, $parsed_args, $url) { if (strpos($url, 'example.com') !== false) { return array( 'headers' => '', 'body' => 'Request bypassed for example.com', 'response' => array('code' => 200), 'cookies' => '', 'filename' => '' ); } return $response; } add_filter('pre_http_request', 'my_custom_pre_http_request', 10, 3);
This code checks if the request URL contains ‘example.com’, and if so, it bypasses the actual HTTP request, returning a custom response.
Return a WP_Error
for requests exceeding a specific timeout
function timeout_pre_http_request($response, $parsed_args, $url) { if ($parsed_args['timeout'] > 5) { return new WP_Error('timeout_error', 'Request timeout too high'); } return $response; } add_filter('pre_http_request', 'timeout_pre_http_request', 10, 3);
This code checks if the request timeout is greater than 5 seconds, and if so, it returns a WP_Error
instance with a custom message.
Block all HTTP requests
function block_all_http_requests($response, $parsed_args, $url) { return new WP_Error('all_requests_blocked', 'All HTTP requests are blocked'); } add_filter('pre_http_request', 'block_all_http_requests');
This code blocks all HTTP requests by returning a WP_Error
instance with a custom message.
Add a custom header to all HTTP requests
function add_custom_header($response, $parsed_args, $url) { $parsed_args['headers']['X-Custom-Header'] = 'MyValue'; return $response; } add_filter('pre_http_request', 'add_custom_header', 10, 3);
This code adds a custom header ‘X-Custom-Header’ with a value ‘MyValue’ to all HTTP requests.
Log all outgoing HTTP request URLs
function log_http_request_urls($response, $parsed_args, $url) { error_log('Request URL: ' . $url); return $response; } add_filter('pre_http_request', 'log_http_request_urls', 10, 3);
This code logs all outgoing HTTP request URLs using the PHP error_log()
function.