Descargas ilimitadas y Licencias Originales

Suscríbete o Inicia Sesión y descarga todos los recursos que quieras sin coste adicional. Todos los Plugins y Themes de WordPress en un clic. Además podrás acceder a Licencias Originales y API Keys.

Modifica el rol del usuario a Cliente Premium al adquirir un producto específico

Con este fragmento de código, puedes cambiar el rol de usuario a “Cliente Premium” para aquellos clientes que compren un producto específico o varios. Esta funcionalidad resulta valiosa cuando deseas ofrecer planes premium con beneficios adicionales para tus clientes frecuentes.

Para configurar el código, simplemente reemplaza el número 110 en la línea 13 con el ID del producto (o IDs separados por coma si son varios) para los cuales deseas aplicar esta característica.

// Cambia el rol de usuario del cliente a "Cliente premium" cuando compra un determinado producto
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( '110' ); // 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 );
            }
        }
   	}	
}

 

Productos destacados