완료부분 후킹에 대한 마지막 질문입니다.
본문
$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);
답변을 작성하시기 전에 로그인 해주세요.