Would you like to send your published WordPress posts to external services via webhooks or API? Send published posts to an online automation tool such as Zapier, automate.io to automate tasks?
Here’s are the list of key features we’ll accomplish after the tutorial:
Features
- Store WordPress posts in your Google Spreadsheet. See, https://zapier.com/apps/google-sheets/integrations
- Send Email/SMS alert when a post is published. See, https://zapier.com/apps/sms/integrations
- Share WordPress posts in social medias such as Facebook, Twitter etc.
- And many more with Zapier, automate.io and more.
Let’s begin by breaking the task into two steps:
1) Gathering data after WordPress post is published.
We’ll begin with the “publish_post” hook, the hook that fires when the post is published. We’ll gather the post information to be sent to the webhooks or external API at this point.
add_action( 'publish_post', 'awp_publish_post', 10, 2 );
/**
* Prepare data to send to webhooks on WP Post Update.
*
* @param $id Post ID.
* @param $post Post object.
*
* @since 1.0.0
*/
function awp_publish_post( $id, $post ) {
$author = $post->post_author;
$data =
array(
'Post ID' => $id,
'Author Display Name' => get_the_author_meta( 'display_name', $author ),
'Author Email Address' => get_the_author_meta( 'user_email', $author ),
'Post Title' => $post->post_title,
'Post Content' => $post->post_content,
'Post Permalink' => get_permalink( $id ),
);
// Call the function described in step 2.
awp_send_data_to_automate( $data );
}
2) Sending data to Webhooks or External API
Now that we’ve gathered the information to be sent upon the publishing the post. We’ll use the function awp_send_data_to_automate( $data )
called above to accomplish this task.
/**
* Send data to webhooks.
*
* @param array $data posts data to send to webhooks.
*
* @since 1.0.0
*/
function awp_send_data_to_automate( array $data ) {
$headers = array( 'Accept: application/json', 'Content-Type: application/json' );
$args =
array(
'method' => 'POST',
'headers' => $headers,
'body' => wp_json_encode( $data )
);
$result = wp_remote_post( "your-webhook-url", $args );
if ( is_wp_error( $result ) ) {
error_log( print_r( $result->get_error_message(), true ) );
}
}
That is all. The post data will be sent to the webhook when the post is published. Remember to change “your-webhook-url” to your actual webhook URL.
If you want to use a full-blown plugin instead of the code snippet, you can download the plugin Automate WP Posts from GitHub Repository, or here’s a quick download link. WIth the plugin you can simply put the Webhooks URL to Settings > Automate WP Posts, the plugin does all the rest.
Here’s the video tutorial to one of the key features listed above
Share WordPress posts in social medias such as Facebook, Twitter etc.
I hope you found this tutorial helpful. If you have any questions or confusion, let me know. I’d be happy to help!