Người Viết : ViKiMi Editor

Truy vấn thông tin bài Đăng của WordPress Wesbite sử dụng Function Get _ Posts [ Phần 3 ]
Sử dụng Function get_posts() giúp chúng ta có nhiều cách thể hiện và tuỳ chỉnh cách hiển thị. Function get_posts() có thể thực hiện nhiều cách truy vấn thông tin từ Database, với nhiều cách truy vấn sẽ giúp chúng ta tìm được những cách mong muốn. Với những cách trước đây giúp truy vấn thông tin trên những dữ liệu cơ bản của WordPress.
Để tìm cách truy vấn thông tin ngay cả trên những trường tuỳ chỉnh hay còn gọi là Meta Query bằng những tham số tuỳ chỉnh. Lần này chúng ta sẽ đề cập đến cách truy vấn này, một cách truy vấn thông tin khái quát và phổ biến khi cần thiết.
A ) Chúng ta có thấy Một Ví Dụ một mảng tham số truyền vào dưới đây :
$args = array( 'meta_key' => 'cover', 'meta_value' => 'paperback', '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. Function get_posts 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à ‘cover’ , ‘meta_value’ là ‘paperback’ và ‘meta_compare’ là ‘=’ ; Điều đó có nghĩa là tất cả những bài Đăng có trường tuỳ chỉnh ‘cover’ có giá trị là ‘paperback’ 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_posts = get_posts( $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_posts = get_posts( $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_posts = get_posts( $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.
‘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à ‘product’ và sử dụng tham số ‘meta_query’
$args = array( 'post_type' => 'product', 'meta_query' => array( 'relation' => 'AND', array( 'key' => 'color', 'value' => 'blue', 'compare' => 'NOT LIKE', ), array( 'key' => 'price', 'value' => array( 20, 100 ), 'type' => 'numeric', 'compare' => 'BETWEEN', ), ), ); $my_posts = get_posts( $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' => 'color', 'value' => 'orange', 'compare' => '=', ), array( 'relation' => 'AND', array( 'key' => 'color', 'value' => 'red', 'compare' => '=', ), array( 'key' => 'size', 'value' => 'small', 'compare' => '=', ), ), ), ); $my_posts = get_posts( $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_category', 'field' => 'slug' 'terms' => array( 'nice-shoes' ) ) ), 'meta_query' => array( 'relation' => 'OR', array( 'key' => 'year_published', 'value' => 2022, 'type' => 'numeric', 'compare' => '>', ), array( 'key' => 'price', 'value' => array( 100, 250 ), 'type' => 'numeric', 'compare' => 'BETWEEN', ) ) ); $my_posts = get_posts( $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 :
v ‘none‘ – No order
v ‘ID‘
v ‘author‘
v ‘title‘
v ‘name‘
v ‘type‘
v ‘date‘
v ‘modified‘
v ‘parent‘
v ‘rand‘ – Random order.
v ‘comment_count‘
v ‘relevance‘
v ‘menu_order‘
v ‘meta_value‘
v ‘meta_value_num‘
v ‘post__in‘
v ‘post_name__in‘
v ‘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_posts = get_posts( $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_posts = get_posts( $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_posts = get_posts( $args );