Máte třeba produkty, které mohou nakupovat jen členové klubu, ale nechcete platit drahé pluginy? Můžete použít tuto funkci, která poté, co zákazník uskuteční první nákup a vy jeho objednávku označíte jako dokončenou, automaticky přesune zákazníka do jiné uživatelské role, v tomto případě “member”. Vše se děje automaticky a nemusíte nic nastavovat ručně. Pak už vám stačí použít nějaký plugin, pomocí kterého dovolíte nákup produktu jen určitým rolím. Opět použijeme ve functions.php.

// přiřazení nové role zákazníkovi poté, co je jeho objednávka dokončena
function vandaal_convert_paying_customer( $order_id ) {

$order = new WC_Order( $order_id );

if ( $order->user_id > 0 ) {
update_user_meta( $order->user_id, 'paying_customer', 1 );
$user = new WP_User( $order->user_id );

// odebereme roli
$user->remove_role( 'customer' );

// přiřadíme roli
$user->add_role( 'member' );
}
}
add_action( 'woocommerce_order_status_completed', 'vandaal_convert_paying_customer' );

Pokud by jste chtěli novou roli použít ihned po vytvoření objednávky, tedy bez toho, aniž by byl změněn její stav na dokončeno, můžete použít tento snippet:

// přiřazení nové role zákazníkovi po vytvoření objednávky
function vandaal_change_role( $order_id ) {
  $order = new WC_Order($order_id);
  $user = $order->get_user();
    
  // zkontrolujeme, jestli se nejedná o administrátora
  if( false != $user && !user_can($user, 'administrator') ){
  
    // jakou má získat roli
    $role = 'member';
  
    // nastavíme novou roli pro daného zákazníka
    $user->set_role($role);  
   
  }  
}

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *