Kboard 기능 추가 시  functions.php 코드 호환성 궁금합니다.(개인정보약관확인 필드추가 + 답글 글쓰기 영역 필드 삭제)

안녕하세요 Kboard 필드 추가(개인정보약관확인 필드)와 답글 관련 필드 (답글 글쓰기 영역 필드 삭제)코드 두가지의 호환성에 대해서 궁금합니다.

위치는 테마 functions.php 에 삽입하였고 두 코드를 따로 한개씩 입력했을때는 두개다 호환이 되는데 같이쓰면 홈페이지 접속이 안됩니다.

코드좀 바주실분 계신가요 ㅠㅠ

 

아래는 개인정보약관확인 필드입니다.

add_filter('kboard_skin_fields', 'my_kboard_skin_fields', 10, 2);

function my_kboard_skin_fields($fields, $board){
	
	if($board->id == '1'){ // 실제 적용될 게시판 ID 값으로 변경해주세요.
		
		if(!isset($fields['agree_checkbox'])){
			$fields['agree_checkbox'] = array(
				'field_type' => 'agree_checkbox',
				'field_label' => '홈페이지 이용 및 개인정보 동의',
				'class' => 'kboard-attr-checkbox',
				'hidden' => '',
				'meta_key' => '',
				'field_name' => '',
				'permission' => '',
				'roles' => '',
				'default_value' => '',
				'placeholder' => '',
				'required' => '',
				'show_document' => '',
				'description' => '',
				'close_button' => 'yes'
			);
		}
	}
	
	return $fields;
}
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($field['field_type'] == 'agree_checkbox'){
		ob_start();
		?>
	
		<div class="kboard-attr-row meta-key-<?php echo esc_attr($field['meta_key'])?> required">
			<label class="attr-name" for="agree_checkbox" style="display:none">
				<span class="field-name"><?php echo esc_html($field['field_name'] ? $field['field_name'] : $field['field_label'])?></span>
			</label>
			<div class="attr-value" style="margin:0;">
				<div style="margin: 20px 0; padding: 10px; height: 200px; background-color: #f2f2f2; overflow-y: auto;">
					<p><b>홈페이지 이용약관</b></br>
					제1조 서비스 내용 및 비용  </br>
1. 워드프레스 반응형홈페이지 디자인 선택형 시안을 1개 제공 한다.</br>
2. 페이지 수는 메인1페이지,서브4페이지,게시판3페이지로 총 8페이지를 제공 한다.</br>
3. 도메인1개와 하드1G, 트래픽을 무제한 제공 한다. </br>
4. 100글자 이내 텍스트 수정 , 오탈자, 버그 하자는 무상이며, 그외의 사항은 TJWEB.CO.KR 유지보수 안내 의 내용으로 진행 하도록 한다</br>




</p>


				</div>
				<div style="text-align:center;">
					<input type="hidden" class="required" name="kboard_option_<?php echo esc_attr($field['meta_key'])?>" value="1">
					<label><input type="checkbox" class="required" name="kboard_option_<?php echo esc_attr($field['meta_key'])?>" value="1"> 홈페이지 이용 및 개인정보 활용에 동의합니다.</label>
				</div>
			</div>
		</div>
		<?php
		$field_html = ob_get_clean();
	}
	
	return $field_html;
}

 

 

아래는 답글 글쓰기 영역 필드 삭제에 관한 코드입니다.

add_filter('kboard_skin_fields', 'my_kboard_skin_fields', 10, 2);
function my_kboard_skin_fields($fields, $board){
	$builder_mod = kboard_builder_mod();
	$parent_uid = kboard_parent_uid();
	
	if($board->id == '1' && $builder_mod == 'editor'){
		if($parent_uid){
			foreach($fields as $key => $field){
				// 답글일 때 지울 필드의 메타키로 교체해주세요.
				if(in_array($field['meta_key'], array('5c3c38cfcf21c', '5c3c38fbcf21d', '5c3c3918cf21e'))){
					unset($fields[$key]);
				}
				
				if(in_array($field['meta_key'], array('attach'))){
					$fields[$key]['field_name'] = '파일';
				}
			}
		}
		else{
			foreach($fields as $key => $field){
				// 답글이 아닐 때 지울 필드의 메타키로 교체해주세요.
				if(in_array($field['meta_key'], array('5c3c38cfcf21c'))){
					unset($fields[$key]);
				}
			}
		}
	}
	
	return $fields;
}

 

워드프레스 에러 기술지원 서비스 전문가에게 맡기세요
워드프레스 에러 기술지원 서비스 전문가에게 맡기세요
  • 안녕하세요~^^

    올려주신 코드를 확인해보니 PHP 함수명이 중복 사용된 걸로 보입니다.

    워드프레스 필터는 여러 개 사용할 수는 있으나 같은 함수명은 사용할 수 없습니다.

     

    올려주신 코드 중에서

    아래의 코드를

    add_filter('kboard_skin_fields', 'my_kboard_skin_fields', 10, 2);
    function my_kboard_skin_fields($fields, $board){
    	$builder_mod = kboard_builder_mod();
    	$parent_uid = kboard_parent_uid();
    	
    	if($board->id == '1' && $builder_mod == 'editor'){
    		if($parent_uid){
    			foreach($fields as $key => $field){
    				// 답글일 때 지울 필드의 메타키로 교체해주세요.
    				if(in_array($field['meta_key'], array('5c3c38cfcf21c', '5c3c38fbcf21d', '5c3c3918cf21e'))){
    					unset($fields[$key]);
    				}
    				
    				if(in_array($field['meta_key'], array('attach'))){
    					$fields[$key]['field_name'] = '파일';
    				}
    			}
    		}
    		else{
    			foreach($fields as $key => $field){
    				// 답글이 아닐 때 지울 필드의 메타키로 교체해주세요.
    				if(in_array($field['meta_key'], array('5c3c38cfcf21c'))){
    					unset($fields[$key]);
    				}
    			}
    		}
    	}
    	
    	return $fields;
    }

    아래의 코드로 교체해보시겠어요?

    add_filter('kboard_skin_fields', 'my_kboard_skin_fields1', 10, 2);
    function my_kboard_skin_fields1($fields, $board){
    	$builder_mod = kboard_builder_mod();
    	$parent_uid = kboard_parent_uid();
    	
    	if($board->id == '1' && $builder_mod == 'editor'){
    		if($parent_uid){
    			foreach($fields as $key => $field){
    				// 답글일 때 지울 필드의 메타키로 교체해주세요.
    				if(in_array($field['meta_key'], array('5c3c38cfcf21c', '5c3c38fbcf21d', '5c3c3918cf21e'))){
    					unset($fields[$key]);
    				}
    				
    				if(in_array($field['meta_key'], array('attach'))){
    					$fields[$key]['field_name'] = '파일';
    				}
    			}
    		}
    		else{
    			foreach($fields as $key => $field){
    				// 답글이 아닐 때 지울 필드의 메타키로 교체해주세요.
    				if(in_array($field['meta_key'], array('5c3c38cfcf21c'))){
    					unset($fields[$key]);
    				}
    			}
    		}
    	}
    	
    	return $fields;
    }

    기존의 코드와 비교해보면 my_kboard_skin_fields 함수명이 겹치던 문제를

    my_kboard_skin_fields1로 수정된 것을 확인하실 수 있습니다.

    고맙습니다.

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