Здравствуйте, сделать смену роли после покупки определённого товара я смог при помощи вот этого кода:
add_action( 'woocommerce_order_status_completed', 'tb_change_role_on_purchase_vip' );
function tb_change_role_on_purchase_vip( $order_id ) {
// get order object and items
$order = new WC_Order( $order_id );
$items = $order->get_items();
$product_id = 52; // Product ID
foreach ( $items as $item ) {
if( $product_id == $item['product_id'] && $order->user_id ) {
$user = new WP_User( $order->user_id );
// Remove old role
$user->remove_role( 'customer' );
// Add new role
$user->add_role( 'pro_mem' );
}
}
}
и для второго товара
add_action( 'woocommerce_order_status_completed', 'tb_change_role_on_purchase_pro' );
function tb_change_role_on_purchase_pro( $order_id ) {
// get order object and items
$order = new WC_Order( $order_id );
$items = $order->get_items();
$product_id = 53; // Product ID
foreach ( $items as $item ) {
if( $product_id == $item['product_id'] && $order->user_id ) {
$user = new WP_User( $order->user_id );
// Remove old role
$user->remove_role( 'customer' );
// Add new role
$user->add_role( 'vip_mem' );
}
}
}
Теперь собственно мой вопрос:
Как сделать чтобы после покупки первого товара (id товара 52) когда уже роль стала:
pro_mem
Покупая второй товар (id товара 53) роль pro_mem менялась на следующую роль vip_mem ?
Прописать такой вариант кода, например:
add_action( 'woocommerce_order_status_completed', 'tb_change_role_on_purchase_vip' );
function tb_change_role_on_purchase_vip( $order_id ) {
// get order object and items
$order = new WC_Order( $order_id );
$items = $order->get_items();
$product_id = 53; // Product ID
foreach ( $items as $item ) {
if( $product_id == $item['product_id'] && $order->user_id ) {
$user = new WP_User( $order->user_id );
// Remove old role
$user->remove_role( 'pro_mem' );
// Add new role
$user->add_role( 'vip_mem' );
}
}
}
Я правильно сделал?
Или же просто добавить во второй код удаление ещё одной роли:
// Remove old role
$user->remove_role( 'pro_mem' );
и тогда получится вот так:
add_action( 'woocommerce_order_status_completed', 'tb_change_role_on_purchase_vip' );
function tb_change_role_on_purchase_vip( $order_id ) {
// get order object and items
$order = new WC_Order( $order_id );
$items = $order->get_items();
$product_id = 53; // Product ID
foreach ( $items as $item ) {
if( $product_id == $item['product_id'] && $order->user_id ) {
$user = new WP_User( $order->user_id );
// Remove old role
$user->remove_role( 'customer' );
// Remove old role
$user->remove_role( 'pro_mem' );
// Add new role
$user->add_role( 'vip_mem' );
}
}
}
То есть если пользователь только зашёл на сайт и покупает первый товар (id товара 52), то присваивается роль pro_mem а если потом покупает второй товар (id товара 53) роль pro_mem будет удаляться и меняться на vip_mem
Вроде всё правильно сделал. Надо будет проверить )