The http_api_curl WordPress PHP action fires before a cURL request is executed, allowing plugins to handle cookies themselves.
Usage
add_action('http_api_curl', 'your_custom_function', 10, 3); function your_custom_function($handle, $parsed_args, $url) { // your custom code here }
Parameters
$handle
(resource): The cURL handle returned bycurl_init()
(passed by reference).$parsed_args
(array): The HTTP request arguments.$url
(string): The request URL.
More information
See WordPress Developer Resources: http_api_curl
Examples
Set custom cURL options
This example sets custom cURL options for timeouts and redirects.
add_action('http_api_curl', 'custom_curl_options', 10, 3); function custom_curl_options($handle, $parsed_args, $url) { curl_setopt($handle, CURLOPT_TIMEOUT, 10); // Set timeout to 10 seconds curl_setopt($handle, CURLOPT_MAXREDIRS, 5); // Set maximum number of redirects to 5 }
Add a custom User-Agent
This example adds a custom User-Agent to the cURL request.
add_action('http_api_curl', 'custom_user_agent', 10, 3); function custom_user_agent($handle, $parsed_args, $url) { curl_setopt($handle, CURLOPT_USERAGENT, 'My Custom User-Agent'); }
Set custom proxy settings
This example sets custom proxy settings for the cURL request.
add_action('http_api_curl', 'custom_proxy_settings', 10, 3); function custom_proxy_settings($handle, $parsed_args, $url) { curl_setopt($handle, CURLOPT_PROXY, 'http://proxy.example.com:8080'); curl_setopt($handle, CURLOPT_PROXYUSERPWD, 'username:password'); }
Enable verbose logging
This example enables verbose logging for the cURL request.
add_action('http_api_curl', 'enable_verbose_logging', 10, 3); function enable_verbose_logging($handle, $parsed_args, $url) { curl_setopt($handle, CURLOPT_VERBOSE, true); }
Follow redirects for specific domains
This example enables following redirects only for specific domains.
add_action('http_api_curl', 'follow_redirects_for_domains', 10, 3); function follow_redirects_for_domains($handle, $parsed_args, $url) { if (strpos($url, 'https://example.com') !== false) { curl_setopt($handle, CURLOPT_FOLLOWLOCATION, true); } }