이메일 연락처 입력창을 만들고 싶습니다.

안녕하세요.

케이보드로 게시판을 구성중입니다.

게시판에 글을 게시할 때 제목/작성자 이름 외에도 이메일과 연락처를 입력하게 만들고 싶습니다.

또한 입력한 이메일과 연락처는 관리자만 볼 수 있게 하고 싶습니다.

확장 필드에서 '텍스트/숨김'부분을 활용하면 될 것 같은데 자꾸 막히네요.

도움 부탁드리겠습니다. 

좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기
좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기
  • 일단 문제는 해결했습니다. 

     

    '텍스트/숨김'으로 입력 필드를 만들었습니다,.

    메타키 : user_email, billing_phone

    그리고 아래 링크를 참고하여 관리자만 관련 내용을 볼 수 있게 만들었습니다.

    https://www.thewordcracker.com/intermediate/add-email-field-in-wordpress-kboard-plugin/

    적용한 코드는 아래와 같습니다.

    				<?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->{'user_email'}?></div>
    					</div>
    				<?php endif?>
    				<?php if($board->isEditor($content->member_uid) || $board->isAdmin() ):?>
    					<div class="detail-attr detail-view">
    					<div class="detail-name"><?php echo __('Phone', 'kboard')?></div>
    					<div class="detail-value"><?php echo $content->option->{'billing_phone'}?></div>
    					</div>
    				<?php endif?>

     

    그런데 로그인한 사용자도 이메일과 연락처를 입력해야 하는 상황입니다.

    로그인한 사용자의 경우 별도로 이메일과 연락처를 입력할 필요가 없게 하려면 어떻게 해야하는지요?

    도움부탁드리겠습니다. 

  • 안녕하세요~^^

    현재 사용 중이신 KBoard 플러그인이

    워드프레스 관리자 페이지에서 입력 필드 설정 기능을 지원하는 버전이라면

    별도의 스킨 파일 수정 없이 테마 쪽 functions.php 파일에 코드를 추가해주시면 됩니다.

     

    1. KBoard 게시판에 게시글 작성 시 이메일과 연락처 필드를 추가하시려면

    적용해주신 것처럼 확장 필드의 "텍스트/숨김" 필드를 추가해주시면 됩니다.

     

    2. 추가하신 입력 필드를 게시글 본문 페이지에서 관리자만 볼 수 있게 하시려면

    워드프레스 관리자 -> 외모 -> 테마 편집기 페이지에서 functions.php 파일 하단에

    아래의 코드를 추가해보시겠어요?

    add_filter('kboard_document_add_option_value_field_html', 'my_kboard_document_add_option_value_field_html', 10, 4);
    function my_kboard_document_add_option_value_field_html($value_html, $field, $content, $board){
    	if($board->id == '1' && !$board->isAdmin() && in_array($field['meta_key'], array('user_email', 'billing_phone'))){
    		$value_html = '';
    	}
    	return $value_html;
    }

    위의 코드에서 $board->id == '1' 부분은 실제 게시판 id로 적용해주세요.

    위의 코드를 간략히 설명을 드리자면,

    1번 게시판 게시글 본문 페이지이에서

    추가하신 user_email, billing_phone 필드를 관리자일 때만 표시하는 코드입니다.

     

    3. 게시글 작성 시 로그인한 사용자에게 추가하신 입력 필드를 안 보이게 하시려면

    테마 쪽 functions.php 파일 하단에

    아래의 코드를 추가해보시겠어요?

    add_filter('kboard_get_template_field_html', 'my_kboard_get_template_field_html', 10, 4);
    function my_kboard_get_template_field_html($field_html, $field, $content, $board){
    	if($board->id == '1' && is_user_logged_in() && in_array($field['meta_key'], array('user_email', 'billing_phone'))){
    		$field_html = '';
    	}
    	return $field_html;
    }

    위의 코드에서 $board->id == '1' 부분은 실제 게시판 id로 적용해주세요.

    위의 코드를 간략히 설명을 드리자면,

    1번 게시판 게시글 작성 페이지이에서

    추가하신 user_email, billing_phone 필드를 비로그인 상태일 때만 표시하는 코드입니다.

    고맙습니다.

  • 답변 감사드립니다. 

    알려주신 방법으로하니 잘 작동합니다.

    두 가지 질문을 더 드려요.

    1. 스킨 파일을 수정하는 것보다 functions.php 수정을 권하신 이유가 보안 때문인지요?

    2. 관리자 뿐만 아니라 편집자도 이메일 등 내용을 보고 싶으면 '$board->isAdmin() ' 이 부분을 어떻게 수정하면 될지요? 

  • 1. 테마 쪽 functions.php 파일 쪽에 코드를 추가하도록 안내하는 이유는

    스킨 파일을 직접 수정하시게 되면 업데이트 시 작업하신 코드가 지워질 수도 있습니다.

    또, 저희가 모든 코드를 일일이 보고 안내해드리긴 어렵기 때문에

    저희가 개발 시 추가해둔 액션이나 필터를 이용하면 더욱 원활하게 안내를 해드릴 수 있습니다.

     

    2. 말씀하신 편집자는 게시글 작성자를 말씀하시는 건지요?

    비회원이라면 본인이 쓴 글의 입력 필드를 게시글 수정 시에만 확인할 수 있습니다.

    게시글을 쓴 사람과 현재 비회원으로 게시글을 보는 회원을 구분할 수 없기 때문입니다.

    고맙습니다.

     

좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기