저번에 문의드렸었는데 잘 되지 않아서 다시 문의드립니다,
게시판이 상당히 많아서 커스텀필드 추가 및 수정작업을 수동으로 하기가 너무 힘들어서요,
해당 작업을 php코드에서 for문돌려서 일괄적으로 하는 방법에 대해 문의드립니다,
ex) id 17번 게시판부터 72번 게시판까지 text타입의 'input_color' 생성
ex) id 17번 게시판부터 72번 게시판까지 text타입의 'input_color' 수정
ex) id 17번 게시판부터 72번 게시판까지 text타입의 'input_color' 삭제
관련 예제코드만 알려주시면 응용해서 적용가능할것 같습니다
실제 표시되는 에러 메시지를 같이 올려주시면
저희가 도움을 드리기 수월합니다.
올려주신 코드를 확인해보니 코드를 잘못 수정하신 듯합니다.
$custom1 = array( 부분을 'custom1' => array(로 교체해서 확인해보시겠어요?
고맙습니다.
if($board->id >= 37 && $board->id <= 60){
/*
if(!isset($fields['custom1'])){
$custom1 = array(
'custom1' = array(
'field_type' => 'text',
'field_label' => '방문일시',
'field_name' => '방문일시',
'class' => 'kboard-attr-text',
'meta_key' => 'custom1',
'permission' => '',
'roles' => array(),
'default_value' => '',
'placeholder' => '',
'description' => '',
'required' => 'yes',
'show_document' => 'yes',
'hidden' => '',
'close_button' => 'yes'
)
);
$first_array = array_splice($fields, 0, 1);
$fields = array_merge($first_array, $custom1, $fields);
}
*/
if(!isset($fields['custom2'])){
$fields['custom2'] = array(
'field_type' => 'text',
'field_label' => '업종명',
이렇게 필드들을 쭉 추가해 두었는데요, 지금 주석처리해놓은 첫번째 필드가 주석을 해제하면 에러가 발생하고 있습니다
올려주신 내용만으로는 원인을 파악하기 어렵습니다.
디버그 모드를 활성화해서 오류 메시지가 있는지 확인해보시겠어요?
실제 추가하신 코드도 함께 올려주시겠어요?
고맙습니다.
코드를 적용해보니 워드프레스 테크니컬 에러가 뜨면서 사이트 접속이 안되네요,
if(!isset($fields['input_color'])){
$input_color = array(
'input_color' => array(
이 부분이 기존에 알려주신 코드와 모양이 조금 다른데요,
if(!isset($fields['input_color'])){
$fields['input_color'] = array(
기존에는 이렇게 알려주셨었는데 어느 부분이 잘못된건지 잘 모르겠습니다
네, 맞습니다.
KBoard 플러그인 입력 필드에서 meta_key가 중복된다면 원치 않는 결과를 얻을 수 있습니다.
이전 댓글에 안내해드린 코드 중 input_color 부분을
input_color2, input_color3, input_color4 이런 식으로 모두 교체해서 확인해보시겠어요?
고맙습니다.
필드가 여러개라면
// 두번째 필드
$second_array = array_splice($fields, 0, 2);
$fields = array_merge($second_array, $input_color2, $fields);
// 세번째 필드
$third_array = array_splice($fields, 0, 3);
$fields = array_merge($third_array, $input_color3, $fields);
// 네번째 필드
$fourth_array = array_splice($fields, 0, 4);
$fields = array_merge($fourth_array, $input_color4, $fields);
이렇게 추가해주면 될까요?
안녕하세요.
입력 필드를 셀렉트 박스로 설정하고 제목 아래에 표시되게 하시려면
아래의 코드를 활용해보시겠어요?
add_filter('kboard_skin_fields', 'my_kboard_skin_fields', 10, 2);
function my_kboard_skin_fields($fields, $board){
if($board->id >= 17 && $board->id <= 72){
if(!isset($fields['input_color'])){
$input_color = array(
'input_color' => array(
'field_type' => 'select',
'field_label' => __('Select Box', 'kboard'),
'field_name' => '색상',
'class' => 'kboard-attr-select input-color',
'meta_key' => 'input_color',
'row' => array('red'=>array('label'=>'red'), 'blue'=>array('label'=>'blue')),
'default_value' => '',
'permission' => '',
'roles' => array(),
'description' => '',
'required' => '',
'show_document' => '',
'close_button' => 'yes'
)
);
$first_array = array_splice($fields, 0, 1);
$fields = array_merge($first_array, $input_color, $fields);
}
}
return $fields;
}
PHP array_splice 함수에 대한 자세한 내용은
아래의 링크를 참고해보세요.
https://www.php.net/manual/en/function.array-splice.php
array_merge 함수에 대한 자세한 내용은
아래의 링크를 참고해보세요.
https://www.php.net/manual/en/function.array-merge.php
고맙습니다.
답변 감사합니다,
1. 유형을 셀렉트박스로 해서 값을 넣어주려면 어떻게 입력을 하면 될까요?
2. 이렇게 코드로 추가한 필드들의 순서를 제목 바로 아래로 넣어주려면 어떻게 해야 될까요?
안녕하세요~^^
KBoard 플러그인에서 입력 필드를 PHP 코드로
여러 게시판에 추가하시려면
워드프레스 관리자 -> 외모 -> 테마 편집기 페이지에서 functions.php 파일 하단에
아래의 코드를 활용해보시겠어요?
add_filter('kboard_skin_fields', 'my_kboard_skin_fields', 10, 2);
function my_kboard_skin_fields($fields, $board){
if($board->id >= 17 && $board->id <= 72){
if(!isset($fields['input_color'])){
$fields['input_color'] = array(
'field_type' => 'text',
'field_label' => 'input_color',
'field_name' => 'input_color',
'class' => 'kboard-attr-text',
'meta_key' => 'input_color',
'permission' => '',
'roles' => array(),
'default_value' => '',
'placeholder' => '',
'description' => '',
'required' => '',
'show_document' => '',
'hidden' => '',
'close_button' => 'yes'
);
}
}
return $fields;
}
위의 코드를 적용하시면 17번 게시판부터 72번 게시판까지 text 입력 필드를 일괄 추가합니다.
삭제의 경우에는 해당 코드를 지워주시면 가능합니다.
고맙습니다.