【发布时间】:2019-07-27 22:21:11
【问题描述】:
我正在尝试实现一项功能,让客户在下达一定数量的订单后获得新的用户角色,但所有这些订单必须在同一年内下达。
我能够根据第 n 个订单数分配用户角色,但似乎无法超出需要考虑日期的范围,有人可以指出正确的方向或指出我可能会做什么失踪。
这是我迄今为止尝试过的。
function change_user_role_on_order_status_completed( $order_id ) {
$order = new WC_Order( $order_id );
$user_id = $order->user_id;
$order_this_year = false;
$current_date = date('Y');
$total_orders = get_posts( array(
'numberposts' => -1,
'meta_key' => '_customer_user',
'meta_value' => $user_id,
'post_type' => 'shop_order',
) );
if ( $total_orders > 1 ) {
foreach ($order->get_items() as $item_key => $item_values):
// Get the item date
if ($item_date = $item_values->get_date_completed()->format ('Y') == $current_date) {
$order_this_year = true;
}
endforeach;
if ($order_this_year) {
$user = new WP_User( $order->user_id );
// Set role editor
$user->set_role( 'customer_club' );
}
}
}
add_action( 'woocommerce_order_status_completed', 'change_user_role_on_order_status_completed', 10, 1 );
【问题讨论】:
-
检查这个答案 - stackoverflow.com/a/35146971/1117368
-
嗨,刚刚检查的与我尝试做的完全不同,基本上我有两个条件需要通过才能改变用户角色,首先客户必须有更多让我们说5 个订单,而且这些订单必须是在同一年完成的,才有资格更改用户角色,希望这是有道理的
标签: php wordpress woocommerce hook-woocommerce orders