CMS Woocommerce WordPress

[WooCommerce] Crear tu propio carrito de la compra

[titulo][WooCommerce] Aprende a programar un carrito de WooCommerce para poder personalizarlo 100%[/titulo]

En el siguiente minitutorial de Loopeando.com aprenderemos a crear un carrito como el siguente:

Lo podéis ver en vivo en: https://elperezoso.es

Sus principales caracteristicas son:

  • Marca el número de productos que hay en el carrito, en tiempo real y sin necesidad de hacer clic en él.
  • Al pasar el ratón sobre el icono, se despliega la vista detalle mostrando todos los items que hemos seleccionado.
  • En la lista detalle se muestra el precio total, el precio de cada item y el número de items comprados de cada tipo.
  • Desde la vista detalle podemos: O bien ir al chekout o bien eliminar items directamente sin pasar por el checkout ni por la vista ampliada del carrito.

 

[resumen]
  1. Nuestro código
  2. Explicación del código
[/resumen]

 

[titulo]Nuestro código[/titulo]

El código PHP que lo hace posible va situado en el archivo header.php de nuestro tema, y es el siguiente:

<div class="cart-box">
                                <ul class="d-flex justify-content-sm-between  align-items-center">
				<?php global $woocommerce; ?>
                                   <li class="desplega_carrito" style="min-width: 180px;"><a href="https://elperezoso.es/carrito/"><img src="https://elperezoso.es/wp-content/uploads/2018/10/icon_cart.png" alt="cart-icon"><span class="total-pro"><?php echo sprintf ( _n( '%d item', '%d items', WC()->cart->get_cart_contents_count() ), WC()->cart->get_cart_contents_count() ); ?></span><span class="my-cart"><span>Mis<br>Compras</span></span></a>
                                          
										<ul class="ht-dropdown cart-box-width flyout">
                                            <li>
                                                <?php 
												//lista del producto del carrito
												$items = $woocommerce->cart->get_cart();
												foreach($items as $item => $values) { 
												$productDetail = wc_get_product( $values['product_id'] ); 
												?>
												<!-- Cart Box Start -->
												
                                              <div class="single-cart-box">
                                                    <div class="cart-img">
                                                        <a href="#"><?php echo $productDetail->get_image(); ?></a>
                                                        <span class="pro-quantity"><?php echo $values['quantity'] ?></span>
                                                    </div>
                                                    <div class="cart-content">
                                                        <h6><a href="product.html"><?php echo $productDetail->get_title(); ?></a></h6>
                                                        <span class="cart-price"><?php echo get_post_meta($values['product_id'] , '_price', true); ?>€</span>
                                                    </div>
                                                    <a class="del-icone" href="<?php echo WC()->cart->get_remove_url( $item ); ?>"><i class="ion-close"></i></a>
                                                </div>
                                               <?php } ?>
                                               
                                                <!-- Cart Box End -->
                                                <!-- Cart Footer Inner Start -->
                                                <div class="cart-footer">
                                                   <ul class="price-content">
                                                       <li>Total <span><?php echo WC()->cart->get_cart_total(); ?></span></li>
                                                   </ul>
                                                    <div class="cart-actions text-center">
                                                        <a class="cart-checkout" href="https://elperezoso.es/carrito/">Finalizar Compra</a>
                                                    </div>
                                                </div>
                                                <!-- Cart Footer Inner End -->
                                            </li>
                                        </ul>
                                    </li>
                                </ul>
                            </div>
                        </div>
                        <!-- Cart Box End Here -->
                    </div>

 

A continuación pasamos a explicar las partes más importantes de la programación.

 

[titulo]Explicación del código[/titulo]

En primer lugar hay que decirle a nuestra instalación de WordPress que vamos a comenzar a utilizar funciones de WoCommerce. Para ello realizamos la llamada:

<?php global $woocommerce; ?>

 

La función [codigo]get_cart_contents_count()[/codigo] nos ayudará a extraer la suma del [subraya_verde]número de items[/subraya_verde] que hay ahora mismo en el carrito.

Por lo tanto:

<?php echo sprintf ( _n( '%d item', '%d items', WC()->cart->get_cart_contents_count() ), WC()->cart->get_cart_contents_count() ); ?>

Imprimirá el número allá donde lo situemos.

 

Para [subraya_verde]extraer los productos del carrito[/subraya_verde] junto a sus precios, títulos, fotografías… debemos realizar un [codigo]foreach[/codigo] a la función [codigo]get_cart()[/codigo]:

$items = $woocommerce->cart->get_cart();
foreach($items as $item => $values) { 
}

 

Las siguientes funciones:

[codigo]get_image()[/codigo]: Extrae el thumnail del producto

[codigo]get_title()[/codigo]: Extrae el título del producto

[codigo]get_remove_url()[/codigo]: Crea el enlace que borrará el producto

[codigo]get_cart_total()[/codigo]: Nos aporta el sumatorio total de todos los precios de los productos del carrito

[codigo]get_post_meta()[/codigo]: Extrae detalles del producto tales como precio, número de unidades de ese producto, etc

Para utlilizar [codigo]get_post_meta()[/codigo] dentro del loop habrá que hacer lo siguiente:

//Extrae el precio del producto cuya id hemos facilitado
<?php echo get_post_meta($values['product_id'] , '_price', true); ?>

 

¿Te ha parecido útil esta entrada? ¿Has conseguido crear tu propio carrito? ¿Te has atascado en algún punto y necesitas ayuda? ¡No dudes en darnos tu opinión en los comentarios y compartir esta entrada!

Cristian Sarabia Martínez

Desde que a principios de los 90 mi padre desempolvó su Spectrum, no he dejado de probar y experimentar con la tecnología.

Enamorado del mundo web, Full Stack Developer de profesión y diseñador por devoción.

Ahora hago mis pinitos en esto del blogging para compartir con vosotros un poquito de todo lo que la comunidad me ha dado.

4 Comentarios

Haz clic aquí para dejar tu comentario