Woocommerce trên nền tảng WordPress đã trở nên phổ biến nhất nhì thế giới hiện nay. Khi sử dụng Woocommerce có thể bạn sẽ gặp tình trạng sản phẩm đã đăng lên nhưng hết hàng, nếu giữ lại và hiển thị thì chiếm mất vị trí của sản phẩm còn hàng & trông cũng không được đẹp mắt; Còn nếu xóa đi thì mất lưu lượng truy cập hoặc lỗi 404 khi công cụ tìm kiếm hay người dùng vào lại. Nói cung là phải xử lý với các sản phẩm hết hàng trên Woocommerce.
Cách 1: Ẩn sản phẩm hết hàng trong Woocommerce
Vào Admin > Woocommerce > Thiết lập > Sản phẩm > Kiểm kê kho hàng > Trạng thái hết hàng rồi tích vào Ẩn những sản phẩm đã hết hàng từ catalog sau đó lưu lại là ok.
Ưu điểm:
- Ẩn sản phẩm nhanh chóng
- Thực hiện đơn giản
- Giữ được link
Nhược điểm:
- Không thể tìm kiếm lại sản phẩm trên website
Cách 2: Di chuyển sản phẩm hết hàng xuống cuối danh sách hiển thị
Chèn đoạn code này vào function.php
Code của bạn Lê Văn Toản
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | /* * Order by stock status * Shared by levantoan.com * */ add_filter('posts_clauses', 'devvn_order_by_stock_status', 2000); function devvn_order_by_stock_status($posts_clauses) { global $wpdb; if (is_woocommerce() && (is_shop() || is_product_category() || is_product_tag())) { $posts_clauses['join'] .= " INNER JOIN $wpdb->postmeta istockstatus ON ($wpdb->posts.ID = istockstatus.post_id) "; $posts_clauses['orderby'] = " istockstatus.meta_value ASC, " . $posts_clauses['orderby']; $posts_clauses['where'] = " AND istockstatus.meta_key = '_stock_status' AND istockstatus.meta_value <> '' " . $posts_clauses['where']; } return $posts_clauses; } |
Code sưu tầm trên Stackoverflow
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | /*** Sorting out of stock WooCommerce products - Order product collections by stock status, in-stock products first. */ class iWC_Orderby_Stock_Status { public function __construct() { // Check if WooCommerce is active if (in_array('woocommerce/woocommerce.php', apply_filters('active_plugins', get_option('active_plugins')))) { add_filter('posts_clauses', array($this, 'order_by_stock_status'), 2000); } } public function order_by_stock_status($posts_clauses) { global $wpdb; // only change query on WooCommerce loops if (is_woocommerce() && (is_shop() || is_product_category() || is_product_tag())) { $posts_clauses['join'] .= " INNER JOIN $wpdb->postmeta istockstatus ON ($wpdb->posts.ID = istockstatus.post_id) "; $posts_clauses['orderby'] = " istockstatus.meta_value ASC, " . $posts_clauses['orderby']; $posts_clauses['where'] = " AND istockstatus.meta_key = '_stock_status' AND istockstatus.meta_value <> '' " . $posts_clauses['where']; } return $posts_clauses; } } new iWC_Orderby_Stock_Status; /** * END - Order product collections by stock status, instock products first. */ |
Với đoạn code này, sản phẩm hết hàng được sắp xếp xuống cuối danh sách hiển thị, giữ được link sản phẩm và tìm kiếm sản phẩm trên website.
Chúc các bạn thành công.
Bài viết cùng chuyên mục: