<?php function notify_post_status( $post_id = NULL, $user = '' ) {
if ( ! isset($_POST["post_id"]) ) {
$post_id = $_POST["post_id"];
}
else {
return $post_id;
}
$post = get_post($post_id);
$status = $post->post_status;
$type = $post->post_type;
$author_id = intval($post->post_author);
$user = get_userdata( $author_id );
//ignore admin
if( $author_id == 1 ) return;
// Which statuses should we send email for ?
$send_statuses = array("publish","draft");
// Send mails only for published (approved) || draft (rejected)
if( ! in_array($status,$send_statuses)) return;
// Only send for a specific custom post type ?
//if( $type != "my_custom_post_type" ) return $post_id;
$title = $post->post_title;
$content = $post->post_content;
$blogname = get_bloginfo( 'name' );
// $to_admin = get_bloginfo( 'admin_email' );
$to = $user->user_email;
$frommail = 'noreply@my_domain.com';
$permalink = get_permalink( $post_id );
$headers = sprintf( "From: %s <%s>\r\n", $blogname, $frommail );
$subject = sprintf( __( 'Your post status : %s','my_textdomain' ), $status );
$msg = sprintf( __( 'Your post titled: %s ','my_textdomain' ), $title ) . "\r\n";
$msg .= sprintf( __( 'status has been changed to : %s','my_textdomain' ), $title ) . "\r\n";
if($status == "publish" ) {
$msg .= sprintf( __( 'You can view it here : %s' ), $permalink ) . "\r\n";
}
// Save sent email for each status so it doesnt send email every time
$sent_mails = get_post_meta($post_id,'post_notif_sent_mails',true);
if($sent_mails) {
// have sent mail for this status ?
if ( in_array($status,$sent_mails) ) {
return;
}
else {
$sent_mails[] = $status;
}
}
else {
// no mail has been sent for this status, crate array, insert stat
$sent_mails = array($status);
}
// send the mail, update the metadata
update_post_meta($post_id,"post_notif_sent_mails",$sent_mails);
wp_mail( $to, $subject, $msg, $headers );
}
?>