Tìm kiếm trên nhiều post type và tất cả

WordPress cung cấp các hàm cho phép bạn có thể tạo ra nhiều thể loại Post Type khác nhau (Custom Post Type). Sau khi bạn cài đặt WordPress, mặc định công cụ tìm kiếm trên trang của bạn chỉ có thể tìm kiếm bài viết là Post. Còn các post type khác như page, movies, guides,… thì bạn phải tùy chỉnh form tìm kiếm thì kết quả mới ra đúng như bạn mong muốn.

Để tìm kiếm tất cả mọi thứ liên quan đến từ khóa, bạn mở tập tin .php có chứa form search trên giao diện và thêm vào dòng bên dưới phía trước nút submit nhé.

<input type="hidden" name="post_type" value="any" />

Ngoài ra thì bạn có thể tìm kiếm nội dung thuộc tất cả post type bằng cách sử dụng action pre_get_posts được WordPress hỗ trợ trong các phiên bản gần đây. Bạn mở tập tin functions.php của giao diện lên và thêm vào hook bên dưới.

<?php
function sb_search_all_post_type($query) {
	if(is_search()) {
		$post_types = get_post_types(array('public' => true, 'exclude_from_search' => false), 'objects');
		$searchable_types = array();
		if($post_types) {
			foreach( $post_types as $type) {
				$searchable_types[] = $type->name;
			}
		}
		$query->set('post_type', $searchable_types);
	}
	return $query;
}
add_action('pre_get_posts', 'sb_search_all_post_type');
?>

Nếu như bạn muốn tìm kiếm nội dung của một custom post type nhất định thì bạn hãy làm như sau. Bạn tìm kiếm nội dung của search form trên các tập tin .php của giao diện. Sau đó bạn thêm vào dòng bên dưới vô phía trước nút submit của form.

<input type="hidden" name="post_type" value="software" />

Trường hợp bạn muốn tìm kiếm nội dung trong một hoặc nhiều custom post type thì cách làm cũng tương tự, nhưng thay vì bạn để post type đơn lẽ thì bạn thêm theo kiểu mảng thuộc nhiều trường input khác nhau.

<input type="hidden" name="post_type[]" value="software" />
<input type="hidden" name="post_type[]" value="books" />
<input type="hidden" name="post_type[]" value="guides" />
<input type="hidden" name="post_type[]" value="movies" />

Cứ như thế bạn thêm bao nhiêu post type cũng được. Chúc bạn thành công.

Không có bình luận

Bạn có thể trở thành người đầu tiên để lại bình luận.

Trả lời

Thư điện tử của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *