그누프레스에 필드를 하나 추가하려면...

그누프레스에 필드를 하나 추가하려면...

QA

그누프레스에 필드를 하나 추가하려면...

본문

안녕하세요. 우선 thisgun님께서 답변을 해줘서 감사하게 사용하고 싶습니다. 현재 그누보드랑 필드를 추가하려면 코드랑 추가해서 사용을 할수 있는데요. 예를 들을 wr_7, wr_10등 여러가지 필드들을 생성해서 적용시키려구요. 그누프레스는 필드 추가시에 그누프레스 플러긴파일을 수정하지 않고 funtions.php파일을 이용해서 필드를 추가하는 방법이 없을까요? 이후에 업데이트시 그냥 디자인파일을 수정해서 사용하고 싶거든요. 그누프레스 간단하게 필드를 추가하는 방법을 알려주실수 있을까요?

이 질문에 댓글 쓰기 :

답변 2

현재 그누프레스의 기능이 포함된 그누커머스가 출시되어 그누프레스의 개발을 중단한 상태입니다. 

( 큰 문제가 발견되었을때만 업데이트 할것입니다. )

 

그누프레스에서 여분필드를 추가하려면, 메타 데이터를 이용하면 됩니다.

 

메타데이터를 등록하는 방법

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( G5_META_TYPE, $wr_id, 'etc_inputs', $etc_array );     //메타데이터를 업데이트
}

 

 

여분필드의 값을 가져오려면 아래와 같이 사용합니다.

어쩔수 없이 write.skin.php 나 view.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(G5_META_TYPE, $wr_id, 'etc_inputs', true ), $input_posts);
 
extract( $input_posts ); 
 
echo $wr_1."<br >";
echo $wr_2."<br >"; 
echo $wr_3."<br >"; 
echo $wr_4."<br >"; 
echo $wr_5."<br >"; 
echo $wr_6."<br >"; 
echo $wr_7."<br >"; 
echo $wr_8."<br >"; 

 

 

그누커머스의 게시판에서 여분필드를 추가하는 방법도 그누프레스와 같습니다.

다만 상수명만 변경하시면 됩니다.( G5_META_TYPE 를 GCBOARD_META_TYPE 으로 변경합니다. )

그누커머스 상수명 GCBOARD_META_TYPE

그누프레스 상수명 G5_META_TYPE

 

현재 그누커머스의 게시판과 그누프레스와 차이점은

테마에서 템플릿을 적용하는 여부에 있습니다.

그누커머스 에서는 아래와 같이 테마의 템플릿에서 스킨을 파일을 오버라이딩( 덮어쓰기 ) 하는 기능이 추가되었습니다. 

http://sir.co.kr/manual/gnucommerce/159 )

list.skin.php 에서

반복문 돌리는 곳이 있습니다.

for ($i=0, $count_list = count($list); $i<$count_list; $i++) {

아래의 코드를 참고해 주세요.

for ($i=0, $count_list = count($list); $i<$count_list; $i++) {

//메타 데이터 초기화
$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(G5_META_TYPE, $list[$i]['wr_id'], 'etc_inputs', true ), $input_posts);
 
extract( $input_posts );
 
echo $wr_1."<br >";
echo $wr_2."<br >";
echo $wr_3."<br >";
echo $wr_4."<br >";
echo $wr_5."<br >";
echo $wr_6."<br >";
echo $wr_7."<br >";
echo $wr_8."<br >";

제가 위처럼 적용하고 <?php echo $input_posts[$i]['wr_2']; ?> 이렇게 불러왔더니 w 글자만 있던데요.

답변을 작성하시기 전에 로그인 해주세요.
전체 167
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT