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/
고맙습니다.