완료부분 후킹에 대한 마지막 질문입니다. 채택완료
Remoted
9년 전
조회 4,037
</p><p>$status = isset($params['ct_status']) ? $params['ct_status'] : $params['od_status']; </p><p>
음.. 일단 제가 짯던 코드가 작동하긴 하더군요.. 그런데 제가 유도하려는 것은
주문한 사람(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 에 넘어오는 인자들에 대해서 좀더 여쭤봐도 될까요?
코드는 아래와 같이 짯지만 미작동입니다 ㅠ..
</p><p>function order_form_complete($od_id, $params, $qstr, $url)</p><p>{</p><p> //global $current_user;</p><p> //get_currentuserinfo();</p><p> </p><p> //$user_ID = $current_user->ID;</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>//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.</p><p> </p><p> $status = isset($params['ct_status']) ? $params['ct_status'] : $params['od_status'];</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>$order_data = $wpdb->get_row( "SELECT * FROM wp_gc_shop_cart WHERE od_id = $od_id", ARRAY_A );</p><p><span class="Apple-tab-span" style="white-space:pre"> </span></p><p> if ( $status == 'complete' && $order_data['it_id'] == 16590){</p><p> add_user_meta($order_data['user_id'], 'mc_check', 2, true);</p><p> }</p><p> </p><p>}</p><p>//do_action('gc_order_form_cart_update', $od_id, $params, $qstr, $url );</p><p>add_action('gc_order_form_cart_update','order_form_complete',10,4);</p><p>
댓글을 작성하려면 로그인이 필요합니다.
답변 1개
채택된 답변
+20 포인트
9년 전
아래와 같이 바꿔주세요.
</p><p>function order_form_complete($od_id, $params, $qstr, $url)</p><p>{</p><p> global $wpdb;</p><p> </p><p> //global $current_user;</p><p> //get_currentuserinfo();</p><p> </p><p> //$user_ID = $current_user->ID;</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>//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.</p><p> </p><p> $status = isset($params['ct_status']) ? $params['ct_status'] : $params['od_status'];</p><p> </p><p> //od_id는 배열일수도 있습니다. (리스트에서는 배열, 상세보기에서는 단일)</p><p> foreach( (array) $od_id as $order_id ){</p><p> if( empty($order_id) ) continue;</p><p> </p><p> $od = gc_get_order_data($order_id);</p><p> </p><p> if( empty($od['od_id']) ) continue;</p><p> </p><p> // 주문한 상품목록</p><p> $sql = $wpdb->prepare(" select it_id</p><p> from {$wpdb->gc_shop_cart_table}</p><p> where od_id = %.0f</p><p> group by it_id</p><p> order by ct_id ", $od['od_id']);</p><p> </p><p> $results = $wpdb->get_results($sql, ARRAY_A);</p><p> </p><p> $it_ids = array();</p><p> </p><p> foreach($results as $cart){</p><p> if( empty($cart['it_id']) ) continue;</p><p> </p><p> $it_ids[] = $cart['it_id'];</p><p> }</p><p> </p><p> if ( $status == 'complete' && in_array(16590, $it_ids) ){</p><p> add_user_meta($od['mb_id'], 'mc_check', 2, true);</p><p> }</p><p> }</p><p> </p><p>}</p><p>//do_action('gc_order_form_cart_update', $od_id, $params, $qstr, $url );</p><p>add_action('gc_order_form_cart_update','order_form_complete',10,4);</p><p>
로그인 후 평가할 수 있습니다
답변에 대한 댓글 1개
R
Remoted
9년 전
gc_get_order_data 왠지 이런 함수가 있을 것 같았더니, 진짜로 있었군요... 역시 섬세하게 만드셧습니다. 노고에 박수를 보내드립니다.. 답변 감사드려요
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인