컨택트폼 스킨 숏코드 관련

하나의 컨텍트폼 게시판을 생성하고 카테고리를 A,B 라고 설정하고
각각의 워드프레스 페이지 1번, 2번이 있다고 가정할 경우
1번 페이지에는 A카테고리가 자동 적용된 컨택트 글쓰기폼
2번 페이지에는 B카테고리가 자동 적용된 컨택트 글쓰기폼

이렇게 사용할 수 있는 숏코드나 수정방법이 있을까요? 

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

    아래의 코드를 테마 functions.php 파일에 입력해보시겠어요?

    add_filter('kboard_init_category1_list', 'kboard_init_category1_list_220111', 10, 2);
    function kboard_init_category1_list_220111($category1_list, $board){
    	if(get_the_ID() == 2){ // 실제 페이지 ID를 입력해주세요,
    		return 'AAA';
    	};
    	
    	return $category1_list;
    }
    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'){ // 실제 게시판 id로 적용해주세요.
    		if($field['field_type'] == 'category1'){
    			$fields = $board->fields();
    			$meta_key = (isset($field['meta_key']) && $field['meta_key']) ? $field['meta_key'] : '';
    			$field_name = (isset($field['field_name']) && $field['field_name']) ? $field['field_name'] : $field['field_label'];;
    			$required = (isset($field['required']) && $field['required']) ? $field['required'] : $field['required'];;
    			
    			ob_start();
    			?>
    			<?php if(!$board->isTreeCategoryActive()):?>
    				<?php if($board->initCategory1()):?>
    					<div class="kboard-attr-row <?php echo esc_attr($field['class'])?> <?php echo esc_attr($required)?>">
    						<label class="attr-name" for="<?php echo esc_attr($meta_key)?>"><span class="field-name"><?php echo esc_html($field_name)?></span><?php if($required):?> <span class="attr-required-text">*</span><?php endif?></label>
    						<div class="attr-value">
    							<select id="<?php echo esc_attr($meta_key)?>" name="category1" class="<?php echo esc_attr($required)?>">
    								<?php while($board->hasNextCategory()):?>
    								<option value="<?php echo $board->currentCategory()?>"<?php if(($content->category1?$content->category1:kboard_category1()) == $board->currentCategory()):?> selected<?php endif?>><?php echo $board->currentCategory()?></option>
    								<?php endwhile?>
    							</select>
    							<?php if(isset($field['description']) && $field['description']):?><div class="description"><?php echo esc_html($field['description'])?></div><?php endif?>
    						</div>
    					</div>
    				<?php endif?>
    			<?php endif?>
    			<?php
    			$field_html = ob_get_clean();
    		}
    		return $field_html;
    	}
    }

    고맙습니다.

  • 답변 감사드립니다.

    코드를 확인해보니 카테고리1 번호 페이지번호가 하나만 입력하게끔 되어있는데
    제가 원하는건

    A 컨텍트폼 게시판 -> a,b 카테고리 가 있다면 

    1 워드프레스 페이지 -> a카테고리
    2 워드프레스 페이지 -> b카테고리 입니다.

    글로 설명하다보니 설명이 빈약한점 양해바랍니다.

  • 안내해드린 코드를 아래처럼 적용해보시겠어요?

    add_filter('kboard_init_category1_list', 'kboard_init_category1_list_220111', 10, 2);
    function kboard_init_category1_list_220111($category1_list, $board){
    	if(get_the_ID() == 1){ // 실제 페이지 ID를 입력해주세요,
    		return 'AAA'; // 자동선택될 카테고리를 입력해주세요
    	}
    	elseif(get_the_ID() == 2){ // 실제 페이지 ID를 입력해주세요,
    		return 'BBB'; // 자동선택될 카테고리를 입력해주세요
    	}
    	
    	return $category1_list;
    }
    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'){ // 실제 게시판 id로 적용해주세요.
    		if($field['field_type'] == 'category1'){
    			$fields = $board->fields();
    			$meta_key = (isset($field['meta_key']) && $field['meta_key']) ? $field['meta_key'] : '';
    			$field_name = (isset($field['field_name']) && $field['field_name']) ? $field['field_name'] : $field['field_label'];;
    			$required = (isset($field['required']) && $field['required']) ? $field['required'] : $field['required'];;
    			
    			ob_start();
    			?>
    			<?php if(!$board->isTreeCategoryActive()):?>
    				<?php if($board->initCategory1()):?>
    					<div class="kboard-attr-row <?php echo esc_attr($field['class'])?> <?php echo esc_attr($required)?>">
    						<label class="attr-name" for="<?php echo esc_attr($meta_key)?>"><span class="field-name"><?php echo esc_html($field_name)?></span><?php if($required):?> <span class="attr-required-text">*</span><?php endif?></label>
    						<div class="attr-value">
    							<select id="<?php echo esc_attr($meta_key)?>" name="category1" class="<?php echo esc_attr($required)?>">
    								<?php while($board->hasNextCategory()):?>
    								<option value="<?php echo $board->currentCategory()?>"<?php if(($content->category1?$content->category1:kboard_category1()) == $board->currentCategory()):?> selected<?php endif?>><?php echo $board->currentCategory()?></option>
    								<?php endwhile?>
    							</select>
    							<?php if(isset($field['description']) && $field['description']):?><div class="description"><?php echo esc_html($field['description'])?></div><?php endif?>
    						</div>
    					</div>
    				<?php endif?>
    			<?php endif?>
    			<?php
    			$field_html = ob_get_clean();
    		}
    	}
    	return $field_html;
    }

    고맙습니다.

  • 빠른답변 감사합니다.
    올려주신거 토대로 밑에처럼 셋팅하였는데
    두개의 페이지 모두 카테고리 1=1부로 셋팅됩니다. 코드에 오류가 있을까요?

    추가로 관리자 게시판관리페이지에서
    카테고리 1에 1부,2부 콤마를 사용해서 셋팅한 상태입니다.

    add_filter('kboard_init_category1_list', 'kboard_init_category1_list_220111', 10, 2);
    function kboard_init_category1_list_220111($category1_list, $board){
    	if(get_the_ID() == 5602){ // 실제 페이지 ID를 입력해주세요,
    		return '1부'; // 자동선택될 카테고리를 입력해주세요
    	}
    	elseif(get_the_ID() == 5613){ // 실제 페이지 ID를 입력해주세요,
    		return '2부'; // 자동선택될 카테고리를 입력해주세요
    	}
    
    	return $category1_list;
    }
    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'){ // 실제 게시판 id로 적용해주세요.
    		if($field['field_type'] == 'category1'){
    			$fields = $board->fields();
    			$meta_key = (isset($field['meta_key']) && $field['meta_key']) ? $field['meta_key'] : '';
    			$field_name = (isset($field['field_name']) && $field['field_name']) ? $field['field_name'] : $field['field_label'];;
    			$required = (isset($field['required']) && $field['required']) ? $field['required'] : $field['required'];;
    
    			ob_start();
    			?>
    			<?php if(!$board->isTreeCategoryActive()):?>
    				<?php if($board->initCategory1()):?>
    					<div class="kboard-attr-row <?php echo esc_attr($field['class'])?> <?php echo esc_attr($required)?>">
    						<label class="attr-name" for="<?php echo esc_attr($meta_key)?>"><span class="field-name"><?php echo esc_html($field_name)?></span><?php if($required):?> <span class="attr-required-text">*</span><?php endif?></label>
    						<div class="attr-value">
    							<select id="<?php echo esc_attr($meta_key)?>" name="category1" class="<?php echo esc_attr($required)?>">
    								<?php while($board->hasNextCategory()):?>
    								<option value="<?php echo $board->currentCategory()?>"<?php if(($content->category1?$content->category1:kboard_category1()) == $board->currentCategory()):?> selected<?php endif?>><?php echo $board->currentCategory()?></option>
    								<?php endwhile?>
    							</select>
    							<?php if(isset($field['description']) && $field['description']):?><div class="description"><?php echo esc_html($field['description'])?></div><?php endif?>
    						</div>
    					</div>
    				<?php endif?>
    			<?php endif?>
    			<?php
    			$field_html = ob_get_clean();
    		}
    		return $field_html;
    	}
    }
    

     

  • 오타가 있었습니다.

    우선 올려주신 코드 중 맨 마지막 줄부터 4줄까지의 코드를

    변경해주세요.

    		}
    		return $field_html;
    	}
    }

    위 코드를 아래 코드처럼 변경해주세요.

    	    }
    	}
    	return $field_html;
    }

     

    비회원으로 확인 가능한 링크 남겨주시면

    확인해보겠습니다.

    고맙습니다.

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