Người Viết : ViKiMi Editor

Thực hiện truy vấn Bài Posts dựa trên những tuỳ chỉnh, Sử dụng lớp WP_Query của WordPress !
Sử dụng Lớp WP_Query của WordPress, có nhiều phần giống với Function Get_posts. Nhưng giữa 2 cách sử dụng thì khuyến cáo có lẽ là nên dùng lớp WP_Query của WordPress. Lý do là với cách sử dụng lớp WP_Query sẽ giúp cho các truy vấn thông tin Cơ Sở Dữ Liệu trở nên tốt hơn. Và tất nhiên không có chuyện xảy ra ghi đè lên truy vấn chính.
Tuy nhiên, cách truy vấn thông tin thì thực sự giống nhau. Với Lớp WP_Query chúng ta cũng có truy vấn với Meta Query để có thể lấy về các thông tin tuỳ chỉnh mong muốn. Đây có vẻ cũng là một cách truy vấn thông tin cơ bản cần đề cập đến.
A ) Chúng ta tham khảo Ví Dụ mảng tham số truyền vào dưới đây:
$args = array(
‘meta_key’ => ‘color’,
‘meta_value’ => ‘green’,
‘meta_compare’ => ‘=’
);
Đây là một ví dụ điển hình về mảng tham số truyền vào khi sử dụng Meta Query bằng những tham số tuỳ chỉnh. Lớp WP_Query cho phép lấy về danh sách các bài Đăng dựa trên các khoá và trường tuỳ chỉnh.
Khi sử dụng Meta Query bằng những trường tuỳ chỉnh, các tham số chúng ta có thể sử dụng là :
+ meta_key (string) là Khoá của trường truỳ chỉnh
+ meta_value (string) là Giá trị của trường tuỳ chỉnh
+ Ngoài ra, còn có thể sử dụng meta_value_num (number) là giá trị của trường tuỳ chỉnh.
+ meta_compare (string) là Toán tử để kiểm tra giá trị của meta_value
Giá trị Toán tử khả dụng cho meta_compare là ‘=’, ‘!=’, ‘>’, ‘>=’, ‘<‘, ‘<=’, ‘LIKE’, ‘NOT LIKE’, ‘IN’, ‘NOT IN’, ‘BETWEEN’, ‘NOT BETWEEN’, ‘NOT EXISTS’, ‘REGEXP’, ‘NOT REGEXP’ or ‘RLIKE’.
Trong Ví dụ cơ bản ở trên chúng ta truy vấn với trường truỳ chỉnh có :
‘meta_key’ là ‘color’ , ‘meta_value’ là ‘green’ và ‘meta_compare’ là ‘=’ ; Điều đó có nghĩa là tất cả những bài Đăng có trường tuỳ chỉnh ‘color’ có giá trị là ‘green’ thì sẽ được lấy về. Bởi vì phép truy vấn đang sử dụng Toán Tử ‘=’ để kiểm tra giá trị của meta_value.
v Có thể tham khảo một vài ví dụ điển hình sau :
Example 1 : Lấy về tất cả Trang / Page có giá trị tuỳ chỉnh meta_value là blue và bất kể khoá trường tuỳ chỉnh là gì.
$args = array(
‘meta_value’ => ‘blue’,
‘post_type’ => ‘page’
);
$my_query = new WP_Query( $args );
Example 2 : Một ví dụ tương tự nhưng sử dụng Toán tử ‘!=’ để kiểm tra giá trị meta_value.
$args = array(
‘meta_key’ => ‘color’,
‘meta_value’ => ‘blue’,
‘meta_compare’ => ‘!=’
);
$my_query = new WP_Query( $args );
Example 3 : Sử dụng cùng với ‘tax_query’ và ‘meta_value_num’ :
$args = array(
‘post_type’ => ‘book’,
‘meta_key’ => ‘year_published’,
‘meta_value_num’ => 2010,
‘meta_compare’ => ‘>’,
‘tax_query’ => array(
array(
‘taxonomy’ => ‘book_category’,
‘field’ => ‘slug’,
‘terms’ => ‘fantasy’,
)
)
);
$my_query = new WP_Query( $args );
B ) Thực hiện truy vấn thông tin trên những trường tuỳ chỉnh và sử dụng tham số ‘meta_query’ (array) là những tham số trường tuỳ chỉnh. Lớp WP_Query !
‘meta_query’ chứa một hoặc nhiều mảng với những keys sau đây :
+ key (string) – Khoá trường tuỳ chỉnh.
+ value (string|array) – Giá trị trường tuỳ chỉnh.
+ compare (string) – Toán tử để kiểm tra giá trị : ‘=’, ‘!=’, ‘>’, ‘>=’, ‘<‘, ‘<=’, ‘LIKE’, ‘NOT LIKE’, ‘IN’, ‘NOT IN’, ‘BETWEEN’, ‘NOT BETWEEN’, ‘EXISTS’ và ‘NOT EXISTS’. Giá trị mặc định là ‘=’.
+ type (string) – Kiểu của trường tuỳ chỉnh : ‘NUMERIC’, ‘BINARY’, ‘CHAR’, ‘DATE’, ‘DATETIME’, ‘DECIMAL’, ‘SIGNED’, ‘TIME’, ‘UNSIGNED’. Giá trị mặc định là ‘CHAR’.
v Có thể tham khảo những Ví Dụ sau đây :
Example 1 : Truy vấn thông tin trên trường tuỳ chỉnh của kiểu bài Đăng là ‘new-product’ và sử dụng tham số ‘meta_query’
$args = array(
‘post_type’ => ‘new-product’,
‘meta_query’ => array(
‘relation’ => ‘AND’,
array(
‘key’ => ‘version’,
‘value’ => ‘2030’,
‘compare’ => ‘NOT LIKE’,
),
array(
‘key’ => ‘price’,
‘value’ => array( 20, 100 ),
‘type’ => ‘numeric’,
‘compare’ => ‘BETWEEN’,
),
),
);
$my_query = new WP_Query( $args );
Example 2 : Thực hiện truy vấn thông tin trên trường tuỳ chỉnh của kiểu bài đăng là ‘product’ và sử dụng tham số ‘meta_query’ với AND / OR
$args = array(
‘post_type’ => ‘product’,
‘meta_query’ => array(
‘relation’ => ‘OR’,
array(
‘key’ => ‘my-color’,
‘value’ => ‘green’,
‘compare’ => ‘=’,
),
array(
‘relation’ => ‘AND’,
array(
‘key’ => ‘my-color’,
‘value’ => ‘pink’,
‘compare’ => ‘=’,
),
array(
‘key’ => ‘size’,
‘value’ => ‘XXL’,
‘compare’ => ‘=’,
),
),
),
);
$my_query = new WP_Query( $args );
Example 3 : Truy vấn thông tin trên trường tuỳ chỉnh với các tham số ‘tax_query’ và ‘meta_query’
$args = array(
‘post_type’ => ‘product’,
‘tax_query’ => array(
array(
‘taxonomy’ => ‘product_cat’,
‘field’ => ‘slug’
‘terms’ => array( ‘nice-shoes’ )
)
),
‘meta_query’ => array(
‘relation’ => ‘OR’,
array(
‘key’ => ‘year_published’,
‘value’ => 2010,
‘type’ => ‘numeric’,
‘compare’ => ‘>’,
),
array(
‘key’ => ‘price’,
‘value’ => array( 100, 250 ),
‘type’ => ‘numeric’,
‘compare’ => ‘BETWEEN’,
)
)
);
$my_query = new WP_Query( $args );
C ) Truy vấn thông tin bài Đăng với tham số Order & Orderby
Sử dụng tham này để thực hiện sắp xếp dữ liệu sẽ nhận về. Tham số Order để dùng chỉ định dữ liệu sẽ sắp xếp theo chiều tăng dần hay giảm dần. Tham số Orderby chỉ định tham số sẽ dùng để sắp xếp.
+ order : Chỉ định sắp xếp dữ liệu tăng dần hay giảm dần của tham số Orderby. Giá trị mặc định là ‘DESC’
Giá trị ‘ASC’ chỉ định sắp xếp tăng dần từ giá trị thấp nhất đến cao nhất ( 1, 2, 3; a, b, c )
Giá trị ‘DESC’ chỉ định sắp xếp giảm dần từ giá trị cao nhất đến giá trị thấp nhất (3, 2, 1; c, b, a)
+ orderby : Sắp xếp các bài đăng nhận về bởi các tham số sau :
· ‘none‘ – No order
· ‘ID‘
· ‘author‘
· ‘title‘
· ‘name‘
· ‘type‘
· ‘date‘
· ‘modified‘
· ‘parent‘
· ‘rand‘ – Random order.
· ‘comment_count‘
· ‘relevance‘
· ‘menu_order‘
· ‘meta_value‘
· ‘meta_value_num‘
· ‘post__in‘
· ‘post_name__in‘
· ‘post_parent__in‘
[ Example 1 : ] Sắp xếp Bài Đăng nhận về theo chiều tăng dần (ASC) dựa vào tham số ‘orderby’ là ‘name’
$args = array(
‘author’ => ‘1,5,12’,
‘orderby’ => ‘name’,
‘order’ => ‘ASC’
);
$my_query = new WP_Query( $args );
[ Example 2 : ] Sắp xếp bài Đăng nhận về một cách ngẫu nhiên / RAND
$args = array(
‘author’ => ‘1,5,12’,
‘orderby’ => ‘rand’,
);
$my_query = new WP_Query( $args );
[ Example 3 : ] Sắp xếp bài Đăng nhận về kết hợp cả 2 ‘ASC’ và ‘DESC’
$args = array(
‘meta_query’ => array(
‘relation’ => ‘AND’,
‘year_clause’ => array(
‘key’ => ‘year_published’,
‘value’ => 2010,
‘type’ => ‘numeric’,
‘compare’ => ‘>’,
),
‘price_clause’ => array(
‘key’ => ‘price’,
‘value’ => array( 10, 25 ),
‘type’ => ‘numeric’,
‘compare’ => ‘BETWEEN’,
)
),
‘orderby’ => array(
‘price_clause’ => ‘ASC’,
‘year_clause’ => ‘DESC’
),
);
$my_query = new WP_Query( $args );
Cách sử dụng mảng tham số của Function Get_posts & Lớp WP_Query của WordPress rất giống nhau. Do đó theo mục đích sử dụng có thể thực hiện với mỗi ý đồ, Cách triển khai Coding cũng theo ý đồ phát triển của Website nói chung. Lựa chọn của 1 Người Phát Triển sẽ được cân nhắc chăc chắn hơn.