我有一个WordPress网站,用户可以通过提交一个发布到自定义帖子类型的表单来创建新的支持票证。我现在希望WordPress在自定义帖子上有评论(即更新票证)时向用户发送电子邮件。
我发现this example 关于如何将电子邮件添加到CPT的评论。我发现答案不是很清楚,也不知道如何应用if()
有条件的,我似乎无法让代码正常工作。我的CPT名称是jobs
我在函数中添加了以下代码。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 );
}
}
这不起作用。在
wp_mail()
作用
我提前感谢你的帮助!
最合适的回答,由SO网友:Zach Russell 整理而成
我已经弄明白了。现有代码存在一系列问题。
代码无法获取$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);
}
}