Wooc Commerce Đặt hàng mảng của mèo và mèo phụ


8

Xin chào, chúng tôi đang cố gắng sắp xếp Woo Cart theo danh mục sản phẩm chính và danh sách theo các sản phẩm trong danh mục đó. Giống như dưới đây:

Bộ phận bánh xe

  • nan hoa 12
  • Lốp xe

Khung

  • Khung Y
  • Khung X
  • Khung Z

Ghế

  • Ghế 1
  • Ghế 2

Chúng tôi đã cố gắng hiển thị theo đơn đặt hàng của mèo nhưng không yêu cầu chúng vào Main Cat -> Sub Cat

Chúng tôi có mã dưới đây và cố gắng đặt hàng mảng của mèo và mèo phụ

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 );

Có ai có ý kiến ​​gì không?

Câu trả lời:


1

Mã của bạn đã đúng nhưng bạn đã natsorttrả về 1 đang gây ra sự cố. Bạn cũng cần sắp xếp các danh mục theo thứ tự menu. Vui lòng kiểm tra mã dưới đây hoạt động hoàn hảo.

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 );

Đã thử nghiệm và hoạt động tốt


Hi cảm ơn vì điều này! Nó hoạt động cho các sản phẩm có mèo mẹ và phụ, nhưng chúng tôi cũng đang sử dụng các sản phẩm tổng hợp và nó không hiển thị chúng dưới con mèo của họ ..
John Jones

Nếu có cách nào để loại trừ việc sắp xếp lại / sắp xếp cho 3 loại sản phẩm nhưng vẫn thêm chúng vào giỏ hàng theo cách thông thường? Chúc mừng
John Jones

bạn đã giải quyết vấn đề chưa?
raju_eww

Bạn có ý nghĩa gì với "sản phẩm tổng hợp"? Bạn có đang sử dụng tiện ích mở rộng "Sản phẩm tổng hợp" của thương mại điện tử không?
ZecKa

Có, chúng tôi đang sử dụng Sản phẩm tổng hợp cùng với các sản phẩm thông thường, việc đặt hàng các sản phẩm bình thường vẫn ổn, nhưng làm rối loạn trật tự của các sản phẩm composite
John Jones
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.