What is the wordpress hook when I publish a new post, (not when I update a published one)?
I think the hook you're looking for is draft_to_publish
If you are wanting to only send an email on a new post I would consider targeting when the post is published. You could even look at the transition_post_status
hook and just conditionalize if the post has been edited, something like this could work:
function so_post_40744782( $new_status, $old_status, $post ) { if ( $new_status == 'publish' && $old_status != 'publish' ) { $author = "foobar"; $message = "We wanted to notify you a new post has been published."; wp_mail($author, "New Post Published", $message); }}add_action('transition_post_status', 'so_post_40744782', 10, 3 );
You should read Post Status Transitions from the WordPress Codex in order to fully understand the problem.
A possible solution which covers most cases for instance is:
add_action('draft_to_publish', 'postPublished');add_action('future_to_publish', 'postPublished');add_action('private_to_publish', 'postPublished');
function your_callback( $post_id, $post ) { if (strpos($_SERVER['HTTP_REFERER'], '&action=edit') !== false) { //edit previous post } else{ //just add a new post } } add_action( 'publish_{your_post_type}', 'your_callback', 10, 3 );