Lọc sản phẩm giảm giá WooCommerce trong wp-admin
Trong wp-admin WooCommerce không hỗ trợ lọc sản phẩm theo sale hay sản phẩm đang giảm giá nên nếu muốn lọc sản phẩm để quản lý khá khó khăn nên trong bài viết này Ngôi Nhà Web sẽ chia sẽ đoạn code ngắn để bạn có thể lọc sản phẩm đang giảm giá trong phần quản trị sản phẩm WooCommerce
Để lọc sản phẩm giảm giá WooCommerce trong wp-admin bạn chỉ cần thêm đoạn code này vào file
Sau khi thêm vào file
functions.php
bạn sẽ có thêm chức năng lọc sản phẩm đang giảm giá (Filter by sale – on sales) trong phần quản trị sản phẩm wp-admin
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 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
/* Woocommerce Filter by on sale*/ function ngoinhaweb_custom_woocommerce_filter_by_onsale($output) { global $wp_query; $selected = filter_input(INPUT_GET, 'product_sale', FILTER_VALIDATE_INT); if ($selected == false) { $selected = 0; } $output .= ' <select id="dropdown_product_sale" name="product_sale"> <option value="">Filter by sale</option> <option value="1" ' . (($selected === 1) ? 'selected="selected"' : '') . '>On sale</option> <option value="2" ' . (($selected === 2) ? 'selected="selected"' : '') . '>Not on sale</option> </select> '; return $output; } add_action('woocommerce_product_filters', 'ngoinhaweb_custom_woocommerce_filter_by_onsale'); /* Woocommerce Filter by on sale where statement*/ function ngoinhaweb_custom_woocommerce_filter_by_onsale_where_statement($where) { global $wp_query, $wpdb; // Get selected value $selected = filter_input(INPUT_GET, 'product_sale', FILTER_VALIDATE_INT); // Only trigger if required if (!is_admin() || get_query_var('post_type') != "product" || !$selected) { return $where; } $querystr = ' SELECT p.ID, p.post_parent FROM ' . $wpdb->posts . ' p WHERE p.ID IN ( SELECT post_id FROM ' . $wpdb->postmeta . ' pm WHERE pm.meta_key = "_sale_price" AND pm.meta_value > \'\' ) '; $pageposts = $wpdb->get_results($querystr, OBJECT); $productsIDs = array_map(function($n){ return $n->post_parent > 0 ? $n->post_parent : $n->ID; }, $pageposts); if ($selected == 1) { $where .= ' AND ' . $wpdb->posts . '.ID IN (' . implode(",", $productsIDs) . ') '; } elseif ($selected == 2) { $where .= ' AND ' . $wpdb->posts . '.ID NOT IN (' . implode(",", $productsIDs) . ') '; } return $where; } add_filter('posts_where' , 'ngoinhaweb_custom_woocommerce_filter_by_onsale_where_statement'); |
functions.php
vào trong phần quản lý sản phẩm bạn sẽ thấy phần lọc sản phẩm theo sale như dưới đây
Chúc các bạn thành công