Cambia rol de usuario del cliente a Cliente Premium cuando compra un determinado producto

Gracias a este snippet cuando un cliente compre uno o varios productos determinados podremos cambiar su rol a “Cliente Premium”. Este snippet es muy útil cuando creas sitios  de membresía con ayuda del plugin WooCommerce memberships o cuando quieres convertir a un cliente en premium dentro de tu tienda online y poderle dar una serie de privilegios.

Para personalizarlo con tu producto solo tienes que cambiar el número 590 de la línea 13 por el ID (o IDs de los productos separados por coma si son varios) para los que quieras aplicar esta funcionalidad.

Snippet que cambia el rol de usuario del cliente a Cliente Premium cuando compra un determinado producto en WooCommerce

// Cambia el rol de usuario del cliente a "Cliente premium" cuando compra uno o varios productos determinados
add_action( 'init', 'add_premium_customer_role' );
function add_premium_customer_role(){

    	$customer_role = get_role( 'customer' );
    	add_role( 'premium_customer', __( 'Cliente Premium', 'woocommerce' ), $customer_role->capabilities );
}

add_action( 'woocommerce_checkout_order_processed', 'change_user_role_by_product_purchased', 10, 2 );
function change_user_role_by_product_purchased( $order_id, $posted ){
	$order = new WC_Order( $order_id );
	$new_role = 'premium_customer';
	$products_list = array( '590' ); // Aquí debes definir la lista de productos para los que se aplicará el cambio de rol

	// Obtiene el email del pedido
	if( '3.0.0' <= WC()->version ){

		$billing_email = $order->get_billing_email();
	}else{

		// Mantiene compatibilidad con WooCommerce <= 2.6.x
		$order_meta = get_post_meta( $order_id );
		$billing_email = $order_meta[ '_billing_email' ][0];
	}

	// Comprueba si el usuario ya está registrado con ese email
	if( email_exists( $billing_email ) ) {

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

			if ( in_array( $product[ 'product_id' ], $products_list ) ) {

      				$user = get_user_by( 'email', $billing_email );
      				$user->set_role( $new_role );
			}
		}
   	}	
}
Ver más tutoriales de: WooCommerce

Tutoriales relaccionados

¿Necesitas un desarrollo a medida?

Login para aceder

LOGIN
REGISTRO