WooCommerce: tabla de carrito "dividida" (encabezados A>Z)

Debido a que " dividir " podría no ser el término correcto, déjame explicarlo mejor.

Imaginemos que la tabla del carrito de WooCommerce está ordenada por A>Z (con mi fragmento de clasificación del carrito de WooCommerce , por ejemplo). Si su modelo de negocio y/o UX lo requieren, es posible que deba "agregar una fila de tabla de carrito" para comunicar el hecho de que esos artículos pertenecen a esa carta:

  • A
    • Ítem ​​1 Título: “AAA”
    • Ítem ​​2 Título: “ACC”
  • B
    • Ítem ​​3 Título: “BDD”
    • Ítem ​​4 Título: “ABEJA”

Una vez más, esto puede sonar incomprensible, así que será mejor que mires la captura de pantalla a continuación. ¡Disfrutar!

Este es el resultado: el carrito se ordena alfabéticamente y cada sección del carrito ahora está delimitada por la primera letra del título del artículo del carrito.

Fragmento de PHP: Dividir carro por A>Z (Mostrar letra arriba de cada sección)

Nota: también debe usar https://businessbloomer.com/woocommerce-sort-cart-items-alphabetically-az/ para ordenar su carrito alfabéticamente primero.

/**
 * @snippet       Split Cart Table Alphabetically @ WooCommerce Cart
 * @how-to        Get CustomizeWoo.com FREE
 * @author        Rodolfo Melogli
 * @compatible    WooCommerce 3.7
 * @donate $9     https://businessbloomer.com/bloomer-armada/
 */
 
add_action( 'wp_footer', 'bbloomer_split_cart_by_az', 9999 );
   
function bbloomer_split_cart_by_az(){
    if ( ! is_cart() ) return;
   if ( WC()->cart->is_empty() ) return;
   $i = 0;
   $split = array();
   foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
      $cart_item_title = $cart_item['data']->get_title();
      $first_letter = substr( $cart_item_title, 0, 1 );
      if ( 0 == $i || ( 0 < $i && ! in_array( $first_letter, $split ) ) ) {
         $split[$i] = $first_letter;
      }
      $i++;
   }
   ?>
   <script type="text/javascript">
      jQuery(document).ready(function($){
         var indx = $('.woocommerce-cart-form__contents tbody tr').length;
         var rows = <?php echo json_encode($split); ?>;
         $.each(rows,function(key,value){  
            var newRow = $('<tr><td colspan="6">'+value+'</td></tr>');
               newRow.insertBefore($('.woocommerce-cart-form__contents tbody tr.woocommerce-cart-form__cart-item:nth('+key+')'));
         });
      });
   </script>
   <?php 
}

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir