کد مرتب سازی محصولات ووکامرس بر اساس دسته بندی

کد با ما - کد ووکامرس
کد با ما – کد ووکامرس

مرتب سازی محصولات ووکامرس بر اساس دسته بندی

مرتب سازی محصولات هم از طریق نصب پلاگین امکان پذیر است و هم از طریق کدنویسی.

حال اگر شما هم با نصب افزونه های زیاد روی وردپرس خود مخالف هستید، قطعه کدهای زیر میتواند راه حلی مناسب برای مرتب سازی محصولات شما باشد.

برای استفاده از کدها می بایست آن را در قسمت functions.php ذخیره کرده و نتیجه را تست کنید.

روش اول

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

    ksort( $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 );```

روش دوم

function woocommerce_before_cart_contents(){
    global $woocommerce;
    $cat_wisw_pros = array();
    foreach ( $woocommerce->cart->get_cart() as $cart_item_key => $cart_item ) {
        $product_id = $cart_item['product_id'];
        $cat_ids = wp_get_post_terms( $product_id, 'product_cat', array( 'fields' => 'ids' ) );
        foreach ( $cat_ids as $id ) {
            $cat_wisw_pros[$id][$cart_item_key] = $cart_item;
        }
    }
    ksort( $cat_wisw_pros ); // Cat ID wise sort
    $grouped_cart_items = array();
    foreach ( $cat_wisw_pros as $cat_id => $cart_items ) {
        foreach ( $cart_items as $cart_item_key => $cart_item ) {
            if( !array_key_exists( $cart_item_key, $grouped_cart_items ) )
                $grouped_cart_items[$cart_item_key] = $cart_item;
        }
    }
    $woocommerce->cart->cart_contents = $grouped_cart_items;
}

add_action( 'woocommerce_before_cart_contents', 'woocommerce_before_cart_contents' );

روش سوم

add_filter( 'woocommerce_order_get_items', 'filter_order_get_items_by_categories12', 10, 3 );

function filter_order_get_items_by_categories12( $items, $order ) {
    global $woocommerce, $wpdb;

    $c1 = $wpdb->get_results( "select t1.order_item_name,t1.order_item_id,t5.name,t2.meta_value from
        wp_woocommerce_order_items as t1 LEFT JOIN wp_woocommerce_order_itemmeta as t2 ON t1.order_item_id =
        t2.order_item_id LEFT JOIN wp_term_relationships as t3 ON t2.meta_value = t3.object_id LEFT JOIN wp_term_taxonomy
        as t4 ON t3.term_taxonomy_id = t4.term_taxonomy_id LEFT JOIN wp_terms as t5 ON t4.term_id = t5.term_id where
        t1.order_id = '" . $order->get_id() . "' and t1.order_item_type='line_item' and t2.meta_key='_product_id' and
        t4.taxonomy='product_cat' ORDER BY `t5`.`name` ASC" );

    $sorted_item_ids = array();

    foreach ( $c1 as $data ) {
        if ( !in_array( $data->order_item_id, $sorted_item_ids ) ) {

            $sorted_item_ids[] = $data->order_item_id;
        }
    }
    $sorete_arr = [];
    foreach ( $sorted_item_ids as $value ) {
        if ( $items[ $value ] instanceof WC_Order_Item_Product )
            $sorete_arr[ $value ] = $items[ $value ];
    }



    return ($sorete_arr) ? $sorete_arr : $items;
}

 

کدهای ووکامرس بیشتر

آیا این مطلب برای شما مفید بود؟

بله
نه اصلا
از اینکه بازخورد خود را در اختیار ما گذاشته اید متشکریم. تا بعد 🙂

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *