안녕하세요.
현재 두 가지 기능을 테스트 중인데
1. 댓글을 달 경우 작성자에게 댓글 알림 이메일이 가도록 작성
2. A 댓글에 대댓글을 달았을 경우 A 댓글 작성자에게 알림 이메일이 가도록 하는 기능입니다.
기존에 있던 functions.php에 이런 코드가 있었어서 다른 코드를 추가해보고 있는데 쉽지 않네요...ㅠㅠ
위 두 기능을 구현한 코드는 어떻게 작성해야할까요?
기존 코드
add_action('kboard_comments_insert', 'my_kboard_comments_insert', 10, 3);
function my_kboard_comments_insert($comment_uid, $content_uid, $board){
$comment = new KBComment();
$comment->initWithUID($comment_uid);
if(!$board->isAdmin()){
if(!class_exists('KBMail')){
include_once KBOARD_DIR_PATH . '/class/KBMail.class.php';
}
$url = new KBUrl();
$mail = new KBMail();
$mail->to = explode(',', $board->meta->latest_alerts);
$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 = "[댓글알림] {$document->title}";
$mail->content = $comment->content;
$mail->url = $url->getDocumentRedirect($document->uid);
$mail->url_name = __('Go to Homepage', 'kboard');
$mail->send();
}
}
}
감동입니다.
두 코드를 잘 합쳐보려고 했는데
따로 설정해놓는 것이 훨 낫고 잘되네요 ㅎㅎ
도움주셔서 감사드립니다. ( _ _ )
수정하신 이후의 코드가 댓글 작성 시 게시글 작성자에게 이메일을 보내는 코드입니다.
수정 이전의 코드는 댓글 작성 시 KBoard 설정 중 최신글 이메일 알림에 등록한
메일로 알림을 보내는 코드입니다.
메일이 정상적으로 보내지지 않는다면
메일 전송 기능은 서버 설정에 의존하기 때문에
서버 관리자나 웹호스팅 업체에도 문의를 해보시는 게 좋을 듯합니다.
고맙습니다.
답변 감사드립니다 ( _ _ )
댓글 알람기능이 수정 전 기존코드 말씀하신 것이죠 ?
add_action('kboard_comments_insert', 'my_kboard_comments_insert', 10, 3);
function my_kboard_comments_insert($comment_uid, $content_uid, $board){
$comment = new KBComment();
$comment->initWithUID($comment_uid);
if(!$board->isAdmin()){
if(!class_exists('KBMail')){
include_once KBOARD_DIR_PATH . '/class/KBMail.class.php';
}
$url = new KBUrl();
$mail = new KBMail();
$mail->to = explode(',', $board->meta->latest_alerts);
$mail->title = "댓글이 등록 되었습니다.";
$mail->content = $comment->content;
$mail->url = $url->getDocumentRedirect($content_uid);
$mail->url_name = '페이지로 이동';
$mail->send();
}
}
이 코드 넣어놓고 WP mail SMTP로 설정도 해놓았는데
메일이 들어오고 있지 않습니다 ㅠ
게시글을 작성하면 저희쪽 이메일로 알람이 오는 것을 봐선 정상 메일 플러그인쪽 이슈는 아닌 것 같은데요..
어떤 이슈가 있을 수 있을까요?
감사합니다.
안녕하세요~^^
수정하신 코드는 댓글 작성 시 게시글 작성자에게 이메일을 보내는 코드입니다.
코드 상에는 문제없는 듯합니다.
실제 저희 테스트 서버에서 확인해보니 정상적으로 이메일이 오는 것을 확인했습니다.
받는 쪽 이메일에서 스팸 메일함에 있는지 확인해보시겠어요?
만약, 메일이 스팸메일함에 있다면
WP Mail SMTP 플러그인을 설치해서 보내는 메일을 새로 세팅해주시면 도움이 됩니다.
아래 관련 링크도 참고해보시겠어요?
워드프레스 이메일 전송 문제 해결 방법, 메일건(Mailgun)
스팸메일함에도 없다면
메일을 보내는 기능은 서버 세팅에 의존하기 때문에
서버 관리자 또는 웹호스팅 업체에도 문의를 해보셔야 할 듯합니다.
대댓글 작성 시 상위 댓글 작성자에게 알림을 보내는 코드는
아래의 코드를 활용해보시겠어요?
add_action('kboard_comments_insert', 'my_kboard_comments_insert', 10, 3);
function my_kboard_comments_insert($insert_id, $content_uid, $board){
if($board->id == '1'){ // 실제 게시판 ID로 적용해주세요.
$comment = new KBComment();
$comment->initWithUID($insert_id);
$document = new KBContent();
$document->initWithUID($content_uid);
if($comment->parent_uid){
$parent_comment = new KBComment();
$parent_comment->initWithUID($comment->parent_uid);
if($parent_comment->user_uid){
$user = new WP_User($parent_comment->user_uid);
if($user->user_email && $user->ID != get_current_user_id()){
kboard_mail();
$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->url_name = __('Go to Homepage', 'kboard');
$mail->send();
}
}
}
}
}
위의 코드에서 $board->id == '1' 부분은 실제 게시판 id로 적용해보세요.
고맙습니다.