Soporte » Plugins y Hacks » WooCommerce » Comprar productos por una categoria a la vez, segun rol de usuario.

  • vsalazar2101987

    (@vsalazar2101987)


    Hola, necesito orientación con respecto a un código. Actualmente me funciona de forma correcta. El código lo que hace es restringir la combinación de producto de categorías diferentes, es decir, solo que puede agregar al carrito producto de una sola categoría a la vez.

    pero ahora necesito que solo se ejecute este código cuando esta conectado un rol especifico, en este caso, rol «Franquicia». Yo modifique el código, y coloque la condición para que solo aplique al rol “Franquicia”, pero no funciona correctamente, en efecto, me restringe la combinación de categoría en “Franquicias”, pero en los demás roles no me permite agregar producto al carrito y no es lo que quiero, debería dejar que agregue normalmente en los otros roles existente, y combinar productos de distintas categorias, al suponerse que se esta condicionando para que esas restricciones solo sucedan en “Franquicia”.

    Agradeceria mucho su ayuda por favor

    
    $user = wp_get_current_user();
    if ( in_array( 'franquicia', (array) $user->roles ) ) {
    function avoid_add_to_cart_from_different_main_categories( $passed, $product_id, $quantity ) {
    
    	
        $cart      = WC()->cart;
        $taxonomy  = 'product_cat';
        $ancestors = [];
    
        if( $cart->is_empty() )
             return $passed;
    
        $terms = (array) wp_get_post_terms( $product_id, $taxonomy, array('fields' => 'ids') );
    
        if( count($terms) > 0 ) {
            // Loop through product category terms  set for the current product
            foreach( $terms as $term) {
                foreach( get_ancestors( $term, $taxonomy ) as $term_id ) {
                    $ancestors[(int) $term_id] = (int) $term_id;
                }
            }
    
            // Loop through cart items
            foreach ( $cart->get_cart() as $item ) {
                $terms = (array) wp_get_post_terms( $item['product_id'], $taxonomy, array('fields' => 'ids') );
                if( count($terms) > 0 ) {
                    // Loop through product category terms set for the current cart item
                    foreach( $terms as $term) {
                        foreach( get_ancestors( $term, $taxonomy ) as $term_id ) {
                            $ancestors[(int) $term_id] = (int) $term_id;
                        }
                    }
                }
            }
    
            // When there is more than 1 parent product category
            if( count($ancestors) > 1 ) {
                wc_add_notice( __('Disculpa, NO puedes agregar a la misma orden/pedido productos que pertenezcan a distintas preventas o proveedores. Por favor, escoge solo productos que pertenezcan una misma preventa o proveedor.'), 'error' );
                $passed = false; 
            }
        }
        return $passed;
    }
    }
    add_filter( 'woocommerce_add_to_cart_validation', 'avoid_add_to_cart_from_different_main_categories', 10, 3 );
Viendo 1 respuesta (de un total de 1)
Viendo 1 respuesta (de un total de 1)
  • El debate ‘Comprar productos por una categoria a la vez, segun rol de usuario.’ está cerrado a nuevas respuestas.