
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 Vũ Trụ Số 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 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
/* Woocommerce Filter by on sale*/ function vutruso_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', 'vutruso_custom_woocommerce_filter_by_onsale'); /* Woocommerce Filter by on sale where statement*/ function vutruso_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' , 'vutruso_custom_woocommerce_filter_by_onsale_where_statement');
Sau khi thêm vào file 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