커스텀필드 추가를 php코드로 수행하는 법이 궁금합니다

저번에 문의드렸었는데 잘 되지 않아서 다시 문의드립니다,

 

게시판이 상당히 많아서 커스텀필드 추가 및 수정작업을 수동으로 하기가 너무 힘들어서요,

 

해당 작업을 php코드에서 for문돌려서 일괄적으로 하는 방법에 대해 문의드립니다,

 

ex) id 17번 게시판부터 72번 게시판까지 text타입의 'input_color' 생성

ex) id 17번 게시판부터 72번 게시판까지 text타입의 'input_color' 수정

ex) id 17번 게시판부터 72번 게시판까지 text타입의 'input_color' 삭제

 

관련 예제코드만 알려주시면 응용해서 적용가능할것 같습니다

좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기
좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기
  • 안녕하세요~^^

    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 입력 필드를 일괄 추가합니다.

    삭제의 경우에는 해당 코드를 지워주시면 가능합니다.

    고맙습니다.

  • 답변 감사합니다,

     

    1. 유형을 셀렉트박스로 해서 값을 넣어주려면 어떻게 입력을 하면 될까요?

    2. 이렇게 코드로 추가한 필드들의 순서를 제목 바로 아래로 넣어주려면 어떻게 해야 될까요?

  • 안녕하세요.

    입력 필드를 셀렉트 박스로 설정하고 제목 아래에 표시되게 하시려면

    아래의 코드를 활용해보시겠어요?

    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

    고맙습니다.

  • 필드가 여러개라면

    // 두번째 필드
    $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);

     

    이렇게 추가해주면 될까요?

  • 네, 맞습니다.

    KBoard 플러그인 입력 필드에서 meta_key가 중복된다면 원치 않는 결과를 얻을 수 있습니다.

    이전 댓글에 안내해드린 코드 중 input_color 부분을

    input_color2, input_color3, input_color4 이런 식으로 모두 교체해서 확인해보시겠어요?

    고맙습니다.

  • 코드를 적용해보니 워드프레스 테크니컬 에러가 뜨면서 사이트 접속이 안되네요, 

    if(!isset($fields['input_color'])){
    			$input_color = array(
    				'input_color' => array(

    이 부분이 기존에 알려주신 코드와 모양이 조금 다른데요,

    if(!isset($fields['input_color'])){
    			$fields['input_color'] = 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' => '업종명',

    이렇게 필드들을 쭉 추가해 두었는데요, 지금 주석처리해놓은 첫번째 필드가 주석을 해제하면 에러가 발생하고 있습니다

  • 실제 표시되는 에러 메시지를 같이 올려주시면

    저희가 도움을 드리기 수월합니다.

     

    올려주신 코드를 확인해보니 코드를 잘못 수정하신 듯합니다.

    $custom1 = array( 부분을 'custom1' => array(로 교체해서 확인해보시겠어요?

    고맙습니다.

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