do_action( ‘wp_insert_post’, int $post_id, WP_Post $post, bool $update )

Fires once a post has been saved.


Post ID.
Post object.
Whether this is an existing post being updated.

More Information

The wp_insert_post action fires once a post has been saved. You have the ability to set it to only fire on new posts or on all save actions using the parameters. Please see Plugin_API/Action_Reference/save_post for more information. Keep in mind that this action is called both for actions in the admin as well as anytime the wp_insert_post() function is invoked.

This action can be replicated by creating a conditional in a save_post action that excludes certain post statuses.

An important distinction of wp_insert_post action is that it is fired after update_post_meta has been called.


do_action( 'wp_insert_post', $post_id, $post, $update );



User Contributed Notes

  1. Skip to note 3 content

    Below is a basic example that will send an email every time a post or page is created or updated on your website. (copied from codex)

    function my_project_updated_send_email( $post_id, $post, $update ) {
    	// If this is a revision, don't send the email.
    	if ( wp_is_post_revision( $post_id ) )
    	$post_url = get_permalink( $post_id );
    	$subject = 'A post has been updated';
    	$message = "A post has been updated on your website:\n\n";
    	$message .= $post->post_title . ": " . $post_url;
    	// Send email to admin.
    	wp_mail( '', $subject, $message );
    add_action( 'wp_insert_post', 'my_project_updated_send_email', 10, 3 );

You must log in before being able to contribute a note or feedback.