Tìm kiếm theo danh mục trong WordPress: Hướng dẫn toàn diện
WordPress, với tính linh hoạt và khả năng tùy biến cao, là một nền tảng mạnh mẽ cho việc xây dựng nhiều loại trang web, từ blog cá nhân đến cửa hàng trực tuyến phức tạp. Tuy nhiên, tính năng tìm kiếm mặc định của WordPress đôi khi không đáp ứng được nhu cầu của người dùng, đặc biệt là khi họ muốn tìm kiếm nội dung cụ thể trong một danh mục nhất định. Bài viết này sẽ cung cấp một hướng dẫn toàn diện về cách thực hiện tìm kiếm theo danh mục trong WordPress, từ các plugin đơn giản đến các phương pháp tùy chỉnh nâng cao.
Tại sao cần tìm kiếm theo danh mục?
Tìm kiếm theo danh mục mang lại nhiều lợi ích cho cả người dùng và quản trị viên trang web:
- Cải thiện trải nghiệm người dùng: Giúp người dùng nhanh chóng tìm thấy nội dung họ quan tâm bằng cách giới hạn phạm vi tìm kiếm trong một danh mục cụ thể.
- Tăng tính tương tác: Khuyến khích người dùng khám phá nội dung liên quan trong một danh mục, từ đó tăng thời gian ở lại trang web và giảm tỷ lệ thoát.
- Nâng cao SEO: Tạo ra các trang kết quả tìm kiếm được nhắm mục tiêu tốt hơn, giúp cải thiện thứ hạng trên các công cụ tìm kiếm.
Ví dụ, nếu bạn có một trang web về công nghệ, người dùng có thể muốn tìm kiếm các bài viết về “điện thoại thông minh” chỉ trong danh mục “Điện thoại”. Tìm kiếm theo danh mục cho phép họ thực hiện điều này một cách dễ dàng.
Sử dụng Plugin để tìm kiếm theo danh mục
Cách đơn giản nhất để thêm chức năng tìm kiếm theo danh mục vào WordPress là sử dụng một plugin chuyên dụng. Có rất nhiều plugin miễn phí và trả phí có sẵn, mỗi plugin có các tính năng và tùy chọn khác nhau. Dưới đây là một số plugin phổ biến:
1. SearchWP
SearchWP là một plugin tìm kiếm mạnh mẽ, cho phép bạn tùy chỉnh cách WordPress tìm kiếm nội dung. Nó cung cấp các tùy chọn để ưu tiên các trường tùy chỉnh, danh mục, thẻ và nhiều hơn nữa. Bạn có thể sử dụng SearchWP để tạo một biểu mẫu tìm kiếm tùy chỉnh cho phép người dùng chọn danh mục để tìm kiếm.
2. Relevanssi
Relevanssi thay thế chức năng tìm kiếm mặc định của WordPress bằng một công cụ mạnh mẽ hơn. Nó cung cấp các tính năng như tìm kiếm fuzzy, tìm kiếm theo ngữ cảnh và khả năng tìm kiếm trong các trường tùy chỉnh. Relevanssi cũng cho phép bạn tạo một biểu mẫu tìm kiếm tùy chỉnh với các tùy chọn danh mục.
3. Ivory Search
Ivory Search là một plugin tìm kiếm linh hoạt, cho phép bạn tạo nhiều biểu mẫu tìm kiếm khác nhau với các tùy chọn khác nhau. Bạn có thể sử dụng Ivory Search để tạo một biểu mẫu tìm kiếm cho phép người dùng chọn danh mục để tìm kiếm, và hiển thị biểu mẫu này trên các trang hoặc bài viết cụ thể.
Hướng dẫn sử dụng plugin
- Cài đặt và kích hoạt plugin: Truy cập bảng điều khiển WordPress, chọn “Plugin” -> “Thêm mới”, tìm kiếm plugin bạn muốn sử dụng, cài đặt và kích hoạt nó.
- Cấu hình plugin: Truy cập trang cài đặt của plugin và cấu hình các tùy chọn theo nhu cầu của bạn.
- Thêm biểu mẫu tìm kiếm vào trang web: Sử dụng widget hoặc shortcode của plugin để thêm biểu mẫu tìm kiếm vào trang web của bạn.
Tùy chỉnh Tìm kiếm theo danh mục bằng Code
Nếu bạn muốn có nhiều quyền kiểm soát hơn đối với chức năng tìm kiếm theo danh mục, bạn có thể tùy chỉnh nó bằng code. Phương pháp này đòi hỏi kiến thức về PHP và WordPress theme development. Dưới đây là một số cách bạn có thể tùy chỉnh tìm kiếm theo danh mục bằng code:
1. Sử dụng ‘pre_get_posts’ filter
pre_get_posts là một filter mạnh mẽ trong WordPress cho phép bạn sửa đổi query trước khi nó được thực thi. Bạn có thể sử dụng filter này để thêm điều kiện lọc theo danh mục vào query tìm kiếm.
Ví dụ:
function custom_search_filter($query) {
if ( ! is_admin() && $query->is_search() && isset($_GET['category'])) {
$category = sanitize_text_field($_GET['category']);
if (!empty($category)) {
$query->set('category_name', $category);
}
}
return $query;
}
add_filter('pre_get_posts','custom_search_filter');
Trong đoạn code này:
- Chúng ta kiểm tra xem query có phải là query tìm kiếm hay không và có tham số ‘category’ trong URL hay không.
- Nếu có, chúng ta lấy giá trị của tham số ‘category’ và sử dụng hàm
set()để thêm điều kiện lọc theo danh mục vào query.
Để sử dụng code này, bạn cần thêm nó vào file functions.php của theme hoặc một plugin tùy chỉnh. Sau đó, bạn có thể tạo một biểu mẫu tìm kiếm với một trường select cho phép người dùng chọn danh mục.
Ví dụ HTML cho biểu mẫu tìm kiếm:
<form role="search" method="get" id="searchform" action="<?php echo home_url( '/' ); ?>">
<select name="category">
<option value="">Tất cả danh mục</option>
<?php
$categories = get_categories();
foreach ($categories as $category) {
echo '<option value="' . $category->slug . '">' . $category->name . '</option>';
}
?>
</select>
<input type="text" value="<?php echo get_search_query(); ?>" name="s" id="s" />
<input type="submit" id="searchsubmit" value="Tìm kiếm" />
</form>
2. Tạo Template Tìm kiếm Tùy chỉnh
Bạn có thể tạo một template tìm kiếm tùy chỉnh để hiển thị kết quả tìm kiếm. Điều này cho phép bạn kiểm soát hoàn toàn cách hiển thị kết quả và thêm các tính năng bổ sung.
- Tạo một file template: Tạo một file có tên
search.phptrong thư mục theme của bạn. - Copy code từ
index.php: Copy code từ fileindex.phpcủa theme vào filesearch.php. - Sửa đổi code: Sửa đổi code trong file
search.phpđể hiển thị kết quả tìm kiếm theo danh mục.
Trong file search.php, bạn có thể sử dụng hàm get_the_category() để lấy danh mục của mỗi bài viết và hiển thị nó trong kết quả tìm kiếm.
3. Sử dụng WP_Query trực tiếp
Bạn có thể sử dụng class WP_Query để tạo một query tìm kiếm tùy chỉnh. Điều này cho phép bạn kiểm soát hoàn toàn các tham số của query, bao gồm cả điều kiện lọc theo danh mục.
Ví dụ:
<?php
$search_term = get_search_query();
$category_slug = isset($_GET['category']) ? sanitize_text_field($_GET['category']) : '';
$args = array(
's' => $search_term,
'category_name' => $category_slug,
);
$the_query = new WP_Query( $args );
if ( $the_query->have_posts() ) {
echo '<ul>';
while ( $the_query->have_posts() ) {
$the_query->the_post();
echo '<li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>';
}
echo '</ul>';
} else {
echo '<p>Không tìm thấy kết quả nào.</p>';
}
wp_reset_postdata();
?>
Trong đoạn code này:
- Chúng ta lấy từ khóa tìm kiếm từ hàm
get_search_query(). - Chúng ta lấy slug của danh mục từ tham số ‘category’ trong URL.
- Chúng ta tạo một mảng
$argsvới các tham số cho query. - Chúng ta tạo một đối tượng
WP_Queryvới các tham số này. - Chúng ta lặp qua các bài viết trong kết quả query và hiển thị tiêu đề của mỗi bài viết.
Lời khuyên và Thủ thuật
Dưới đây là một số lời khuyên và thủ thuật để tối ưu hóa tìm kiếm theo danh mục trong WordPress:
- Sử dụng caching: Caching có thể giúp cải thiện tốc độ tải trang của bạn, đặc biệt là khi bạn có một lượng lớn nội dung.
- Tối ưu hóa cơ sở dữ liệu: Tối ưu hóa cơ sở dữ liệu của bạn có thể giúp cải thiện hiệu suất tìm kiếm.
- Sử dụng CDN: CDN (Content Delivery Network) có thể giúp phân phối nội dung của bạn trên toàn thế giới, giúp cải thiện tốc độ tải trang cho người dùng ở các vị trí khác nhau.
Kết luận
Tìm kiếm theo danh mục là một tính năng quan trọng giúp cải thiện trải nghiệm người dùng và tăng tính tương tác trên trang web WordPress của bạn. Bạn có thể sử dụng plugin hoặc tùy chỉnh code để thêm chức năng này vào trang web của mình. Hãy chọn phương pháp phù hợp nhất với nhu cầu và kỹ năng của bạn. Chúc bạn thành công!
