I have a custom post which is submitted by the visitor from front end. Visitor's submitted post status is pending.
Now when admin change the post status from pending to publish, I want to send an email to the author of this post. author email collected by custom field.
function send_mails_on_publish( $new_status, $old_status, $post ) {
if ( 'publish' !== $new_status or 'publish' === $old_status or 'trainee' !== get_post_type( $post ) )
return;
$author = get_post_meta( $post_id, $tr_user_reg_email, true );
$body = sprintf( 'Hey there is a new entry!
See <%s>',
get_permalink( $post )
);
wp_mail( $author, 'New entry!', $body );
}
add_action( 'transition_post_status', 'send_mails_on_publish', 10, 3 );
This is what I'm trying. But this does not work. Anybody can help me? Thanks in advance :)
Yeh got my answer from post status transition
function on_publish_pending_post( $post ) {
// A function to perform actions when a post is published.
if ( "trainee" === get_post_type() ) { // check the custom post type
$name = get_the_title( $post->ID );
// get email from custom field
$author = get_post_meta( $post->ID, "tr_user_reg_email", true );
$subject = "mail subject";
$body = "mail body";
$headers = array (
'From: "your name" <no-reply@your-domain.com>' ,
'X-Mailer: PHP/' . phpversion(),
'MIME-Version: 1.0' ,
'Content-type: text/html; charset=iso-8859-1'
);
$headers = implode( "
" , $headers );
wp_mail( $author, $subject, $body, $headers );
}
} add_action( "pending_to_publish", "on_publish_pending_post", 10, 1 );
Do you have any email restrictions from your hosting provider? Especially if it's a free hosting. If so, that may be the reason for it not working. If not, it may be just a small typo. It looks to me that you are also missing the {} for your if statement.