Он меняет роль пользователя после достижения суммы покупки.
Мои попытки расширить его и проверить некоторые условия: p>
- Величина периода, в течение которого покупки должны быть проверены, составляет 2 года. если за 2 года сумма покупок не будет равна 5000, то статус необходимо пересчитать заново и назначить ему роль в соответствии с суммой его заказа.
Вот суммы, которые я планирую сделать используйте:
$threshold_amount_to_gold = 9999.99;
$threshold_amount_to_platinum = 14999.99;
- В сумму покупок должны включаться только заказы, имеющие статус выполненных, а также если заказы были отменены или их статус каким-то образом отличается от статуса выполнен, то сумму следует уменьшить и пересчитать статус заказа заново. Если был осуществлен возврат, сумму покупки необходимо уменьшить на сумму возврата.
- Перерасчет происходит только между ролями: подписчик, клиент, карта-серебряная , карта-золото, карта-платина.
Но это не работает, и роли не пересчитываются.
Пожалуйста, помогите.
function bbloomer_maybe_trigger_switch_user_role( $order_id ) {
$order = wc_get_order( $order_id );
$user_id = $order->get_user_id();
$order_status = $order->get_status();
$switch_already_done = $order->get_meta( '_bb_role_switched' );
$roles_to_check = array( 'subscriber', 'customer', 'karta-platinum', 'karta-gold', 'karta-silver' );
if ( ! $switch_already_done && $order->has_status( wc_get_is_paid_statuses() ) ) {
foreach ( $roles_to_check as $role ) {
if ( wc_user_has_role( $user_id, $role ) ) {
bbloomer_customer_maybe_upgrade_to_silver( $user_id );
$order->update_meta_data( '_bb_role_switched', 'true' );
$order->save();
break;
}
}
}
}
function bbloomer_customer_maybe_upgrade_to_silver( $user_id ) {
$threshold_amount_to_silver = 4999.99;
$threshold_date = date('Y-m-d', strtotime('-2 years'));
$total_spent = wc_get_customer_total_spent( $user_id, $threshold_date );
if ( $total_spent > $threshold_amount_to_silver ) {
$user = new WP_User( $user_id );
$user->add_role( 'karta-silver' );
$user->remove_role( 'subscriber' );
$user->remove_role( 'customer' );
$user->remove_role( 'karta-gold' );
$user->remove_role( 'karta-platinum' );
}
}
Подробнее здесь: https://stackoverflow.com/questions/781 ... -more-than
Мобильная версия