Woocommerce猫と子猫によるカート配列の注文


8

こんにちは私たちはウーカートをメインの製品カテゴリーで並べ替え、そのカテゴリーの製品の下にリストしようとしています。以下のように:

ホイールパーツ

  • スポーク12
  • タイヤ

フレーム

  • Yフレーム
  • Xフレーム
  • Zフレーム

シート

  • 座席1
  • 座席2

猫順で表示できるようになりましたが、メイン猫->サブ猫に表示されません。

以下のコードがあり、猫と子猫によってカート配列を注文しようとしています

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

どなたかアイデアはありますか?

回答:


1

あなたのコードは正しかったが、natsort1を返すことが問題を引き起こしているだけだった。また、メニューの順序でカテゴリを並べ替える必要があります。以下のコードが完全に機能していることを確認してください。

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

テスト済みで正常に動作


こんにちはこれに感謝します!親猫とサブを持っているが、我々は、同様の複合製品を使用していて、そのは自分の猫の下に表示されていない製品についてその作業...
ジョン・ジョーンズ

3つの製品カテゴリの再注文/並べ替えを除外する方法がまだありますが、通常の方法でカートに追加する場合はどうすればよいですか?乾杯
ジョンジョーンズ

あなたは問題を解決しましたか?
raju_eww

「複合製品」とはどういう意味ですか?woocommerceの「複合製品」拡張機能を使用していますか?
ZecKa

はい、私たちはコンポジット製品を通常の製品と一緒に使用しています。通常の製品の注文は問題ありませんが、コンポジット製品の注文は混乱しています
ジョンジョーンズ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.