Woocommerce переключает роль пользователя, когда клиент тратит более $Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Woocommerce переключает роль пользователя, когда клиент тратит более $

Сообщение Anonymous »

Я использую код отсюда.
Он меняет роль пользователя после достижения суммы покупки.
Мои попытки расширить его и проверить некоторые условия: p>
  • Величина периода, в течение которого покупки должны быть проверены, составляет 2 года. если за 2 года сумма покупок не будет равна 5000, то статус необходимо пересчитать заново и назначить ему роль в соответствии с суммой его заказа.
    Вот суммы, которые я планирую сделать используйте:
$threshold_amount_to_silver = 4999.99;
$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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»