작성자가 댓글을 썼을때 댓글 알림을 전체로 보내기

add_action('kboard_comments_insert', 'my_kboard_comments_insert', 10, 2);
function my_kboard_comments_insert($insert_id, $content_uid){
    $comment = new KBComment();
    $comment->initWithUID($insert_id);
    $document = new KBContent();
    $document->initWithUID($content_uid);

    if($document->member_uid){
        $user = new WP_User($document->member_uid);

        if($user->user_email){
            if(!class_exists('KBMail')){
                include_once KBOARD_DIR_PATH . '/class/KBMail.class.php';
            }
                
            $url = new KBUrl();
            $mail = new KBMail();
            $mail->to = $user->user_email;
            $mail->title = "[댓글알림] {$document->title}";
            $mail->content = $comment->content;
            $mail->url = $url->getDocumentRedirect($document->uid);
            $mail->send();
        }
    }
}

알려주신 코드로 작성자에게 댓글 알림기능 잘 사용하고 있습니다.

여기에 한가지 더 추가를 하고 싶습니다.

게시물 작성자가 자신의 글에 댓글을 달았을때

해당 게시판 알림 설정에 등록된 메일로도 알림을 보내려면 어떻게 해야 할까요

좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기
좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기
  • 안녕하세요~^^

    올려주신 코드를 활용해서

    게시글 작성자가 본인의 글에 댓글을 남겼을 때만

    본인과 관리자에게 알림을 보내고 싶으신 건지요?

     

    기존의 코드 대신 아래의 코드를 활용해보시겠어요?

    add_action('kboard_comments_insert', 'my_kboard_comments_insert', 10, 2);
    function my_kboard_comments_insert($insert_id, $content_uid){
    	$comment = new KBComment();
    	$comment->initWithUID($insert_id);
    	$document = new KBContent();
    	$document->initWithUID($content_uid);
    	
    	if($document->member_uid){
    		$user = new WP_User($document->member_uid);
    		
    		if($comment->user_uid == $document->member_uid){
    			$email = array($user->user_email, '이메일주소');
    		}
    		else{
    			$email = $user->user_email;
    		}
    		
    		if($email){
    			if(!class_exists('KBMail')){
    				include_once KBOARD_DIR_PATH . '/class/KBMail.class.php';
    			}
    			
    			$url = new KBUrl();
    			$mail = new KBMail();
    			$mail->to = $email;
    			$mail->title = "[댓글알림] {$document->title}";
    			$mail->content = $comment->content;
    			$mail->url = $url->getDocumentRedirect($document->uid);
    			$mail->send();
    		}
    	}
    }

    위의 코드에서 이메일주소 부분에는

    게시글 작성자 본인이 댓글을 남겼을 때 알림을 보내려는 관리자 이메일로 교체해서 확인해보시겠어요?

    고맙습니다.

  • 본인과 관리자라기 보다는..

    아래에 등록 된 여러 사람의 메일로 알림을 보냈으면 합니다.

     

  • 게시글 작성자가 본인의 글에 댓글을 달았을 때만

    본인과 최신글 이메일 알림에 입력한 이메일로 알림을 보내고 싶으신 건지요?

    아래의 코드로 교체해서 확인해보시겠어요?

    add_action('kboard_comments_insert', 'my_kboard_comments_insert', 10, 2);
    function my_kboard_comments_insert($insert_id, $content_uid){
    	$comment = new KBComment();
    	$comment->initWithUID($insert_id);
    	$document = new KBContent();
    	$document->initWithUID($content_uid);
    	
    	if($document->member_uid){
    		$email = array();
    		if($comment->user_uid == $document->member_uid){
    			$board = $document->getBoard();
    			$email = explode(',', $board->meta->latest_alerts);
    		}
    		
    		$user = new WP_User($document->member_uid);
    		if($user->user_email) $email[] = $user->user_email;
    		
    		if($email){
    			if(!class_exists('KBMail')){
    				include_once KBOARD_DIR_PATH . '/class/KBMail.class.php';
    			}
    			
    			$url = new KBUrl();
    			$mail = new KBMail();
    			$mail->to = $email;
    			$mail->title = "[댓글알림] {$document->title}";
    			$mail->content = $comment->content;
    			$mail->url = $url->getDocumentRedirect($document->uid);
    			$mail->send();
    		}
    	}
    }

    만약, 저희가 잘못 이해하고 있다면

    어떤 상황인지도 설명 부탁드립니다.

    고맙습니다.

  • 덕분에 잘 해결됐습니다. 

    코딩을 잘 몰라서 그러는데코드 해석 좀 부탁 드립니다. 

    아래는 어떤 의미인지 .. 

    $comment = new KBComment();
    $comment->initWithUID($insert_id);
    $document = new KBContent();
    $document->initWithUID($content_uid);

    그리고..

    "최신글 이메일 알림에 입력한 이메일" 의 주소로 메일 전송하는 부분은 어디인가요?

     

  • 안녕하세요.

    올려주신 코드는 댓글 고유 id와 게시글 고유 id로

    댓글 정보 및 게시글 정보를 초기화하는 코드입니다.

     

    고유 id로 초기화했기 때문에

    그 아래 코드에서 $document->member_uid 코드로 게시글 작성자 고유 id를 가져올 수 있고

    $comment->user_uid 코드로 댓글 작성자 고유 id를 가져올 수 있습니다.

     

    "최신글 이메일 알림"에 입력한 이메일 주소는 $board->meta->latest_alerts 변수에 저장되어 있습니다.

    메일을 보내는 코드는 $mail->send(); 코드입니다.

     

    FTP로 접속해서 /wp-content/plugins/kboard/class/KBMail.class.php 파일에서 send 함수이며

    실제 메일을 보낼 때 워드프레스의 wp_mail 함수를 사용하고 있습니다.

     

    wp_mail 함수에 대한 자세한 내용은

    아래의 링크 참고 부탁드립니다.

    https://developer.wordpress.org/reference/functions/wp_mail/

    고맙습니다.

워드프레스 에러 기술지원 서비스 전문가에게 맡기세요