2017-07-24 40 views
0

这是一个几天,现在,我似乎无法找到添加/更新用户的元数据woocommerce管理员创建为了得到客户的ID上创建

add_user_meta('user_id', 'custom_key', 'custom_value'); 

创造woocommerce管理订单时钩(woocommerce-> orders->添加订单),后端。 使用

add_action('woocommerce_process_shop_order_meta', 'admin_process_shop_order', 10, 1); 

这适用于订单处理时的处理。但是,我需要获取客户ID,从我所能告诉的客户ID不存在直到订单实际创建(有意义)。

所以,我可以用什么挂钩(或其他解决方案),以获得客户ID一旦创建我的问题的顺序和可搜索与

get_post_meta($order_id, '_customer_user', true); 
+0

尝试followng钩与订单状态, 'woocommerce_order_status_pending woocommerce_order_status_failed woocommerce_order_status_on按住 woocommerce_order_status_processing woocommerce_order_status_completed woocommerce_order_status_refunded woocommerce_order_status_cancelled' – Gugan

+0

钩执行后付款完全是,'woocommerce_payment_complete' – Gugan

回答

1

谢谢@Gugan您的建议!它看起来像你的帮助,我终于能够得到这个混乱排序:)

因为我只想这一次发射,即当订单创建(而不是再次更新时),我希望合并两个行动。

第一个'woocommerce_process_shop_order_meta'。在这里,我可以检查后存在元(如果是这样,订单已经生成,应单独留在家中)

function check_order($post_id){ 
    $new_order = get_post_meta($post_id, '_customer_user', true); 
    if(!$new_order){ 
     add_action('woocommerce_order_status_[MY_CUSTOM_ORDER_STATUS]-processing', 'total_count'); 
    } 
}add_action('woocommerce_process_shop_order_meta', 'check_order', 10, 1); 

如果这是上“woocommerce_order_status_ [MY_CUSTOM_ORDER_STATUS] - 处理新秩序的举动“(我的功能‘TOTAL_COUNT’

function total_count($post_id){ 
    $order = wc_get_order($post_id); 
    $customer_id = $order->get_user_id(); 
    $user_role = get_user_meta($customer_id, 'wp_capabilities', true); 
    $custom = serialize(array('[MY_CUSTOM_USER_ROLE]' => true)); 
    $today = date('Y-m-d'); 
    if($user_role = $custom){ 
     $current_total = get_user_meta($customer_id, 'total', true); 
     $increment_total = $current_total+1; 
     update_user_meta($customer_id, 'total', $increment_total); 
     update_user_meta($customer_id, 'last', $today); 
    } 
} 

现在我只得到我的自定义用户METAS‘总’和增量‘最后’如果这是一个新的秩序,如果客户是我的自定义用户角色。另外,它只适用于一个订单状态(即在我的情况下,[MY_CUSTOM_ORDER_STATUS] - 处理)。

只要记下我的解决方案,在这里寻找处理类似的自定义订单创建工作的任何人。

相关问题