안녕하세요
항상 많은 도움주셔서 감사합니다!
이메일 필드를 추가하고 작성글에 표시되게 하고싶습니다
비회원은 직접 입력하도록, 회원은 자동으로 이메일을 갖고올 수 있도록 작업중인데
비회원 이메일 필드는 https://www.cosmosfarm.com/threads/document/6850 를 참고해서
도메인 선택할 수 있는 필드로 editor.php파일에 코드 넣었습니다.
그리고 회원은 메일 정보를 자동으로 갖고올 수 있도록 document.php에 아래 코드를 넣었습니다.
정상적으로 작동하는데 문제는 아래 코드를 넣으면
비회원일땐 메일 주소가 제대로 표시되는데 회원일땐 이메일 주소 앞에 @가 붙습니다.
<div class="detail-attr detail-email">
<div class="detail-name"><?php echo __('Billing email', 'kboard')?></div>
<div class="detail-value"><?php echo $content->option->email01,'@', $content->option->email02;
$user = $content->member_uid;
$current_user = get_userdata($user);
echo $current_user->user_email;
?></div>
</div>
<?php echo $content->option->email01,'@', $content->option->email02; ?>
'@'때문인 것 같은데 '@' 표시가 비회원일때만 표시될 수 있게끔 할 수는 없을까요?
그리고 하나만 더 여쭤보고싶은게 있습니다. 제가 초보라 아무것도 모릅니다ㅠㅠ
댓글입력 시 작성자에게 메일이 발송되는 것에 대한 문의입니다.
아래 코드를 functions.php에 넣었더니 회원에게는 메일이 잘 갑니다만 비회원에게는 발송되지 않습니다.
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->send();
}
}
}
아래 코드를 넣어 작성글에 비회원 이메일을 표시되게할건데,
<?php echo $content->option->email01,'@', $content->option->email02; ?>
(↑알려주실 코드로 변경할 예정)
관리자가 댓글 입력 시 이 표시되는 (비회원)이메일로 댓글메일발송을 할 방법이 있을까요?
비회원이 글작성시 입력한 이메일 주소에 댓글메일을 발송하고 싶습니다!
도와주세요ㅠㅠ
KBoard 플러그인 게시판 스킨 파일 중 document.php 파일에서
회원이 작성한 게시글인지 체크하시려면 $content->member_uid를 활용하시면 가능할 듯합니다.
아래의 코드를 활용해서 확인해보시겠어요?
<?php if($content->member_uid):?>
<?php
$user = $content->member_uid;
$current_user = get_userdata($user);
echo $current_user->user_email;
?>
<?php else:?>
<?php echo $content->option->email01 ,'@', $content->option->email02;?>
<?php endif?>
위와 같이 적용하면 로그인 사용자가 작성한 게시글의 이메일에는
회원가입 시 입력한 이메일이 표시되며 비로그인 사용자가 작성한 게시글의 이메일에는
게시글 작성 시 입력한 이메일이 표시됩니다.
고맙습니다.
안녕하세요~^^
워드프레스에 내장된 is_user_logged_in() 함수를 활용하시면
로그인 여부를 체크해서 로그인 사용자와 비로그인 사용자에게 다른 코드를 적용하실 수 있습니다.
자세한 내용은 아래 링크를 참고해보세요.
https://developer.wordpress.org/reference/functions/is_user_logged_in/
고맙습니다.
빠른 답변 감사합니다ㅠㅠ 알려주신 링크 참고해서 이것저것 넣어봤는데 제대로 작동이 안되서 다시한번 여쭤봅니다ㅠㅠ
<?php echo $content->option->email01 ,'@', $content->option->email02;?>
에서 '@' 부분이 회원 작성글(도큐멘트)에는 출력이 안되게끔 하려면 어떻게 해야하나요ㅠㅠ
$content->option->email01와 $content->option->email02 쪽에는 어떤 값들이 입력되는지요?
로그인 사용자, 비로그인 사용자 구분해서 어떤 값들이 들어가는지
구체적으로 설명해주시겠어요?
고맙습니다.
안녕하세요! 답변 정말 감사드립니다ㅠㅠ
에디터에 아래 코드를 비회원에게만 보이게 넣어 비회원의 이메일 정보만 입력할 수 있도록 필드를 만들었습니다.
<input type="text" name="kboard_option_email01" id="email01" style="width: 100px;" value="<?php echo $content->option->email01?>" title="이메일 아이디">@<input type="text" name="kboard_option_email02" id="email02" style="width: 100px;" value="<?php echo $content->option->email03?>" title="도메인" />
<select name="kboard_option_email03" class="email-domain" title="도메인" onchange="jQuery('input[name=kboard_option_email02]').val(this.value)">
<option value="직접입력"<?php if($content->option->email03 == '직접입력'):?> selected="selected"<?php endif?>>직접입력</option>
<option value="naver.com"<?php if($content->option->email03 == 'naver.com'):?> selected="selected"<?php endif?>>naver.com</option>
</select>
$content->option->email01은 앞에 아이디부분이고, $content->option->email02은 도메인을 갖고올 수 있게 하여 그 사이에 '@'를 넣은 것 입니다.
도큐멘트에 아래 코드를 넣어 이메일 정보를 출력하고 싶은데
<?php echo $content->option->email01 ,'@', $content->option->email02;?>
<?php
$user = $content->member_uid;
$current_user = get_userdata($user);
echo $current_user->user_email;
?>
이 중 회원정보를 자동으로 갖고오는 코드는
<?php
$user = $content->member_uid;
$current_user = get_userdata($user);
echo $current_user->user_email;
?>
로 넣어 제대로 적용됩니다.
그리고 비회원 정보를 출력하려고 <?php echo $content->option->email01 ,'@', $content->option->email02;?> 이 코드를 넣었는데
이 코드에서 '@'가 회원글에서도 출력이 됩니다.(예:@test@test.com 이런식으로요ㅠㅠ)
'@'를 비회원에게만 표시되게끔 하고싶습니다!
와 감사합니다! 잘 적용되었습니다!