Комментарий Уведомление по электронной почте для комментариев 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()
.
Я заранее ценю вашу помощь!
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);
}
}