Woocommerce Order Cart Array nach Cat und Sub Cat

Lesezeit: 2 Minuten

Hallo, wir versuchen, den Woo Cart nach der Hauptproduktkategorie zu sortieren und unter den Produkten in dieser Kategorie aufzulisten. Wie unten:

Radteile

  • Speichen 12
  • Reifen

Rahmen

  • Y-Rahmen
  • X-Rahmen
  • Z-Rahmen

Sitz

  • Platz 1
  • Platz 2

Wir haben es geschafft, nach Katzenreihenfolge anzuzeigen, aber es ordnet sie nicht in Hauptkat -> Unterkat an

Wir haben den folgenden Code und versuchen, das Warenkorb-Array nach Kat und Unterkat zu bestellen

add_action( 'woocommerce_cart_loaded_from_session', function() {

    global $woocommerce;
    $products_in_cart = array();
    foreach ( $woocommerce->cart->cart_contents as $key => $item ) {
        $terms = wp_get_post_terms($item['data']->id, 'product_cat' );

        $products_in_cart[ $key ] = $terms[0]->name;
    }

    natsort( $products_in_cart );

    $cart_contents = array();
    foreach ( $products_in_cart as $cart_key => $product_title ) {
        $cart_contents[ $cart_key ] = $woocommerce->cart->cart_contents[ $cart_key ];

    }
    $woocommerce->cart->cart_contents = $cart_contents;

}, 100 );

Hat jemand bitte eine Idee?

Benutzer-Avatar
raju_odi

Ihr Code war richtig, aber Sie hatten gerade natsort welche Rückgabe von 1 das Problem verursacht. Sie müssen die Kategorien auch nach Menüreihenfolge sortieren. Bitte überprüfen Sie, ob der folgende Code einwandfrei funktioniert.

add_action( 'woocommerce_cart_loaded_from_session', function() {

    global $woocommerce;
    $products_in_cart = array();
    foreach ( $woocommerce->cart->cart_contents as $key => $item ) {
        $terms = wp_get_post_terms($item['data']->id, 'product_cat' );
        $products_in_cart[ $key ] = $terms[0]->term_id;
    }
    // $categories = get_terms( 'product_cat', 'orderby=menu_order&hide_empty=1' );

    asort($products_in_cart);
    $cat_array = array();
    foreach ($products_in_cart as $key => $value) {
        $cat_array[$key] =get_term_by('id', $value, 'product_cat');
    }
    $mai_cat = [];
    $i=0;
    foreach ($cat_array as $parent_key => $parent_value) {
        if($parent_value->parent == 0)
        {
            $mai_cat[$parent_key] = $parent_value->term_id;
            foreach ($cat_array as $parent_key_sub => $parent_value_sub) {
                if($parent_value_sub->parent == $parent_value->term_id)
                {
                    $mai_cat[$parent_key_sub] = $parent_value_sub->term_id;
                }
            }   
        }
    }
    $cart_contents = array();
    foreach ( $mai_cat as $cart_key => $product_title ) {
        $cart_contents[ $cart_key ] = $woocommerce->cart->cart_contents[ $cart_key ];

    }
    $woocommerce->cart->cart_contents = $cart_contents;
}, 100 );

Getestet und funktioniert gut

  • Hallo danke dafür! Es funktioniert für die Produkte, die Eltern- und Unterkatzen haben, aber wir verwenden auch zusammengesetzte Produkte und zeigen sie nicht unter ihrer Katze an.

    – John Jones

    4. Februar 2020 um 15:15 Uhr

  • Gibt es eine Möglichkeit, die Neuordnung/Sortierung für 3 Produktkategorien auszuschließen, sie aber trotzdem auf die normale Woo-Weise in den Warenkorb zu legen? Prost

    – John Jones

    5. Februar 2020 um 10:37 Uhr

  • Was meinst du mit “zusammengesetztes Produkt”? Verwenden Sie die Erweiterung “Composite Products” von woocommerce?

    – ZecKa

    27. Februar 2020 um 13:17 Uhr

  • Ja, wir verwenden Composite-Produkte neben normalen Produkten, die die normalen Produkte in Ordnung bestellen, aber die Reihenfolge der Composite-Produkte durcheinander bringen

    – John Jones

    1. März 2020 um 13:07 Uhr

  • Es gibt Funktionen das sollte für zusammengesetzte Produkte nützlich sein.

    – Matts

    4. März 2020 um 12:05 Uhr

1385710cookie-checkWoocommerce Order Cart Array nach Cat und Sub Cat

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy