Người Viết : ViKiMi Editor

Tuỳ chỉnh Bộ Lọc Sản Phẩm / Product Filter tại Shop Page của WooCommerce dễ dàng !
Chúng ta biết rằng Product Filter với một Shop Online thực sự quan trọng. Có nhiều cách để tạo Product Filter hữu ích, chúng ta có thể sử dụng các Plugin miễn phí, hoặc với một cách sử dụng khác không khó khăn đó là sử dụng Coding và điều này giúp có thể làm chủ được ý đồ thiết kế, cung cấp dịch vụ cách tốt hơn phù hợp yêu cầu.
Với cách này chúng ta thấy rằng nó không khó khăn.
Tất cả các lập trình viên đều có thể thực hiện bằng những câu lệnh phù hợp với WordPress. Chúng ta có thể sử dụng những truy vấn cần thiết để mang lại kết quả tốt nhất. Những truy vấn chúng ta sử dụng đều phù hợp với WordPress, như vậy sẽ tạo được cách Customize của riêng Shop.
Vậy chúng ta cần phải làm gì để có thể thiết kế Customize không sử dụng Plugin. Thật đơn giản, chúng ta có các bước sau :
+ Tạo Form cho phép lọc dữ liệu (Form này sẽ xuất hiện tại Archive Pages, hoặc Category hoặc Tag etc…)
+ Thêm truy vấn dữ liệu khi có xử lý yêu cầu bộ lọc sản phẩm
Cách thực hiện các bước trên vẫn tương tự như trước đây, chúng ta sử dụng các Hooks được cung cấp bởi WooCommerce để làm điều này.
Chúng ta sẽ Customize bằng cách tạo Plugin để làm điều này. Với Plugin này chúng ta chỉ cần cài đặt và kích hoạt. Đây là một Plugin đơn giản và không tốn thời gian xử lý. Code tạo Plugin như sau :
<?php
/*
* Plugin Name: Product Filter
* Description: Adds a custom product filter to the WooCommerce shop page
* Version: 1.0
* Author: Developer
*/
add_action( ‘woocommerce_before_shop_loop’, ‘custom_product_filter’ );
function custom_product_filter() {
global $wp_query;
$product_colors = get_terms( array(
‘taxonomy’ => ‘pa_mau-sac’,
‘hide_empty’ => false,
) );
?>
<form method=”get”>
<select name=”product_color”>
<option value=””>Filter by Color</option>
<?php foreach( $product_colors as $color ) : ?>
<option value=”<?php echo esc_attr( $color->slug ); ?>”>
<?php echo esc_html( $color->name ); ?></option>
<?php endforeach; ?>
</select>
<input type=”hidden” name=”post_type” value=”product” />
<input type=”submit” value=”Filter” />
</form>
<?php
}
add_filter( ‘pre_get_posts’, ‘product_filter_query’ );
function product_filter_query( $query ) {
if( ! is_admin() && $query->is_main_query() && is_shop() && isset( $_GET[‘product_color’] ) && ! empty( $_GET[‘product_color’] ) ) {
$tax_query = array(
array(
‘taxonomy’ => ‘pa_mau-sac’,
‘field’ => ‘slug’,
‘terms’ => $_GET[‘product_color’],
),
);
$query->set( ‘tax_query’, $tax_query );
}
return $query;
}
?>
Điều này không khó hiểu khi bạn xem mối quan hệ mysql. Chúng ta có thể thấy như bên dưới, đó là dữ liệu trong cơ sở dữ liệu mysql (Do đó nếu bạn muốn thêm vào các dữ liệu khác thì cũng sẽ tương tự, và sử dụng cách tạo Form cơ bản.)
Hình Ảnh 1 :

Hình Ảnh 2 :

Như vậy, bạn có thể tạo những Bộ Lọc theo ý muốn. Tuy nhiên, điều này thật mất công so với chúng ta sử dụng một Plugin miễn phí cho Shop Online. Thực sự, có lẽ việc tạo một Bộ Lọc Sản Phẩm sử dụng Plugin miễn phí vẫn được ưu tiên cao hơn và phù hợp hơn.