Người Viết : ViKiMi Editor

Hướng dẫn sử dụng thực hiện truy vấn thông tin Posts với Lớp WP_Query của WordPress !
WordPress cho phép thực hiện rất nhiều cách để thao tác cơ sở dữ liệu. Những thao tác và tuỳ chỉnh sẽ đem lại những hiệu quả cao hơn. Truy vấn trực tiếp vào cơ sở dữ liệu sẽ giúp lấy về các thông tin chính xác nhất có thể. Một trong những cách truy vấn đem lại hiệu quả cao đó sử dụng WP_Query, đây là cách bạn có thể lấy tất cả thông tin trực tiếp từ Cơ sở dữ liệu để hiển thị.
WP_Query là một lớp PHP được sử dụng bởi Cơ Sở Dữ Liệu WordPress sử dụng. Cho phép lấy về các thông tin cần thiết theo yêu, chủ yếu là lấy các thông tin Bài Đăng từ Cơ Sở Dữ Liệu. Thông qua lớp WP_Query có thể hiểu rõ hơn về cách mà Cơ Sở Dữ Liệu hoạt động.
1 ) Với các dữ liệu cơ bản từ WordPress, bạn có thể thấy các vòng lặp cơ bản tồn tại trong các Template của WordPress (category.php, archiver.php …) :
<?php
if ( have_posts() ) :
while ( have_posts() ) : the_post();
// Display post content
endwhile;
endif;
?>
Đây là vòng lặp cơ bản giúp hiển thị các thông tin. Tuy nhiên, nó chưa có sự xuất hiện của WP_Query. Để có thể sử dụng WP_Query để truy vấn thông tin, chúng ta cần một cách như sau để truy vấn thông tin. Và các tập lệnh chúng ta có thể có :
<?php
$args = array(
‘post_type’ => ‘post’,
‘author’ => -12,
);
// The Query
$the_query = new WP_Query( $args );
// The Loop
if ( $the_query->have_posts() ) {
echo ‘<ul>’;
while ( $the_query->have_posts() ) {
$the_query->the_post();
echo ‘<li>’ . get_the_title() . ‘</li>’;
}
echo ‘</ul>’;
} else {
// No posts found
}
/* Restore original Post Data */
wp_reset_postdata();
?>
Trên đây là cách mà WP_Query được sử dụng. Nó khá tương đồng với mẫu vòng lặp cơ bản tồn tại, tuy nhiên đã cho phép chúng ta tuỳ chỉnh cách truy vấn thông tin là không lấy các bài Posts của tác giả có mã ID là 12.
Cách chúng ta có thể tuỳ chỉnh thật tuyệt vời !
2 ) Chúng ta biết rằng cũng có thể sử dụng Function get_posts() để truy vấn thông tin Bài Đăng từ Database của WordPress. Nhưng liệu nó có mang lại lợi ích nhiều hơn khi có sự xuất hiện của WP_Query? Thực sự nếu về cách sử dụng thì chúng ta hoàn toàn thấy nó mang cùng một mục đích đem lại nếu dùng đúng cách.
Sự khác nhau ở đây là Function get_posts() sẽ ghi đè hoàn toàn truy vấn chính của bạn, do đó không nên dùng nó trong vòng lặp chính của Website. Có nhiều lời khuyên không nên dùng Function get_posts(), tuy nhiên vẫn ổn nếu bạn sử dụng đúng cách và đạt hiệu quả tốc độ xử lý.
Chúng ta còn lưu ý là hãy sử dụng chức năng :
<?php wp_reset_postdata(); ?>
Chức năng này cho phép khôi phục các thẻ mẫu mặc định và bạn sẽ quay lại mọi thứ như trước khi vòng lặp thứ cấp của bạn được bắt đầu (Nếu bạn sử dụng nhiều vòng lặp truy vấn trong cùng một File chức năng của Website).