woocommerce admin创建订单在创建时获取客户ID

时间:2017-07-24 09:41:39

标签: php wordpress woocommerce hook

现在已经有几天了,我似乎无法找到添加/更新用户元的钩子

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

在woocommerce admin( 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);

1 个答案:

答案 0 :(得分: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);
    }
}

现在,如果这是一个新订单并且客户是我的自定义用户角色,那么我的自定义用户元数字“total”和“last”只会增加。另一个优点是,它只适用于一个订单状态(即在我的情况下 [MY_CUSTOM_ORDER_STATUS] - 处理)。

只需在此处记下我的解决方案,以便其他任何希望处理类似自定义订单创建工作的人。