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

안녕하세요.

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

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

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

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

도움 부탁드리겠습니다. 

좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기
워드프레스 에러 기술지원 서비스 전문가에게 맡기세요
  • 1. 테마 쪽 functions.php 파일 쪽에 코드를 추가하도록 안내하는 이유는

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

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

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

     

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

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

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

    고맙습니다.

     

  • 답변 감사드립니다. 

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

    두 가지 질문을 더 드려요.

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

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

  • 안녕하세요~^^

    현재 사용 중이신 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 필드를 비로그인 상태일 때만 표시하는 코드입니다.

    고맙습니다.

  • 일단 문제는 해결했습니다. 

     

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

    메타키 : 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?>

     

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

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

    도움부탁드리겠습니다. 

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

AI 상담