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();
}
}
}
알려주신 코드로 작성자에게 댓글 알림기능 잘 사용하고 있습니다.
여기에 한가지 더 추가를 하고 싶습니다.
게시물 작성자가 자신의 글에 댓글을 달았을때
해당 게시판 알림 설정에 등록된 메일로도 알림을 보내려면 어떻게 해야 할까요
안녕하세요.
올려주신 코드는 댓글 고유 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/
고맙습니다.
덕분에 잘 해결됐습니다.
코딩을 잘 몰라서 그러는데코드 해석 좀 부탁 드립니다.
아래는 어떤 의미인지 ..
$comment = new KBComment();
$comment->initWithUID($insert_id);
$document = new KBContent();
$document->initWithUID($content_uid);
그리고..
"최신글 이메일 알림에 입력한 이메일" 의 주소로 메일 전송하는 부분은 어디인가요?
게시글 작성자가 본인의 글에 댓글을 달았을 때만
본인과 최신글 이메일 알림에 입력한 이메일로 알림을 보내고 싶으신 건지요?
아래의 코드로 교체해서 확인해보시겠어요?
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();
}
}
}
만약, 저희가 잘못 이해하고 있다면
어떤 상황인지도 설명 부탁드립니다.
고맙습니다.
본인과 관리자라기 보다는..
아래에 등록 된 여러 사람의 메일로 알림을 보냈으면 합니다.
안녕하세요~^^
올려주신 코드를 활용해서
게시글 작성자가 본인의 글에 댓글을 남겼을 때만
본인과 관리자에게 알림을 보내고 싶으신 건지요?
기존의 코드 대신 아래의 코드를 활용해보시겠어요?
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();
}
}
}
위의 코드에서 이메일주소 부분에는
게시글 작성자 본인이 댓글을 남겼을 때 알림을 보내려는 관리자 이메일로 교체해서 확인해보시겠어요?
고맙습니다.