Title: Woocommerce &#8212; If сумма заказа юзера &gt;N, то сменить роль на S
Last modified: 31.07.2016

---

# Woocommerce — If сумма заказа юзера >N, то сменить роль на S

 *  [VictorSlate](https://ru.wordpress.org/support/users/victorslate/)
 * (@victorslate)
 * [10 лет, 8 месяцев назад](https://ru.wordpress.org/support/topic/woocommerce-if-%d1%81%d1%83%d0%bc%d0%bc%d0%b0-%d0%b7%d0%b0%d0%ba%d0%b0%d0%b7%d0%b0-%d1%8e%d0%b7%d0%b5%d1%80%d0%b0-n-%d1%82%d0%be-%d1%81%d0%bc%d0%b5%d0%bd%d0%b8%d1%82%d1%8c-%d1%80%d0%be%d0%bb%d1%8c/)
 * Всем привет, заранее извиняюсь, опыта в php мало. Есть задача сделать несколько
   типов ролей (Silver, Gold) для клиентов, которые совершают заказы на общую сумму
   5000 и 10000 рублей. (за все время)
 * Логика
    — Сначала у пользователя роль Customer и сумма от 0 до 4999 рублей (ничего
   не делаем) — При сумме от 5000 до 9999 рублей ему присваивается роль Silver —
   Как только сумма перевалит за 10 000 рублей, роль Silver меняется на роль Gold
 * Пока остановился на первой роли, но даже она не хочет меняться. Подскажите пожалуйста,
   что не так? Код вставляю в functions.php
 *     ```
       add_action('woocommerce_payment_complete', function($order_id) {
   
         $order = new WC_Order($order);
         $user_id = $order->user_id;
   
         if($user_id) {
           customer_change_role($user_id, 5000, 'silver');
         }
   
       });
   
       /**
        * Gets the amount an email has spent
        * @param  string $email Users email
        * @return float
        */
       function woocommerce_get_amount_spent($email) {
   
         $orders = get_posts( array(
             'meta_key'        => '_billing_email',
             'meta_value'      => $email,
             'post_type'       => 'shop_order',
             'posts_per_page'  =>-1
         ) );
   
         $spent = 0;
         foreach($orders as $shop_order) {
           $order = new WC_Order($shop_order->ID);
           $spent += $order->get_total();
         }
   
         return $spent;
   
       }
   
       /**
        * Change a customers role when they spend big money
        * @param  integer  $user_id    The ID of the user. Current user when none supplied
        * @param  integer  $threshold  How much money do we need?
        * @param  string   $role     Which role to give
        * @return void
        */
       function customer_change_role($user_id = null, $threshold = 5000, $role = 'silver') {
   
         // when the user_id was not supplied we'll try and figure it out
         if($user_id === null) {
           $user_id = get_current_user_id();
         }
   
         // this probably means the user is not logged in
         if( !$user_id ) {
           return;
         }
   
         // get the user object
         $user = get_user_by('id', $user_id);
   
         // nope, something went wrong
         if(!$user) {
           return;
         }
   
         // the user is a big spender, lets give him a role
         if(woocommerce_get_amount_spent($user->data->user_email) >= $threshold) {
           $user->add_role($role);
         }
         // this mofo ain't using money. take it back!
         else {
           $user->remove_role($role);
         }
   
       }
       ```
   

Просмотр 1 ответа (всего 1)

 *  Автор [VictorSlate](https://ru.wordpress.org/support/users/victorslate/)
 * (@victorslate)
 * [10 лет, 8 месяцев назад](https://ru.wordpress.org/support/topic/woocommerce-if-%d1%81%d1%83%d0%bc%d0%bc%d0%b0-%d0%b7%d0%b0%d0%ba%d0%b0%d0%b7%d0%b0-%d1%8e%d0%b7%d0%b5%d1%80%d0%b0-n-%d1%82%d0%be-%d1%81%d0%bc%d0%b5%d0%bd%d0%b8%d1%82%d1%8c-%d1%80%d0%be%d0%bb%d1%8c/#post-197380)
 * Ни у кого нет идеи?

Просмотр 1 ответа (всего 1)

 Тема «Woocommerce — If сумма заказа юзера >N, то сменить роль на S» закрыта для
новых ответов.

 * Форум: [Проблемы и решения](https://ru.wordpress.org/support/forum/how-to-and-troubleshooting/)
 * 1 ответ
 * 1 участник
 * Последний ответ: [VictorSlate](https://ru.wordpress.org/support/users/victorslate/)
 * Последняя активность: [10 лет, 8 месяцев назад](https://ru.wordpress.org/support/topic/woocommerce-if-%d1%81%d1%83%d0%bc%d0%bc%d0%b0-%d0%b7%d0%b0%d0%ba%d0%b0%d0%b7%d0%b0-%d1%8e%d0%b7%d0%b5%d1%80%d0%b0-n-%d1%82%d0%be-%d1%81%d0%bc%d0%b5%d0%bd%d0%b8%d1%82%d1%8c-%d1%80%d0%be%d0%bb%d1%8c/#post-197380)
 * Статус: нерешённая

## Темы

### Самые популярные темы

### Темы без ответов

### Без вопроса

### Решённые

### Нерешённые

### Все темы
