Người Viết : ViKiMi Editor

Hướng dẫn thiết lập truy vấn của Function Get_posts, với mảng tham đầu vào chính xác!
Trong phần trước chúng ta đã thấy cách sử dụng Function get_posts(). Với WordPress việc sử dụng cần chính xác theo đúng yêu cầu. Các thông tin lấy về sẽ được hiển thị kết hợp với thẻ HTML và các ngôn ngữ khác nhau. Tất nhiên, việc hiển thị có thể dựa vào các Template mẫu sẵn có của Theme bạn đang sử dụng : category.php, archiver.php …
Điều quan trọng là lấy thông tin từ Database về phải đúng theo dữ liệu cần phải lọc để hiển thị. Việc truy vấn thông tin đúng buộc lòng phải hiểu cách mà Function get_posts() sẽ làm việc truy vấn thông tin từ Database MySQL của Website. Các các lấy thông tin cơ bản nhất của Function get_posts() sẽ có thể hiểu như phần sau đây :
+ Chúng ta có một ví dụ để lọc thông tin bài Đăng theo tác giả như sau :
Các tham số truyền vào Function get_posts()
v author (int) – Mã ID của tác giả
v author_name (string) – Tên user_nicename của tác giả
v author__in (array) – Mảng ID các tác giả nếu muốn lọc bài viết từ nhiều tác giả cùng một lúc
v author__not_in (array) – Mảng ID của nhiều tác giả muốn loại trừ không có trong tác giả các Bài Đăng cần hiển thị
Theo các yêu cầu truy vấn khác nhau mà tham số truyền vào Function get_posts() sẽ khác nhau.
Ví dụ 1 : Lấy thông tin bài Đăng từ tác giả có ID = 1
$my_posts = get_posts( array( ‘author’ => 1 ) );
Ví dụ 2 : Lấy thông tin bài Đăng của nhiều tác giả có ID nằm trong mảng tham số truyền vào Function get_posts()
$my_posts = get_posts( array( ‘author_in’ => ‘1,5,12’ ) );
Ví dụ 3 : Lấy các bài Đăng không phải của các tác giả trong mảng tham số truyền vào Function get_posts()
$my_posts = get_posts( array( ‘author__not_in’ => ‘2,6,8’ ) );
Các ví dụ rất cơ bản về lọc thông tin bài đăng dựa vào tham số về tác giả sẽ truyền vào Function get_posts()
1 ) Lọc các thông tin liên quan đến các Categories
Chúng ta có các tham số truyền vào như sau :
v cat (int) Sử dụng Category id
v category_name (string) Sử dụng Category slug
v category__and (array) Sử dụng Category id
v category__in (array) Sử dụng Category id
v category__not_in (array) Sử dụng Category id
Cùng với những ý nghĩa tương tự như trên.
Ví Dụ : Lấy thông tin bài Đăng của category có Slug là ‘tin-bong-da’
$my_posts = get_posts( array( ‘category_name’ => ‘tin-bong-da’ ) );
Ví Dụ 2 : Lấy thông tin từ nhiều Categories với Slug
$my_posts = get_posts( array( ‘category_name’ => ‘staff,news’ ) );
2 ) Lọc thông tin liên quan đến các Tags
v tag (string) – Sử dụng Tag Slug.
v tag_id (int) – Sử dụng tag id.
v tag__and (array) – Sử dụng tag ids
v tag__in (array) – Sử dụng tag ids.
v tag__not_in (array) – Sử dụng tag ids.
v tag_slug__and (array) (array) – Sử dụng tag slugs.
v tag_slug__in (array) (array) – Sử dụng tag slugs.
Tương tự với những các trên, chúng có thể lấy về các thông tin bài Đăng cần thiết theo các Tags để hiển thị trên Website.
Ví Dụ : Lấy bài Đăng thuộc các Tags có Slug theo yêu cầu
$my_posts = get_posts( array( ‘tag’ => ‘bread,baking’ ) );
Ví dụ 2 : Lấy thông tin bài đăng không có trong các Tags có ID
$my_posts = get_posts( array( ‘tag__not_in’ => ‘1,2,3’ ) );
3 ) Lọc các thông tin liên quan đến các Taxonomy (/ Bao gồm tất cả các Taxonomy)
Dựa vào cách lọc thông tin này chúng ta có thể dễ dàng hơn trong chỉ định các tham số để lấy thông tin và hoàn toàn có thể lọc các thông tin bài Đăng theo Category & Tag.
Chúng ta sẽ sử dụng tax_query cho mảng truy vấn sẽ truyền vào Function get_posts().
Ví Dụ 1 : Lọc bài Đăng thuộc một category có Slug là ‘tin-bong-da’
$args = array(
‘post_type’ => ‘post’,
‘tax_query’ => array(
array(
‘taxonomy’ => ‘category’,
‘field’ => ‘slug’,
‘terms’ => ‘tin-bong-da’,
),
),
);
$my_posts = get_posts( $args );
Ví Dụ 2 : Lọc bài Đăng thuộc một category có Slug là ‘tin-bong-da’ & ‘tin-the-thao’
$args = array(
‘post_type’ => ‘post’,
‘tax_query’ => array(
array(
‘taxonomy’ => ‘category’,
‘field’ => ‘slug’,
‘terms’ => array( ‘tin-bong-da’, ‘tin-the-thao’ ),
),
),
);
$my_posts = get_posts( $args );
Ví Dụ 3 : Lọc bài Đăng không thuộc các categories trong mảng ID truyền vào.
$args = array(
‘post_type’ => ‘post’,
‘tax_query’ => array(
array(
‘taxonomy’ => ‘category’,
‘field’ => ‘term_id’,
‘terms’ => array( 103, 115, 206 ),
‘operator’ => ‘NOT IN’,
),
),
);
$my_posts = get_posts( $args );
Ví Dụ 4 : Lọc bài Đăng thuộc các categories trong mảng ID truyền vào.
$args = array(
‘post_type’ => ‘post’,
‘tax_query’ => array(
array(
‘taxonomy’ => ‘category’,
‘field’ => ‘term_id’,
‘terms’ => array( 1, 2, 3 ),
‘operator’ => ‘IN’,
),
),
);
$my_posts = get_posts( $args );
Ví Dụ 5 : Lọc bài Đăng không thuộc các categories trong mảng Slug truyền vào.
$args = array(
‘post_type’ => ‘post’,
‘tax_query’ => array(
array(
‘taxonomy’ => ‘category’,
‘field’ => ‘term_id’,
‘terms’ => array(‘tin-moi’, ‘tin-an-ninh’),
‘operator’ => ‘NOT IN’,
),
),
);
$my_posts = get_posts( $args );
Ví Dụ 6 : Lọc bài Đăng thuộc category có Slug là ‘tin-the-thao’ và thuộc Tag có id = 25
$args = array(
‘numberposts’ => 5,
‘post_type’ => ‘post’,
‘relation’ => ‘AND’,
‘tax_query’ => array(
array(
‘taxonomy’ => ‘category’,
‘field’ => ‘slug’,
‘terms’ => ‘tin-the-thao’
),
array(
‘taxonomy’ => ‘post-tag’,
‘field’ => ‘term_id’,
‘terms’ => 25
)
)
);
$my_posts = get_posts( $args );
Ví Dụ 7 : Lọc bài Đăng thuộc category có Slug là ‘tin-the-thao’ và không thuộc Tag có id = 10, 20, 30
$args = array(
‘post_type’ => ‘post’,
‘tax_query’ => array(
‘relation’ => ‘AND’,
array(
‘taxonomy’ => ‘category’,
‘field’ => ‘slug’,
‘terms’ => array( ‘tin-the-thao’ ),
),
array(
‘taxonomy’ => ‘post-tag’,
‘field’ => ‘term_id’,
‘terms’ => array( 10, 20, 30 ),
‘operator’ => ‘NOT IN’,
),
),
);
$my_posts = get_posts( $args );
Ví Dụ 8 : Lọc bài Đăng thuộc category có Slug là ‘tin-the-thao’ hoặc Tag có Slug ‘tin-ngoai-le’
$args = array(
‘post_type’ => ‘post’,
‘tax_query’ => array(
‘relation’ => ‘OR’,
array(
‘taxonomy’ => ‘category’,
‘field’ => ‘slug’,
‘terms’ => array( ‘tin-the-thao’ ),
),
array(
‘taxonomy’ => ‘post-tag’,
‘field’ => ‘slug’,
‘terms’ => array(‘tin-ngoai-le’),
‘operator’ => ‘IN’,
),
),
);
$my_posts = get_posts( $args );
Lưu ý :
+ Chúng thấy quan hệ RELATION được truyền vào mảng tham số truy vấn sẽ là khác nhau AND hoặc OR …
+ Tham số OPERATION có các giá trị ‘IN’, ‘NOT IN’, ‘AND’, ‘EXISTS’, ‘NOT EXISTS’ . Mặc định giá trị là ‘IN’ .
+ Tham số Numberposts sẽ giúp chúng ta giới hạn số lượng bài Post được hiển thị.
+ Nếu bạn muốn thực hiện phân trang với số lượng bài Posts trên một Page hãy sử dụng tham số posts_per_page.