Комментарий Уведомление по электронной почте для комментариев CPT


У меня есть сайт WordPress, на котором пользователи могут создавать новые заявки в службу поддержки, отправляя форму, которая публикует сообщения пользовательского типа. Теперь я хотел бы, чтобы WordPress отправлял пользователям электронные письма, когда есть комментарий к пользовательскому сообщению (т. Е. Обновление билета).

Я нашел этот пример о том, как добавлять электронные письма в комментарии к CPTS. Я обнаружил, что ответ не очень ясен или как применить условие if(), и я, похоже, не могу заставить код работать. Меня зовут CPT jobs и я добавил следующий код в свой functions.php файл:

/*
 * Email updates for Job comments
 */
if( 'jobs'==get_post_type() ) {
    add_action( 'comment_post', 'comment_email_notification', 11, 2 );
}
function comment_email_notification( $comment_ID, $commentdata ) {
$comment = get_comment( $comment_id );
$postid = $comment->comment_post_ID;
$author_email = get_post_meta( $postid, 'author_email', true);
if( isset( $author_email ) && is_email( $author_email ) ) {
    $message = 'New comment on <a href="' . get_permalink( $postid ) . '">' .  get_the_title( $postid ) . '</a>';
    add_filter( 'wp_mail_content_type', create_function( '', 'return "text/html";' ) );
    wp_mail( $author_email, 'New Comment', $message );
  }
}

Это не работает. Обычные электронные письма WordPress действительно отправляются с помощью функции wp_mail().

Я заранее ценю вашу помощь!

Author: Community, 2015-05-04

1 answers

Я понял это. С существующим кодом было много проблем.

Код не получал $author_email надлежащим образом, что приводило к его сбою и к тому, что wp_mail() не срабатывал.

add_action('comment_post', 'comment_email_notification', 11, 2);

function comment_email_notification($comment_ID, $comment_approved) {
    $post_type = get_post_type();
    if ($post_type !== 'jobs') {
        return;
    }

    $comment = get_comment($comment_ID);
    $post_ID = $comment->comment_post_ID;
    $author_ID = get_post_field( 'post_author', $post_ID );
    $author_email = get_the_author_meta( 'user_email', $author_ID );
    if (isset($author_email) && is_email($author_email)) {
        $message = 'New comment on <a href="' . get_permalink($post_ID) . '">' .
            get_the_title($postid) . '</a>';

        add_filter('wp_mail_content_type',
                   create_function('', 'return "text/html";'));

        wp_mail($author_email, 'New Comment', $message);
    }
}
 3
Author: Zach Russell, 2015-05-06 18:55:06