그누커머스 여분필드 관련 질문입니다.
본문
안녕하세요
그누커머스 사용중입니다.
1. 여분필드에 미리 입력된 내용보여주고 글을 쓰기위해 클릭시 사라지게 하고 싶습니다.
본문에 여분필드 이름이 나오지 않아 임의로 아래 코드처럼 바꿨는데
여분필드에 미리 입력돼 있으며, 사용자가 임의로 수정시 본문에서도 그대로 보여지는데
여분필드에서는 미리 입력된 내용을 보여주고 사용자가 글을 작성할때는 그 내용이 사라지며,
글작성후 본문에서는
색상: XXX
이렇게 표시되게 하고 싶습니다.
<th scope="row"><label for="wr_3"><?php _e('색상', GC_NAME);?><strong class="sound_only"><?php _e('필수', GC_NAME);?></strong></label></th>
<td><input type='text' name='wr_3' itemname="항목이름3" value="색상: <?php echo $input_posts['wr_3']?>" > </td></tr>
2.글 작성시 여분필드의 텍스트 박스가 잘 보이게 하고 싶습니다.
아래글 답변대로 text -> textarea 로 바꿔 보았지만 변화가 없어서 질문 드립니다.
3.
테스트중인 사이트에서는 잘 되었는데 본 사이트에서는 에러가 나네요
Parse error: syntax error, unexpected '$input_posts' (T_VARIABLE) in /wp-content/themes/Avada-Child-Theme/gnucommerce/skin/board/default/view.skin.php on line 155
<div id="bo_v_con"><?php//메타 데이터 초기화
$input_posts = array(
'wr_1' => '', //여분필드1
$input_posts = array(
이 부분이 view.skin.php 155번째줄 입니다.
funtions.php
view.skin.php
write.skin.php
에 각각 여분필드 소스 넣었습니다.
(hook.skin.php은 사용하지 않았습니다.)
//테마 functions.php에
add_action('write_update_metadata', 'write_custom_meta_hook', 10, 2); //글을 쓰거나 글을 수정할때 쓰는 hook
function write_custom_meta_hook($wr_id, $w){
if( $w == '' ){ //글 입력
} else if ($w == 'u') { //글 수정
}
//메타데이터
$etc_array = array();
$input_posts = array(
'wr_1', //여분필드1
'wr_2', //여분필드2
'wr_3', //여분필드3
'wr_4', //여분필드4
'wr_5', //여분필드5
'wr_6', //여분필드6
'wr_7', //여분필드7
'wr_8', //여분필드8
);
foreach( $input_posts as $p ){
$etc_array[$p] = isset($_POST[$p]) ? sanitize_text_field($_POST[$p]) : '';
}
update_metadata( GCBOARD_META_TYPE, $wr_id, 'etc_inputs', $etc_array ); //메타데이터를 업데이트
}
//view.skin.php 에
<?php//메타 데이터 초기화
$input_posts = array(
'wr_1' => '', //여분필드1
'wr_2' => '', //여분필드2
'wr_3' => '', //여분필드3
'wr_4' => '', //여분필드4
'wr_5' => '', //여분필드5
'wr_6' => '', //여분필드6
'wr_7' => '', //여분필드7
'wr_8' => '', //여분필드8
);
$input_posts = wp_parse_args(get_metadata(GCBOARD_META_TYPE, $wr_id, 'etc_inputs', true ), $input_posts);
?>
<div><?php echo $input_posts['wr_1']?></div>
//write.skin.php 첫줄에
//메타 데이터 초기화
$input_posts = array(
'wr_1' => '', //여분필드1
'wr_2' => '', //여분필드2
'wr_3' => '', //여분필드3
'wr_4' => '', //여분필드4
'wr_5' => '', //여분필드5
'wr_6' => '', //여분필드6
'wr_7' => '', //여분필드7
'wr_8' => '', //여분필드8
);
$input_posts = wp_parse_args(get_metadata(GCBOARD_META_TYPE, $wr_id, 'etc_inputs', true ), $input_posts);
//write.skin.php 120번째줄 쯤 '내용'위에
<td>항목이름</td>
<td><input type='text' name='wr_1' itemname="항목이름" value="<?php echo $input_posts['wr_1']?>" > </td>
혹시나 싶어 위 3개 파일 백업후 오버라이딩 하지 않고 테스트사이트에서 쓰던 파일로 직접 교체 했을때는 위 에러는 안나지만 본문에 여분필드를 하나도 불러오질 못하네요,,, 제가 뭘 빼먹은 걸까요?
너무 많은 내용이지만 도움 부탁드립니다.
!-->!-->!-->답변 2
1. html5 의 placeholder 를 쓰시는게 낮지 않을까 싶습니다.
http://www.w3schools.com/tags/tryit.asp?filename=tryhtml5_textarea_placeholder
update_metadata
함수는 데이터를 저장하는 역할을 하고,
get_metadata
함수는 데이터를 불러오는 역할을 합니다.
잘 안되시면, 부분 적용한 소스만 적지 마시고
view.skin.php 전체 소스랑,
write.skin.php 전체 소스를 올려 놓으세요.
그렇게 해야 안되는 원인을 찾을수 있을것 같네요...