2015-04-15 4 views
0

Я нашел this thread, но это не совсем то, что я ищу.Роль и роль Woocommerce по умолчанию после покупки

Мой вопрос в том, как я могу изменить роль «клиента» роли Woocommerce по умолчанию, например. «Абонент» для новых зарегистрированных пользователей. И затем, если пользователь проверит (приобретает продукт), измените роль от «Абонента» на «Клиент».

Я прошу об этом, так как хочу показать различный контент для каждой роли пользователя: «зарегистрированный клиент» и «подписанный (оплаченный) клиент».

+0

Только предложение ... Если вы хотите показать или скрыть контент, а не продукт, я настоятельно рекомендую вам использовать Paid Memberships Pro https://wordpress.org/plugins/paid-memberships-pro/ вместо woocommerce. –

ответ

0

В первой части вашего вопроса происходит изменение роли пользователя по умолчанию, созданного WooCommerce. Честно говоря, я бы, вероятно, оставил роль по умолчанию в качестве клиента. А затем создайте новую роль/возможности для людей, которые покупают ваш конкретный продукт.

add_filter('woocommerce_new_customer_data', 'so_29647785_default_role'); 

function so_29647785_default_role($data){ 
    $data['role'] = 'subscriber'; // the new default role 
    return $data; 
} 

Как вы видели в моей другой ответ (ну мой повторно отправленный ответ), вы можете сделать что-то после того, как пользователь закончит платить, но закреплять в woocommerce_order_status_completed крючок.

Чтобы адаптировать этот код к конкретному продукту, вам необходимо пройти через элементы заказа и проверить их на идентификатор продукта. Замените 999 идентификатором соответствующего продукта.

add_action('woocommerce_order_status_completed', 'so_29647785_convert_customer_role'); 

function so_29647785_convert_customer_role($order_id) { 

    $order = new WC_Order($order_id); 

    if ($order->user_id > 0) { 

     foreach ($order->get_items() as $order_item) { 

      if(999 == $order_item[ 'product_id' ]) { 
       $user = new WP_User($order->user_id); 

       // Remove existing role 
       $user->remove_role('customer'); 

       // Add new role 
       $user->add_role('subscriber');   
      } 

     } 

    } 
} 

Примечание: Полностью непроверенный, но кажется правильным в теории.

+0

Спасибо за ответ! Я проверю это на своем сайте. О изменении роли по умолчанию на «Абонент». Вы правы, было бы целесообразно сохранить роль «клиент» по умолчанию, как есть, а затем создать новую роль, например. «платный клиент» для пользователей проверки. – Teon

Смежные вопросы