现在已经有几天了,我似乎无法找到添加/更新用户元的钩子
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);
答案 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] - 处理)。
只需在此处记下我的解决方案,以便其他任何希望处理类似自定义订单创建工作的人。