워드프레스 게시판 KBoard(케이보드) 사용중입니다.
비회원이 쓴 게시글에 답글 달면 메일 보내지는 기능이 되는지 문의드립니다.
게시판 입력필드에 email 란을 추가 하고,
테마의 functions.php 에
기존 글들 보고 소스를 넣어 보았는데, 메일이 보내지지 않아 문의드립니다.
안녕하세요.
최신글 이메일 알림 기능을 사용하지 않고도 확인해보시겠어요?
워드프레스 관리자 -> KBoard -> 게시판 목록 -> 게시판 선택 -> 기본설정 탭에서
최신글 이메일 알림 입력 필드를 임시로 비운 상태에서도 확인해보세요.
만약, 최신글 이메일 알림 기능을 사용하지 않을 때
정상적으로 동작한다면
실제 메일을 보내는 기능은 서버 세팅에 의존하기 때문에
서버 관리자 또는 웹호스팅 업체에도 문의를 해보셔야 할 듯합니다.
고맙습니다.
최신글 이메일 알림은 성공적으로 메일이 보내지는데,
답글에 대한 메일이 보내지지 않아요.
위 소스에서 $mail->send();
윗줄까지 실행되는건 확인 했는데,
왜 메일이 보내지지 않는건지 모르겠어요. ㅠ.ㅠ.
contact forms 플러그인도 사용하는데, 여기서도 메일이 제대로 보내져요..
WP Mail SMTP 플러그인을 설치해 봤는데,
그래도 현상은 똑같아요..
메일이 안 보내지는 원인이 뭐가 있을까요?
안녕하세요.
kboard_comments_insert 액션은 댓글 작성 시 코드를 추가하고 실행되게 하는 액션입니다.
kboard_document_insert 액션은 게시글 작성 시 코드를 추가하고 실행되게 하는 액션입니다.
비회원(원글작성자)이 작성한 게시글에 답글이 달렸을 때
원글작성자에게 메일을 보내고 싶으신 건지요?
별도로 코드를 수정하지 않으셔도 될 듯합니다.
올려주신 코드를 적용하시면
1. 로그인 사용자가 원글작성자일 때 답글이 달리면
회원가입 시 입력한 이메일로 알림을 보냅니다.
2. 비로그인 사용자가 원글작성자일 때 답글이 달리면
KBoard 게시판 입력 필드 중 메타키가 email인 필드에 입력된 메일 주소로 알림을 보냅니다.
3. 로그인 사용자가 아니거나
비로그인 사용자가 이메일 필드에 메일 주소를 입력하지 않은 경우에는
알림을 보내지 않습니다.
고맙습니다.
안녕하세요..
게시판에 비회원이 남긴 글에 대한 답글을 메일로 보내고 싶은데, 회원에 대한 답글이 있어 소스 올립니다.
add_action('kboard_document_insert', 'my_reply_email_notify', 10, 2);
function my_reply_email_notify($content_uid, $board_id){
$content = new KBContent();
$content->initWithUID($content_uid);
$parent = $content->getTopContent();
if($content->uid != $parent->uid){
if($parent->member_uid){
$user_info = get_userdata($parent->member_uid);
$notify_email = $user_info->user_email;
}
else if($parent->option->email){
$notify_email = $parent->option->email;
}
else{
$notify_email = '';
}
if($notify_email){
$url = new KBUrl();
$mail = kboard_mail();
$mail->to = $notify_email;
$mail->title = "답글이 등록 되었습니다.";
$mail->content = $content->content;
$mail->url = $url->getDocumentRedirect($content->uid);
$mail->url_name = '페이지로 이동';
$mail->send();
}
}
}
비회원에게 답글 메일을 보낼경우 수정해야 할 부분 부탁드려요^^
감사합니다.^^
코드 남겨주실 땐 에디터의 "코드 스니펫 삽입" 기능으로 남겨주셔야 제대로 된 답변을 받으실 확률이 높아집니다.
참고 부탁드립니다.
코드를 올려주실 땐 에디터의 코드 스니펫 삽입 기능을 이용 부탁드립니다.
그렇지 않으면 코드가 이상해져서 에러 나는 코드로 바뀌거나,
질의응답 시 의사소통에 오해와 문제가 생길 수도 있기 때문입니다.
KBoard 댓글 입력 필드를 추가하는 방법은
게시글에 입력 필드를 추가하는 방법과 다릅니다.
댓글에 입력 필드를 추가하시려면
워드프레스 관리자 -> 외모 -> 테마 편집기 페이지에서 functions.php 파일 하단에
아래의 코드를 추가해보시겠어요?
add_action('kboard_comments_field', 'my_kboard_comments_field', 10, 4);
function my_kboard_comments_field($field_html, $board, $content_uid, $commentBuilder){
if($board->id == '1'){ // 실제 게시판 id로 적용해주세요.
?>
<div class="comments-field field-file1">
<label class="comments-field-label" for="comment_option_email">이메일</label>
<input type="text" id="comment_option_email" name="comment_option_email" value="">
</div>
<?php
}
}
위의 코드에서 $board->id == '1' 부분은 실제 게시판 id로 적용해보세요.
고맙습니다.
functions.php 에 삽입한 소스요.
add_action('kboard_comments_insert', 'my_kboard_comments_insert', 10, 2);
function my_kboard_comments_insert($comment_uid, $content_uid){
$comment = new KBComment();
$comment->initWithUID($comment_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) {
$title = '등록하신 댓글에 답변이 등록 되었습니다.'; // 알림 이메일 제목
$content = '등록하신 댓글에 대해 답변이 등록 되었습니다.'; // 메일 본문 내용
wp_mail($user->user_email, $title, $content);
}
}
else if($parent->option->email){
$title = '등록하신 댓글에 답변이 등록 되었습니다.'; // 알림 이메일 제목
$content = '등록하신 댓글에 대해 답변이 등록 되었습니다.'; // 메일 본문 내용
wp_mail($parent->option->email, $title, $content);
}
}
}
그리고 입력 필드의 메타키는 email 로 했습니다.
안녕하세요~^^
실제 테마 쪽 functions.php 파일에 추가하신 코드는 어떻게 되시는지요?
에디터의 코드 스니펫 삽입 기능으로 올려주시겠어요?
게시판 입력 필드 중 이메일 입력 필드의 메타키는 어떻게 설정하셨는지도 알려주시면
코드 상 문제가 있는지 확인해보겠습니다.
고맙습니다.