채택완료

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

2016-03-18 (금) 13:05:30 4,197
Copy
$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 에 넘어오는 인자들에 대해서 좀더 여쭤봐도 될까요?

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

Copy
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개 / 댓글 1개

채택된 답변
+20 포인트

아래와 같이 바꿔주세요.

Copy
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);

답변에 대한 댓글 1개

gc_get_order_data 왠지 이런 함수가 있을 것 같았더니, 진짜로 있었군요... 역시 섬세하게 만드셧습니다. 노고에 박수를 보내드립니다.. 답변 감사드려요

답변을 작성하려면 로그인이 필요합니다.