Hàm get_posts() WordPress: Cách sử dụng và ví dụ cụ thể

Hàm get_posts() là hàm dùng để query post trong wordpress. Các bạn có thể sử dụng hàm get posts ở bất kỳ đâu để lấy danh sách bài viết. Hàm này cần có một mảng (array) định nghĩa các yêu cầu trong wp_query cần lấy dữ liệu. Nó cho phép ta truy xuất một mảng các bài đăng mới nhất hoặc các bài đăng phù hợp với các tiêu chí mình định ra. Lưu ý là hàm get_posts nó có chức năng tương tự như wp_query.

Hàm get_posts() nằm ở đâu?

Hàm này nằm ở trong core nguồn của WordPress.  Các bạn có thể tìm thấy hàm này tại file: wp-includes/post.php. Đây là hàm nguyên bản của WordPress:

Vì nó nằm trong core rồi nên mình chỉ đưa ra minh họa bên trên. Bạn không cần quan tâm đến nó mà chỉ cần tìm hiểu cách sử dụng nó ở bên dưới đây.

Một số thông số chính cần chú ý

post__not_in: Không lấy các bài viết có id trong mảng này. post__not_in có thể là 1 id cụ thể hoặc 1 mảng (array) nhiều id khác nhau.

post__in: Tương tự post__not_in, post__in thì lại bắt buộc lấy các bài viết có id được định sẵn trong post__in đó. post__in cũng có thể là 1 id cụ thể hoặc 1 array nhiều id khác nhau.

post type: giá trị của post_type định nghĩa khu vực cần lấy bài viết. Mặc định wordpress có 2 post_type là post và page. Nếu bạn định nghĩa thêm các post_type khác thì bạn phải định nghĩa khu vực lấy để wordpress đỡ “bối rối”. Nếu không định nghĩa, wordpress mặc định sẽ hiểu là lấy tất cả các post_type hiện có.

posts_per_page:  Giá trị này xác định số kết quả sẽ hiển thị trên 1 trang nếu có nhiều kết quả. Mặc định nó sẽ lấy giá trị được định sẵn trong phần settings/reading ở trong trang quản trị của wordpress.

category: Có thể hiểu nó xác định khu vực category cần lấy. Một wp query bình thường sẽ select giá trị trong bảng nào đó, where là các điều kiện. Trong trường hợp này, where category bằng một id cụ thể hoặc 1 array các id khác nhau.

Cách sử dụng hàm get posts

Trong đó:

numberposts: Giá trị truyền vào nhằm xác định số bài viết cần lấy. Nếu numberposts không có thì nó sẽ lấy giá trị mặc định là 5.

category:  Thư mục mặc của bài viết cần lấy. Giá trị là số, và có thể là 1 hoặc nhiều giá trị khác nhau (array)

orderby: Sắp xếp kết quả theo tiêu chí nào

order: Thứ tự sắp xếp. A đến Z hoặc Z về A

include: Bắt buộc lấy những giá trị đó.

Exclude: Bắt buộc loại bỏ các giá trị đó.

meta_key: meta cần lấy dữ liệu cùng với bài viết

post_type: Loại bài viết. Có thể là post (mặc định) hoặc page, hoặc custom post_type mà các bạn thêm vào trước đó.

How to use WordPress get_posts Function

How to use WordPress get_posts Function

Giá trị trả về của hàm get_posts()

Hàm get_posts() trả về một mảng đối tượng WP_Post (Array of WP_Post object).  Hàm get_posts() sẽ trả về 24 thông số như danh sách bên dưới đây:

  • [ID] =>
  • [post_author]=>
  • [post_date]=>
  • [post_date_gmt]=>
  • [post_content]=>
  • [post_title]=>
  • [post_excerpt]=>
  • [post_status]=>
  • [comment_status]=>
  • [ping_status]=>
  • [post_password]=>
  • [post_name]=>
  • [to_ping]=>
  • [pinged]=>
  • [post_modified]=>
  • [post_modified_gmt]=>
  • [post_content_filtered]=>
  • [post_parent]=>
  • [guid]=>
  • [menu_order]=>
  • [post_type]=>
  • [post_mime_type]=>
  • [comment_count]=>
  • [filter]=>

Để phân tích dữ liệu và hiển thị ra màn hình

get_posts() by Author – Lấy những bài viết của 1 tác giả nào đó

Nếu bạn muốn lấy danh sách bài viết của một tác giả nào đó (get posts by post author(s)) thì có thể dùng cách nhanh nhất như bên dưới đây:

Các tham số của authors:

Ví dụ: Trả về danh sách các bài viết của tác giả có ID là 1.

Dưới đây là hàm lấy danh sách bài viết của các tác giả có ID là 1,15,18.

Hoặc dùng cách khác là author__in cũng cho kết quả lấy danh sách các bài viết của các tác giả có ID là 1,15,18

Tương tự, nếu muốn lấy danh sách các bài viết của tất cả các tác giả, nhưng KHÔNG lấy bài của tác giả có ID 1,1,5,18 thì dùng author__not__in

Hiển thị bài viết theo Category

Tương tự như lấy bài viết theo author, muốn hiển thị bài viết theo Category thì ta có thể sử dụng một trong các thông số sau (có thể kết hợp lại với nhau):

  • cat (int)
  • category_name (string)
  • category__and (array)
  • category__in (array)
  • category__not_in (array)

Hiển thị bài viết theo category trên trang chủ:

Lấy các bài viết có category ID là 1:

Lấy các bài viết có category ID là 1,15,18

Các bạn làm tương tự nếu muốn loại bỏ category khỏi danh sách cần lấy thì thay category__in thành category__not_in.

Get related post by category

Dưới đây là ví dụ về hàm lấy dữ liệu những bài viết cùng chủ đề (get related post by category) trong wordpress:

Custom Post Types and Custom Taxonomies

Mặc định thì WordPress sẽ lấy bài viết từ post_type là post, các bạn có thể định nghĩa việc lấy theo Custom Post Types bằng thông số: ‘post_type’.

Ví dụ dưới đây là hàm mà Huy Hòa dùng để lấy các tours cùng thể loại adventures trong 1 website du lịch làm bằng wordpress. Custom Post Types ở đây là tours

Hoặc nếu muốn chuyên sâu hơn, Huy Hòa có thể lấy các tours cùng thể loại adventures có đi qua location cùng với tour đang xem như sau:

Meta Queries Using Custom Field Parameters

Hàm get_posts() cũng có thể sử dụng để query theo get post meta: custom field key và / hoặc  value.

Ví dụ:

Thông số meta_compare dùng để đánh giá tham số và giá trị. = có nghĩa là chính xác giá trị đó. Ngoài ra, còn một số giá trị có thể sử dụng cho meta_compare là:

Một ví dụ khi kết hợp custom post_type và Queries get post meta như sau:

Ví dụ trên sẽ lấy những tour thuộc thể loại adventures, có giá base (là giá mình để mặc định khi không có promotion) lớn hơn $200. Post meta sử dụng ở đây là base_price.

Một ví dụ khác về lấy những tour có số ngày lớn hơn 7 VÀ giá trong khoảng từ $200 đến $1,500

Nâng cao hơn chút nữa thì các bạn có thể sắp xếp kết quả trả về theo giá trị price từ thấp đến cao. Sau đó nếu price như nhau thì ưu tiên sắp xếp giá trị số ngày tour cao đến thấp.

Ví dụ dưới đây mình sẽ kết hợp với shortcode để tạo ra một functions hiển thị tour. Các bạn tự xem và đoán ý nghĩa và kết quả của các hàm nhé:

Sử dụng:

Hy vọng với những ví dụ cụ thể như bên trên, các bạn sẽ hiểu rõ hơn về cách sử dụng hàm get_posts() của WordPress và ứng dụng trong thực tế một cách thành thạo.

Các bạn lưu ý là hàm này khác hoàn toàn với hàm get_post() nhé.

Hàm này các bạn có thể sử dụng thoải mái ở Plugin hoặc ở template và không cần phải defines bất kỳ thông số nào. Nó có thể hoạt động độc lập trong môi trường nội bộ của WordPress như ở Plugins hay ở trong Theme.

Các bạn có thể tham khảo thêm thông tin ở trang hỗ trợ chính thức của hàm này trên trang WordPress Developer Resources tại đây.

Đánh giá
Share.

About Author

Chào bạn, mình là Gia Hân. Mình học về dược sỹ nhưng hiện tại chỉ làm nội trợ và mỹ phẩm handmade. Mình cũng có chút ít kiến thức về tin học như wordpress, joomla, hay SEO nhưng cũng chỉ ở mức đủ dùng, chưa thể làm thầy được. Các bài mình viết dựa chính trên kinh nghiệm của bản thân và thực tế sử dụng. Sẽ không tránh khỏi sai sót, nếu các bạn phát hiện thấy sai sót nào thì nhắn giúp để mình sửa nhé. Mục liên hệ ở đây.

Leave A Reply