แสดงผลิตภัณฑ์ WooCommerce แบบสุ่มตามค่าเริ่มต้นบนหน้าร้านค้า

Aug 16 2020

ฉันพยายามแสดงสินค้าแบบสุ่มบนหน้าร้านค้าของฉันด้วยรหัสนี้:

add_filter('woocommerce_get_catalog_ordering_args', 'set_sort_order');
function set_sort_order($args) { $args['orderby'] = 'rand';
    return ($args);    
}

แต่รหัสนี้ทำให้สุ่มหน้าหมวดหมู่สินค้า แต่ฉันต้องเก็บไว้แค่หน้า - หน้าแรก ไม่อยู่ในหน้าหมวดหมู่สินค้า ฉันจะทำมันได้อย่างไร?

คำตอบ

2 LoicTheAztec Aug 16 2020 at 11:03

ใช้สิ่งต่อไปนี้แทนเพื่อจัดเรียงสินค้าแบบสุ่มในหน้าเก็บถาวรของร้านค้าเท่านั้น:

// Set default orderby query to "rand" option for shop archive pages
add_filter('woocommerce_get_catalog_ordering_args', 'shop_default_orderby_rand');
function shop_default_orderby_rand($args) { if( is_shop() && ( ! isset($_GET['orderby']) || 'menu_order' === $_GET['orderby'] ) ) { $args['orderby'] = 'rand';
        return ($args);
    }
}

หรือคุณสามารถใช้อันนี้ได้เช่นกัน:

// Set default orderby query to "rand" for shop archive pages
add_action( 'pre_get_posts', 'shop_default_orderby_rand' );
function shop_default_orderby_rand( $query ) {
    if ( is_shop() && ( ! isset($_GET['orderby']) || 'menu_order' === $_GET['orderby'] ) ) {
        $query->set( 'orderby', 'rand' );
    }
}

แทรกรหัสในไฟล์ functions.php ของธีมลูกที่ใช้งานอยู่ (หรือธีมที่ใช้งานอยู่) ทดสอบแล้วใช้งานได้จริง