WooCommerce là plugin quá quen thuộc cho những ai đã từng thiết kế website WordPress để bán hàng thương mại điện tử.
Lọc sản phẩm theo thuộc tính là gì?
Sau khi bạn cài đặt WooCommerce, tại trang cửa hàng sẽ hiển thị danh sách các sản phẩm mới nhất. Bạn đã từng nghĩ tới mình muốn lọc lại chỉ những sản phẩm được đánh dấu “Nổi bật” hoặc chỉ muốn xem những sản phẩm nào đang “Giảm giá”, hay sản phẩm tình trạng “Còn hàng” (instock) thì bạn làm như thế nào?
Trong bài viết này tôi sẽ hướng dẫn các bạn cách lọc lại danh sách sản phẩm theo những thuộc tính của nó. Bạn có thể dễ dàng làm theo rất đơn giản.
1. Lọc sản phẩm nổi bật
Đầu tiên bạn hãy chèn đoạn code sau functions.php trong theme website mình nhé
add_action( 'woocommerce_product_query', 'wpshare247_product_query' ); function wpshare247_product_query( $q ){ //Sản phẩm Nổi bật : http://plugin.wpshare247.com/cua-hang/?is_featured=1 if(isset($_REQUEST['is_featured'])){ $is_featured = isset($_REQUEST['is_featured']) ? (int)$_REQUEST['is_featured'] : ""; if($is_featured>=0){ //$meta_query = $q->get( 'meta_query' ); $tax_query = array( 'relation' => 'AND', array( 'taxonomy' => 'product_visibility', 'field' => 'name', 'terms' => 'featured', 'operator' => 'IN', ) ); $q->set( 'tax_query', $tax_query ); //echo 1111;exit; } } }
Tốt rồi, bước tiếp theo chắc bạn đã có đường dẫn (url) trang Cửa Hàng của mình chứ? Vậy thì bạn hãy truy cập vào đường dẫn theo cấu trúc như sau:
http://plugin.wpshare247.com/cua-hang/?is_featured=1
Với http://plugin.wpshare247.com/cua-hang
là đường dẫn chứa danh sách sản phẩm của website bạn. Tuy nhiên slug này có thể không phải là cua-hang, nó có thể là shop, san-pham hay bất kì. Để biết chắc bạn hãy vào trang danh sách xem nó là gì. Nếu chưa có thì hãy tạo cho mình trang cửa hàng nhé.
Xem Demo lọc sản phẩm nổi bật tại đây nhé => Sản Phẩm Nổi Bật
2. Lọc sản phẩm giảm giá
Tương tự như lọc sản phẩm nổi bật, giờ đây bạn có thể lọc lại chỉ những sản phẩm có giá đang giảm bằng đoạn code sau:
add_action( 'woocommerce_product_query', 'wpshare247_sale_product_query' ); function wpshare247_sale_product_query( $q ){ //Sản phẩm Giảm giá : http://plugin.wpshare247.com/cua-hang/?is_sale=1 $on_sale = isset($_REQUEST['is_sale']) ? (int)$_REQUEST['is_sale'] : 0; if($on_sale){ $meta_query = $q->get( 'meta_query' ); $meta_query[] = array( 'key' => '_sale_price', 'value' => 0, 'compare' => '>' ); $q->set( 'meta_query', $meta_query ); } }
Và đường dẫn để xem kết quả đoạn code trên là: http://plugin.wpshare247.com/cua-hang/?is_sale=1
Xem Demo lọc sản phẩm giảm giá tại đây nhé => Sản Phẩm Giảm Giá
3. Lọc sản phẩm theo product meta bất kì
Giờ đây bạn có thể lọc lại danh sách sản phẩm theo một meta bất kì bạn muốn. Để làm được điều này bạn cần chú ý gì?
Trước tiên bạn hãy kiểm tra chắc chắn rằng product meta tồn tại. Bằng cách hãy chạy câu SQL sau để xem chúng có những post meta nào:
SELECT * FROM `wp_postmeta` where post_id = 33
Ví dụ 33 là ID của sản phẩm
Vậy bạn hãy thử lọc những sản phẩm có meta là _stock_status để rõ hơn nhé.
Ở đây tôi sẽ đặt parameter của URL là is_stock=1 nghĩa là chỉ lọc những sản phẩm có meta _stock_status = instock.
Lúc này URL cuối của chúng ta là: https://plugin.wpshare247.com/cua-hang/?is_stock=1
bạn có thể thay đổi is_stock là bất kì chuỗi nào bạn muốn miễn nó không trùng với những parameter có sẵn.
Cuối cùng đến câu Query của tôi như sau:
add_action( 'woocommerce_product_query', 'wpshare247_instock_product_query' ); function wpshare247_instock_product_query( $q ){ //https://plugin.wpshare247.com/cua-hang/?is_stock=1 $is_stock = isset($_REQUEST['is_stock']) ? (int)$_REQUEST['is_stock'] : 0; if($is_stock){ $meta_query = $q->get( 'meta_query' ); $meta_query[] = array( 'key' => '_stock_status', 'value' => 'instock', 'compare' => '=' ); $q->set( 'meta_query', $meta_query ); } }
Vậy là các bạn đã có thể tự filter lại danh sách các sản phẩm theo ý muốn của mình rồi phải không? Học WordPress không khó tuy nhiên bạn cần phải có tính kiên nhẫn, mỗi ngày học một ít từ cơ bản đến nâng cao.