답글 및 댓글 알림 설정 문의

안녕하세요? 댓글 알림 기능을 검색 후, 아래 코드

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 && $user->ID != get_current_user_id()){
			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 = "[A new comment] {$document->title}";
			$mail->content = $comment->content;
			$mail->url = $url->getDocumentRedirect($document->uid);
			$mail->url_name = __('View page', 'kboard');
			$mail->send();
		}
	}
}

를 통해 댓글 알림을 설정했습니다.

문제 없이 알람이 적용이 되었으나, 저희가 필요로 하는 추가 기능이 있어 문의 드립니다.

"답글 및 댓글 (대 댓글 포함) 작성 시 관리자와 작성자에게 알림이 가도록 설정" 하려면 어떻게 해야하나요?

커뮤니티 상에서 검색을 통해서 몇개의 코드를 찾아서 중복으로 적용을 해봤으나, 오류가 나거나 제대로 작동하지 않습니다.

감사합니다.

좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기
워드프레스 에러 기술지원 서비스 전문가에게 맡기세요
  • 어드민 계정이 아 테스트 계정으로 테스트 해보니 잘 작동하는걸 확인 했습니다. 

    (아마 처음 설정 할때도 마찬 가지였을텐데...) 오랜만에 업데이트라 관련 내용을 잠시 헷갈렸던것 같습니다. 

    빠른 답변 감사합니다. 

  • 안녕하세요.

    최신 버전의 KBoard 플러그인에서 해당 코드들은 정상적으로 동작합니다.

    실제 저희 쪽 테스트 서버에서 정상적으로 동작하는 것을 확인했습니다.

    해당 코드들이 정상적으로 실행되고 있는지 점검해보셔야 할 듯합니다.

     

    메일 받는 쪽에서 스팸 메일함에 있는지 확인해보시겠어요?

    메일 전송이 원활하지 않다면,

    WP Mail SMTP 플러그인을 설치해서 보내는 메일을 새로 세팅해주시면 도움이 됩니다.

    아래 관련 링크도 참고해보시겠어요?

    워드프레스 이메일 전송 문제 해결 방법, 메일건(Mailgun)

     

    위의 방법으로도 해결되지 않는다면

    메일을 보내는 기능은 서버 세팅에 의존하기 때문에

    서버 관리자 또는 웹호스팅 업체에도 문의를 해보셔야 할 듯합니다.

    고맙습니다.

  • 안녕하세요?

    이번 업데이트(게시판 5.7, 댓글 4.8) 이후 기 설정한 "답글 및 댓글 알림" 이 안되는데 추가로 조치를 해야 하나요? 

    테마의 functions.php 파일을 확인 해봤을때는 기존의 추가된 코드가 그대로 있는걸 확인 했습니다. (상기 흐름대로 수정함)

  • 방금 상기 코드 추가하여 테스트 해보니 잘 됩니다. 

    감사합니다. ^^

  • 아래 코드를 테마의 functions.php 파일에 추가해보시겠어요?

    add_action('kboard_comments_insert', 'my_parent_comment_email_alert_20191212', 10, 3);
    function my_parent_comment_email_alert_20191212($comment_uid, $content_uid, $board){
    	$comment = new KBComment();
    	$comment->initWithUID($comment_uid);
    	$content = new KBContent();
    	$content->initWithUID($content_uid);
    	
    	if($comment->parent_uid){
    		$parent = new KBComment();
    		$parent->initWithUID($comment->parent_uid);
    		
    		if($parent->user_uid){
    			$user = new WP_User($parent->user_uid);
    			
    			if($user->user_email && $user->ID != get_current_user_id()){
    				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 = "새로운 댓글이 등록 되었습니다.";
    				$mail->content = $parent->content;
    				$mail->url = $url->getDocumentRedirect($content->uid);
    				$mail->url_name = '페이지로 이동하여 보기';
    				$mail->send();
    			}
    		}
    	}
    }

     

    아래 코드도 참고 해보시겠어요?

    https://www.cosmosfarm.com/threads/document/12951

    고맙습니다.

  • 그림과 같은 상태에서 HaB Korrea.net 이 allbsa67@gmail.com 에게 대댓글을 달았을 시 allbsa67@gmail.com 에게 알람이 가는것을 말씀드립니다. 

    https://imgur.com/IKuZLKg

  • 대 댓글에 대해서는 아직 알람이 되지 않는것 같습니다.

    => 누구에게 알림이 가야하는건지 자세히 설명 가능할까요?

  • 안녕하세요? 어제 여러번의 시행 착오 끝에 아래와 같이 3개의 다른 코드를 적용하여 어느정도 필요한 기능 구현이 되긴 했으나, 대 댓글에 대해서는 아직 알람이 되지 않는것 같습니다. 혹시 그것까지 추가로 적용가능하게 수정 가능할까요? 

    add_action('kboard_comments_insert', 'my_admin_comment_email_alert', 10, 2);
    function my_admin_comment_email_alert($comment_uid, $content_uid){
    	$comment = new KBComment();
    	$comment->initWithUID($comment_uid);
    	$content = new KBContent();
    	$content->initWithUID($content_uid);
    	$board = $content->getBoard();
    	
    	if(!$board->isAdmin()){
    		if(!class_exists('KBMail')){
    			include_once KBOARD_DIR_PATH . '/class/KBMail.class.php';
    		}
    		$url = new KBUrl();
    		$mail = new KBMail();
    		$mail->to = get_option('admin_email');
    		$mail->title = "새로운 댓글이 등록 되었습니다.";
    		$mail->content = $comment->content;
    		$mail->url = $url->getDocumentRedirect($content->uid);
    		$mail->url_name = '페이지로 이동하여 보기';
    		$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($user->user_email && $user->ID != get_current_user_id()){
    			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 = "[A new comment] {$document->title}";
    			$mail->content = $comment->content;
    			$mail->url = $url->getDocumentRedirect($document->uid);
    			$mail->url_name = __('View page', 'kboard');
    			$mail->send();
    		}
    	}
    }
    add_action('kboard_document_insert', 'my_kboard_document_insert_20191205', 10, 4);
    function my_kboard_document_insert_20191205($content_uid, $board_id, $content, $board){
    	if($content->parent_uid){
    		$parent = new KBContent();
    		$parent->initWithUID($content->parent_uid);
    		
    		if($parent->getUserID()){
    			if($parent->getUserID() != get_current_user_id()){
    				if(!class_exists('KBMail')){
    					include_once KBOARD_DIR_PATH . '/class/KBMail.class.php';
    				}
    				
    				$user = new WP_User($parent->getUserID());
    				$url = new KBUrl();
    				
    				$mail = new KBMail();
    				$mail->to = $user->user_email;
    				$mail->title = "[A new reply] {$content->title}";
    				$mail->content = $content->content;
    				$mail->url = $url->getDocumentRedirect($content->uid);
    				$mail->url_name = __('View page', 'kboard');
    				$mail->send();
    			}
    		}
    	}
    }

     

  • 테스트를 해봤습니다. (두개의 코드를 모두 삽입)

    일단 대댓글에 대한 알림은 작동하지 않고, 유저가 댓글을 달았을경우 운영자에게는 알림이 오질 않습니다. 

    저희가 필요한 부분을 다시 말씀 드리자면, 

    1. 유저가 새로운 글을 올렸을때 새글에 대한 알림이 Admin 메일로 (이미 실현되어 있는 기능)

    2. 유저의 글에 대한 운영자 또는 다른 유저의 댓글(또는 답글)에 대한 알림이 Admin 메일과 작성자에게 알림

    3. 유저의 글안에서 댓글에 대한 대댓글 역시 admin 과 작성자에게 알람

    이렇게 구현이 가능할까요? 

    지금은 아래와 같이 적용해 논 상태 입니다. 

    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 && $user->ID != get_current_user_id()){
    			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 = "[A new comment] {$document->title}";
    			$mail->content = $comment->content;
    			$mail->url = $url->getDocumentRedirect($document->uid);
    			$mail->url_name = __('View page', 'kboard');
    			$mail->send();
    		}
    	}
    }
    add_action('kboard_document_insert', 'my_kboard_document_insert_20191205', 10, 4);
    function my_kboard_document_insert_20191205($content_uid, $board_id, $content, $board){
    	if($content->parent_uid){
    		$parent = new KBContent();
    		$parent->initWithUID($content->parent_uid);
    		
    		if($parent->getUserID()){
    			if($parent->getUserID() != get_current_user_id()){
    				if(!class_exists('KBMail')){
    					include_once KBOARD_DIR_PATH . '/class/KBMail.class.php';
    				}
    				
    				$user = new WP_User($parent->getUserID());
    				$url = new KBUrl();
    				
    				$mail = new KBMail();
    				$mail->to = $user->user_email;
    				$mail->title = "[A new reply] {$content->title}";
    				$mail->content = $content->content;
    				$mail->url = $url->getDocumentRedirect($content->uid);
    				$mail->url_name = __('View page', 'kboard');
    				$mail->send();
    			}
    		}
    	}
    }

     

  • 네, 위에 말씀 하신 코드로 답글/댓글/대댓글에 대한 알림이 운영자 및 작성자에게 모두 적용 된다는 말씀 이신건가요? (아직 테스트 전)

    기존의 코드를 삭제하고 적용하라는 말씀 이시죠?

  • 안녕하세요~^^

    프로그램 코드를 올려야 할 경우 에디터의 코드 스니펫 삽입 기능을 사용해주시길 부탁드립니다.

     

     

    아래 코드를 사용하시면 답글이 달리면 알림을 받을 수 있습니다.

    테마의 functions.php 파일에 추가해서 테스트 해보시겠어요?

    add_action('kboard_document_insert', 'my_kboard_document_insert_20191205', 10, 4);
    function my_kboard_document_insert_20191205($content_uid, $board_id, $content, $board){
    	if($content->parent_uid){
    		$parent = new KBContent();
    		$parent->initWithUID($content->parent_uid);
    		
    		if($parent->getUserID()){
    			if($parent->getUserID() != get_current_user_id()){
    				if(!class_exists('KBMail')){
    					include_once KBOARD_DIR_PATH . '/class/KBMail.class.php';
    				}
    				
    				$user = new WP_User($parent->getUserID());
    				$url = new KBUrl();
    				
    				$mail = new KBMail();
    				$mail->to = $user->user_email;
    				$mail->title = "[A new reply] {$content->title}";
    				$mail->content = $content->content;
    				$mail->url = $url->getDocumentRedirect($content->uid);
    				$mail->url_name = __('View page', 'kboard');
    				$mail->send();
    			}
    		}
    	}
    }

    고맙습니다.

좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기