Posting data to a remote server in WordPress with wp_remote_post

The WordPress wp_remote_post function is a built-in WordPress function that allows you to send a POST request to a specified URL. This function can be useful for sending data to an external API, submitting form data, or interacting with remote servers.

By using wp_remote_post, you can easily send data to a remote server and retrieve the response without having to write custom cURL or HTTP request code. This can save time and streamline the process of interacting with external services or APIs.

Parameters Accepted by wp_remote_post Function

The wp_remote_post function accepts the following parameters:

  • $url (string, required): URL to retrieve.
  • $args (array, optional, default value: array()): Request arguments.

Value Returned by wp_remote_post Function

The wp_remote_post function returns either an array containing the response or a WP_Error object in case of failure.


How to make a simple POST request using wp_remote_post

$response = wp_remote_post( '', array(
 'body' => array( 'key1' => 'value1', 'key2' => 'value2' ),
) );

The above code snippet sends a POST request to the specified URL ‘’ with the body parameters ‘key1’ and ‘key2’. The response from the server is stored in the $response variable.

How to handle errors when using wp_remote_post

$response = wp_remote_post( '', array(
 'body' => array( 'key1' => 'value1', 'key2' => 'value2' ),
) );

if ( is_wp_error( $response ) ) {
 $error_message = $response->get_error_message();
 echo "Something went wrong: $error_message";

In this example, we first make a POST request using wp_remote_post, and then we use an if statement to check if the response is a WordPress error using the is_wp_error function. If it is, we retrieve the error message and display it.

How to send a POST request with custom headers using wp_remote_post

$headers = array(
 'Authorization' => 'Bearer my_token',
 'Content-Type' => 'application/json',

$response = wp_remote_post( '', array(
 'body' => array( 'key1' => 'value1', 'key2' => 'value2' ),
 'headers' => $headers,
) );

This code snippet demonstrates how to send a POST request with custom headers such as ‘Authorization’ and ‘Content-Type’ using wp_remote_post. The headers are defined in the $headers array and passed as a parameter to the function.


The wp_remote_post function is an essential tool for sending HTTP POST requests in WordPress. It allows developers to easily communicate with external APIs and services, making it a valuable asset for building dynamic and interactive websites.

By providing a simple and flexible interface, wp_remote_post streamlines the process of sending and receiving data over the web. Its ability to handle various response formats and error handling mechanisms makes it a reliable choice for integrating third-party resources into WordPress applications.

While understanding the nuances of HTTP requests and responses is essential for utilizing wp_remote_post effectively, the function’s comprehensive documentation and community support make it accessible to developers of all skill levels.

In conclusion, wp_remote_post empowers WordPress developers to create seamless connections between their websites and external services, opening up a world of possibilities for enhancing user experiences and expanding functionality.

Related WordPress Functions