The http_api_debug WordPress PHP action fires after an HTTP API response is received and before the response is returned.
Usage
add_action('http_api_debug', 'my_custom_http_api_debug', 10, 5);
function my_custom_http_api_debug($response, $context, $class, $parsed_args, $url) {
// your custom code here
}
Parameters
$response(array|WP_Error): HTTP response or WP_Error object.$context(string): Context under which the hook is fired.$class(string): HTTP transport used.$parsed_args(array): HTTP request arguments.$url(string): The request URL.
More information
See WordPress Developer Resources: http_api_debug
Examples
Log all API responses
Log all API responses to a custom log file.
add_action('http_api_debug', 'log_http_api_responses', 10, 5);
function log_http_api_responses($response, $context, $class, $parsed_args, $url) {
// Create a log file
$log_file = WP_CONTENT_DIR . '/debug-http-api.log';
// Format log entry
$log_entry = sprintf(
"[%s] %s %s\n",
date('Y-m-d H:i:s'),
$url,
json_encode($response)
);
// Append log entry to the log file
file_put_contents($log_file, $log_entry, FILE_APPEND);
}
Email admin on specific API error
Send an email to the administrator when a specific API returns an error.
add_action('http_api_debug', 'email_admin_on_api_error', 10, 5);
function email_admin_on_api_error($response, $context, $class, $parsed_args, $url) {
// Check if the response is an error and the URL matches the specific API
if (is_wp_error($response) && strpos($url, 'https://api.example.com/') !== false) {
// Send email to admin
wp_mail(
get_option('admin_email'),
'API Error',
'An error occurred while connecting to the Example API: ' . $response->get_error_message()
);
}
}
Modify response headers
Modify the Cache-Control header of a specific API response.
add_action('http_api_debug', 'modify_cache_control_header', 10, 5);
function modify_cache_control_header($response, $context, $class, $parsed_args, $url) {
// Check if the URL matches the specific API
if (strpos($url, 'https://api.example.com/') !== false) {
// Modify Cache-Control header
$response['headers']['Cache-Control'] = 'private, no-cache, no-store, max-age=0';
}
}
Count successful API requests
Count the number of successful API requests made during a page load.
add_action('http_api_debug', 'count_successful_api_requests', 10, 5);
function count_successful_api_requests($response, $context, $class, $parsed_args, $url) {
// Check if the response is not an error
if (!is_wp_error($response)) {
// Increment the counter
$GLOBALS['successful_api_requests_count']++;
}
}
Add a custom user agent to all API requests
Add a custom user agent to all outgoing API requests.
add_action('http_api_debug', 'add_custom_user_agent', 10, 5);
function add_custom_user_agent($response, $context, $class, $parsed_args, $url) {
// Set custom user agent
$parsed_args['headers']['User-Agent'] = 'My Custom User Agent';
// Update the request arguments
$response = wp_remote_request($url, $parsed_args);
}