비회원일때만 보이는 텍스트

안녕하세요

항상 많은 도움주셔서 감사합니다!
이메일 필드를 추가하고 작성글에 표시되게 하고싶습니다
비회원은 직접 입력하도록, 회원은 자동으로 이메일을 갖고올 수 있도록 작업중인데
비회원 이메일 필드는 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; ?>

(↑알려주실 코드로 변경할 예정)

관리자가 댓글 입력 시 이 표시되는 (비회원)이메일로 댓글메일발송을 할 방법이 있을까요?

비회원이 글작성시 입력한 이메일 주소에 댓글메일을 발송하고 싶습니다!

도와주세요ㅠㅠ

워드프레스 에러 기술지원 서비스 전문가에게 맡기세요
좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기
  • 안녕하세요~^^

    워드프레스에 내장된 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 이런식으로요ㅠㅠ) 

     '@'를 비회원에게만 표시되게끔 하고싶습니다!

  • 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?>

    위와 같이 적용하면 로그인 사용자가 작성한 게시글의 이메일에는

    회원가입 시 입력한 이메일이 표시되며 비로그인 사용자가 작성한 게시글의 이메일에는

    게시글 작성 시 입력한 이메일이 표시됩니다.

    고맙습니다.

  • 와 감사합니다! 잘 적용되었습니다!

워드프레스 에러 기술지원 서비스 전문가에게 맡기세요