Home > other >  wp_after_insert_post not triggering
wp_after_insert_post not triggering

Time:01-30

I am trying to send an email after a new post has been created. It needs to be sent after the creation of the post, because I want to include the post category in the email. wp_after_insert_post does not seem to work, as no email is sent. I have tried using the same code with the publish_post hook instead, which does send an email correctly, but I am then unable to use the category name in the email.

function new_post_email( $post_id ) {        
    $categories = get_the_category( $post_id );
    $subject = $categories[0]->name;

    $sent = wp_mail($to = '[email protected]', $subject, $message = 'Test message');
};
add_action( ' wp_after_insert_post', 'new_post_email');

Is there any solution for this? Thanks in advance

CodePudding user response:

It's possible your wp_mail() function syntax is incorrect, you also have an extra space in your add_action(). I've not seen documentation or examples where you can assign variables a value in the function itself. I would try either declaring your variables outside the function, like so:

function new_post_email( $post_id ) {        
    $categories = get_the_category( $post_id );
    $subject = $categories[0]->name;
    $to = 'myemail.com';
    $message = 'Test message';

    $sent = wp_mail($to, $subject, $message);

};
add_action( 'wp_after_insert_post', 'new_post_email'); // remove space in wp_after_insert...

Or just put the values directly in that don't have declared vars for:

function new_post_email( $post_id ) {        
    $categories = get_the_category( $post_id );
    $subject = $categories[0]->name;

    $sent = wp_mail('[email protected]', $subject, 'Test message');
};
add_action( 'wp_after_insert_post', 'new_post_email'); // remove space in wp_after_insert...
  •  Tags:  
  • Related