Hiển thị tất cả các post type ra ngoài trang chủ

Bạn đang tạo nhiều custom post type trên blog WordPress nhưng bạn chưa biết làm thế nào để hiển thị tất cả các post type bao gồm cả post ra bên ngoài trang chủ? Bài viết này Sáu sẽ hướng dẫn cho bạn viết câu truy vấn làm sao để có thể thực hiện được điều này.

Tạo và sử dụng custom post type trong WordPress

Việc lấy tất cả bài viết bao gồm custom post type trên WordPress thật ra cũng không khó, quan trọng là bạn nắm được cách truy vấn bài viết trong khi thực hiện giao diện hoặc plugin. Nếu bạn đã hiểu phần căn bản của các loại truy vấn bài viết thì việc lấy tất cả post type chỉ là chuyện nhỏ.

Bây giờ Sáu và bạn sẽ đi vào nội dung của bài viết này, bạn mở tập tin functions.php của giao diện lên và thêm vào action sau:

function get_all_post_home_loop( $query ) {
	if ( is_home() && $query->is_main_query() )
		$query->set( 'post_type', array( 'post', 'download', 'portfolio', 'ten-post-type') );
	return $query;
}
add_filter( 'pre_get_posts', 'get_all_post_home_loop' );

Hàm bên trên sẽ kiểm tra nếu bạn đang ở trang chủ và đây là biến truy vấn chính của WordPress thì trước khi lấy bài viết, chỉnh sửa câu truy vấn của WordPress lại, bổ sung thêm các loại post type vào một mảng. Bạn có thể điền bao nhiêu loại custom post type vào đây cũng được, sau khi hoàn thành xong thì bạn sẽ thấy được kết quả có sự khác biệt so với bạn đầu.

Đó là nói đến bạn sửa lại biến $query có sẵn. Bây giờ bạn tạo một câu truy vấn mới để hiển thị trong custom template chẵn hạn, bạn sẽ thực hiện việc này như sau:

<?php
$myposts = new WP_Query(array('posts_per_page' => 10, 'post_type' => array('post', 'download', 'portfilio', 'ten-post-type')));
if($myposts->have_posts()) {
	while($myposts->have_posts()) {
		$myposts->the_post();
		?>
		<p><?php the_title(); ?></p>
		<?php
	}
	wp_reset_postdata();
}
?>

Vẫn còn khá nhiều cách nữa để truy vấn tất cả bài viết trên WordPress, điều quan trọng nhất là bạn phải nắm được phần căn bản và sau đó mới áp dụng vào những cái nâng cao. Chúc bạn thành công.

Gửi bình luận của bạn 1 bình luận

Gửi bình luận

Địa chỉ email của bạn sẽ được giữ bí mật. Những mục bắt buộc được đánh dấu *