케이보드 - 이메일 필드

워드프레스 KBoard에서 이메일 필드 추가하기

이전 글에서 KBoard에 새로운 필드를 추가하는 방법을 설명했습니다. 어떤 분이 이메일(Email) 필드를 추가하는 데 어려움이 있다고 해서 케이보드에서 이메일 필드를 추가하는 방법에 대해 글을 쓰려고 마음 먹고 있었습니다. 이 글에서는 워드프레스 게시판 플러그인인 케이보드(Kboard)에서 이메일 필드를 추가하는 방법을 간단히 살펴보겠습니다.

KBoard에 새로운 필드 추가하기

우선 KBoard에서 텍스트 필드를 추가하는 대략적인 프로세스는 다음 YouTube 영상을 통해 참고하시기 바랍니다. 아래에서 설명하는 이메일 필드 추가도 이와 비슷한 프로세스로 진행됩니다.

KBoard에서 이메일 필드 추가하기

이메일 필드를 추가하려면 editor.php 파일과 document.php 파일 등 두 개의 파일을 수정해야 합니다. FTP를 통해 KBoard 스킨 폴더로 이동합니다. 저는 default(기본) 스킨을 이용하겠습니다. 이 경우 경로는 /wp-content/plugins/kboard/skin/default가 됩니다.

editor.php 파일 수정

editor.php 파일을 파일 편집기로 열도록 합니다. 아래의 부분을 찾도록 합니다(default 스킨이 아닌 경우 약간 차이가 있을 수 있습니다).

<?php elseif(!is_user_logged_in()):?>
<div class="kboard-attr-row">
<label class="attr-name"><?php echo __('Author', 'kboard')?></label>
<div class="attr-value"><input type="text" name="member_display" value="<?php echo $content->member_display?>"></div>
</div>
<div class="kboard-attr-row">
<label class="attr-name"><?php echo __('Password', 'kboard')?></label>
<div class="attr-value"><input type="password" name="password" value="<?php echo $content->password?>"></div>
</div>
<div class="kboard-attr-row">
<label class="attr-name"><img src="<?php echo kboard_captcha()?>" alt=""></label>
<div class="attr-value"><input type="text" name="captcha" value=""></div>
</div>
<?php endif?>

이 부분을 아래와 비슷하게 수정하도록 합니다.

<?php elseif(!is_user_logged_in()):?>
<div class="kboard-attr-row">
<label class="attr-name"><?php echo __('Author', 'kboard')?></label>
<div class="attr-value"><input type="text" name="member_display" value="<?php echo $content->member_display?>"></div>
</div>
<div class="kboard-attr-row">
<label class="attr-name"><?php echo __('Password', 'kboard')?></label>
<div class="attr-value"><input type="password" name="password" value="<?php echo $content->password?>"></div>
</div>

<?php endif?>

<div class="kboard-attr-row">
<label class="attr-name"><?php echo __('Email', 'kboard')?></label>
<div class="attr-value"><input type="text" name="kboard_option_email" value="<?php echo $content->option->email?>"></div>
</div>

<?php if(!is_user_logged_in()):?>

<div class="kboard-attr-row">
<label class="attr-name"><img src="<?php echo kboard_captcha()?>" alt=""></label>
<div class="attr-value"><input type="text" name="captcha" value=""></div>
</div>
<?php endif?>

위에서는 일부러 로그인 사용자(관리자 제외)도 이메일 주소를 입력하도록 설정했습니다. 위에서 핵심이 되는 라인은 다음 부분입니다:

<input type="text" name="kboard_option_email" value="<?php echo $content->option->email?>">

document.php 파일 수정

editor.php 파일을 사용자가 필드 값을 입력하는 폼입니다. 필드에 입력한 값을 관리자나 본인이 볼 수 있도록 해야 합니다. 이 부분을 위해 document.php 파일을 수정해줘야 합니다. 여기서 고려 사항은 단순히 <?php echo $content->option->email?> 코드를 아무렇게나 추가할 경우 일반 사용자도 의도치 않게 다른 사람의 이메일을 볼 수 있다는 점입니다.

document.php 파일에서 다음 부분을 찾도록 합니다.

<div class="detail-attr detail-view">
<div class="detail-name"><?php echo __('Views', 'kboard')?></div>
<div class="detail-value"><?php echo $content->view?></div>
</div>
</div>

이 부분을 다음과 같이 수정해주도록 합니다.

<div class="detail-attr detail-view">
<div class="detail-name"><?php echo __('Views', 'kboard')?></div>
<div class="detail-value"><?php echo $content->view?></div>
</div>

<?php if($board->isEditor($content->member_uid) || $board->isAdmin() ):?>
<div class="detail-attr detail-view">
<div class="detail-name"><?php echo __('Email', 'kboard')?></div>
<div class="detail-value"><?php echo $content->option->email?></div>
</div>
<?php endif?>

</div>

실제 작동

이렇게 처리하면 관리자나 게시글 작성자만 이메일을 확인할 수 있습니다. 그럼 실제 어떻게 작동하는지 살펴보겠습니다. 글쓰기 화면입니다.

케이보드 - 이메일 필드

위의 그림과 같이 이메일(Email) 필드가 추가되었습니다. 실제 모양은 테마에 따라 다릅니다. 위의 스크린샷은 Salient 테마일 때의 모양입니다. 테마가 괜찮아서 그런지 폼 모양이 나쁘지 않네요. 그럼 본문의 모양을 볼까요?

케이보드 이메일 필드

관리자나 작성자(로그인 사용자인 경우)에게만 Email 필드가 표시됩니다. 작성자라도 게스트로 작성하면 이메일이 표시되지 않습니다.

이처럼 이메일과 같이 일반 사용자에게 공개되어서는 안 되는 정보는 이 글의 방법을 응용하시면 됩니다. 한국형 게시판 플러그인인 Kboard는 이처럼 필드를 자유롭게 추가할 수 있는 유연성을 제공합니다.

 


Tips & Tricks

다음 내용은 PHP 코드에 익숙한 사용자를 위한 것입니다.

사실 위의 방법은 최선이 아닙니다. 왜냐하면 로그인 사용자는 이메일 주소를 넣을 필요가 없는데, 위의 코드를 사용할 경우 로그인 사용자도 이메일 주소를 입력해야 하기 때문입니다.

이 문제를 해결하려면 editor.php에서 이메일 주소 부분을 비로그인 사용자(게스트) 코드 안에 넣어야 합니다. 그러면 로그인 사용자는 이메일을 입력할 필요가 없습니다.

문제는 document.php에서 로그인 사용자가 글을 작성할 경우 어떻게 작성자의 이메일을 회원 등록 정보에서 가져올 것인가입니다. 이 부분은 다음 코드를 사용하면 됩니다.

$user = $content->member_uid;
$current_user = get_userdata($user);
echo $current_user->user_email;

참고:



기부를 통해 이 블로그를 후원하실 수 있습니다.
워드프레스 설치/제작/문제해결이 필요한 경우 서비스(유료)를 요청해주세요.