답글 및 댓글 알림 설정 문의

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

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();
		}
	}
}

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

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

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

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

감사합니다.

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

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

     

     

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

    테마의 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();
    			}
    		}
    	}
    }

    고맙습니다.

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

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

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

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

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

    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();
    			}
    		}
    	}
    }

     

  • 안녕하세요? 어제 여러번의 시행 착오 끝에 아래와 같이 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();
    			}
    		}
    	}
    }

     

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

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

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

    https://imgur.com/IKuZLKg

  • 아래 코드를 테마의 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

    고맙습니다.

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

    감사합니다. ^^

이미지 사진은 imgur에 업로드한 뒤 링크 걸어주세요.
좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기