완료부분 후킹에 대한 마지막 질문입니다.

완료부분 후킹에 대한 마지막 질문입니다.

QA

완료부분 후킹에 대한 마지막 질문입니다.

본문


$status = isset($params['ct_status']) ? $params['ct_status'] : $params['od_status']; 

 

음.. 일단 제가 짯던 코드가 작동하긴 하더군요.. 그런데 제가 유도하려는 것은

주문한 사람(user_id) 에 대해서 user meta 를 추가하려고 합니다.

 

문제는 ct_status 값과, od_status 값을 사용하셧던데

od_status 의 경우는 wp_gc_shop_order 테이블에 존재하고, ct_status 값은 wp_gc_shop_cart 테이블 내의 필드로 존재하더군요

 

제가 필요한 것은 it_id 값과 user_id 혹은 mb_id 입니다.

params 에 넘어오는 인자들에 대해서 좀더 여쭤봐도 될까요?

 

코드는 아래와 같이 짯지만 미작동입니다 ㅠ..

 


function order_form_complete($od_id, $params, $qstr, $url)
{
    //global $current_user;
    //get_currentuserinfo();
  
    //$user_ID = $current_user->ID;
	//If in this happening, it need to add user-meta into wp-admin user's data, because of success processing is unique for wp-admin user.
 
    $status = isset($params['ct_status']) ? $params['ct_status'] : $params['od_status'];
	$order_data = $wpdb->get_row( "SELECT * FROM wp_gc_shop_cart WHERE od_id = $od_id", ARRAY_A );
	
    if ( $status == 'complete' && $order_data['it_id'] == 16590){
        add_user_meta($order_data['user_id'], 'mc_check', 2, true);
    }
 
}
//do_action('gc_order_form_cart_update', $od_id, $params, $qstr, $url );
add_action('gc_order_form_cart_update','order_form_complete',10,4);

이 질문에 댓글 쓰기 :

답변 1

아래와 같이 바꿔주세요.

 


function order_form_complete($od_id, $params, $qstr, $url)
{
    global $wpdb;
 
    //global $current_user;
    //get_currentuserinfo();
  
    //$user_ID = $current_user->ID;
	//If in this happening, it need to add user-meta into wp-admin user's data, because of success processing is unique for wp-admin user.
 
    $status = isset($params['ct_status']) ? $params['ct_status'] : $params['od_status'];
 
    //od_id는 배열일수도 있습니다. (리스트에서는 배열, 상세보기에서는 단일)
    foreach( (array) $od_id as $order_id ){
        if( empty($order_id) ) continue;
 
        $od = gc_get_order_data($order_id);
 
        if( empty($od['od_id']) ) continue;
 
        // 주문한 상품목록
        $sql = $wpdb->prepare(" select it_id
                  from {$wpdb->gc_shop_cart_table}
                  where od_id = %.0f
                  group by it_id
                  order by ct_id ", $od['od_id']);
 
        $results = $wpdb->get_results($sql, ARRAY_A);
 
        $it_ids = array();
 
        foreach($results as $cart){
            if( empty($cart['it_id']) ) continue;
 
            $it_ids[] = $cart['it_id'];
        }
 
        if ( $status == 'complete' && in_array(16590, $it_ids) ){
            add_user_meta($od['mb_id'], 'mc_check', 2, true);
        }
    }
 
}
//do_action('gc_order_form_cart_update', $od_id, $params, $qstr, $url );
add_action('gc_order_form_cart_update','order_form_complete',10,4);
답변을 작성하시기 전에 로그인 해주세요.
전체 21
QA 내용 검색

회원로그인

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