向在 WooCommerce 中完成提交产品评论的用户发送电子邮件

问题描述

我正在使用以下工作正常的代码

function send_comment_email_notification( $comment_ID,$commentdata ) {
    $comment = get_comment( $comment_id );
    $postid = $comment->comment_post_ID;
    $master_email = 'email@gmail.com';
    var_dump($commentdata);
    if( isset( $master_email ) && is_email( $master_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( $master_email,'New Comment',$message );
    }
}
add_action( 'comment_post','send_comment_email_notification',11,2 );

但是,我想向刚刚在产品页面上进行评论用户发送一封电子邮件,以便我可以向他们提供优惠券并感谢您给予评论

问题在于 $master_email 变量,即“硬编码”。我需要捕获用户提交产品评论后输入的电子邮件

有什么建议吗?

解决方法

要获取用户提交产品评论后输入的电子邮件,您可以使用$commentdata['comment_author_email']

所以你得到:

function action_comment_post( $comment_ID,$comment_approved,$commentdata ) {  
    // Isset
    if ( isset ( $commentdata['comment_author_email'] ) ) {
        // Get author email
        $author_email = $commentdata['comment_author_email'];

        if ( is_email( $author_email ) ) {
            // Post ID
            $post_id = $commentdata['comment_post_ID'];
            
            // Send e-mail
            $to = $author_email;
            $subject = 'The subject';
            $body = sprintf( __(' Thank you for giving a review on %s','woocommerce' ),'<a href="' . get_permalink( $post_id ) . '">' .  get_the_title( $post_id ) . '</a>' );
            $headers = array( 'Content-Type: text/html; charset=UTF-8' );
            
            wp_mail( $to,$subject,$body,$headers );
        }
    } 
}
add_action( 'comment_post','action_comment_post',10,3 );