안녕하세요 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로 수정된 것을 확인하실 수 있습니다.
고맙습니다.