Top 10 WordPress Code Snippets hay cho tìm kiếm bài viết
Chức năng tìm kiếm được coi như là chìa khóa thành công của một trang web, hoặc blog. Nó không những giúp người dùng tìm kiếm chính xác nội dung bài viết mà họ cần đọc, mà nó còn cải thiện đáng kể thời gian cũng như tính tiện dụng của trang web. Trong bài viết này ,mình xin chia sẻ cho các bạn 10 ...
Chức năng tìm kiếm được coi như là chìa khóa thành công của một trang web, hoặc blog. Nó không những giúp người dùng tìm kiếm chính xác nội dung bài viết mà họ cần đọc, mà nó còn cải thiện đáng kể thời gian cũng như tính tiện dụng của trang web. Trong bài viết này ,mình xin chia sẻ cho các bạn 10 đoạn code rất hay, với những đoạn code này, các bạn sẽ có thể nâng cao khả năng tìm kiếm trong trang web hay blog của các bạn.
1 Loại bỏ Pages hoặc Posts khỏi danh sách tìm kiếm
Trong trường hợp các bạn không muốn trang (Pages) hoặc bài viết (Posts) nào xuất hiện trong danh sách tìm kiếm , các bạn chỉ cần việc copy đoạn code sau và dán nó vào file functions.php. Trong đoạn code sau, nó sẽ loại bỏ tất cả các bài viết với categories có ids lần lượt là 0 và 1, các bạn chỉ cần việc thay đổi id của category nào mà các bạn muốn loại bỏ là được.
function SearchFilter($query) { if ($query->is_search) { $query->set('cat','0,1'); } return $query; } add_filter('pre_get_posts','SearchFilter');
2 Nếu kết quả tìm kiếm chỉ có 1 bài viết, tự động redirect đến bài viết đó.
Chắc hẳn là các bạn sẽ không muốn người dùng phải click chuột vào kết quả tìm kiếm mà chỉ có 1 kết quả trả về. Sử dụng đoạn code sau và dán nó vào file functions.php để nó chuyển ngay đến bài viết đó.
add_action('template_redirect', 'redirect_single_post'); function redirect_single_post() { if (is_search()) { global $wp_query; if ($wp_query->post_count == 1) { wp_redirect( get_permalink( $wp_query->posts['0']->ID ) ); } } }
3. Search Form với Drop Down có categories
Sẽ tốt hơn rất nhiều nếu như người dùng có thể kiếm bài viết và lọc nó theo category mà họ muốn. Copy đoạn code sau vào bất kì file nào mà các bạn muốn hiển thị form tìm kiếm.
< form role="search" method="get" id="searchform" action="<?php bloginfo('siteurl'); ?>"> <div> <label class="screen-reader-text" for="s">Search for:</label> <input type="text" value="" name="s" id="s" /> in <?php wp_dropdown_categories( 'show_option_all=All Categories' ); ?> <input type="submit" id="searchsubmit" value="Search" /> </div> </form>
4 Hiển thị số lượng kết quả trả về.
Theo mặc định thì WordPress sẽ không trả lại số lượng tìm kiếm của từ khóa , để làm được việc này thì các bạn thay thế đoạn code sau trong file search.php :
<h2 class="pagetitle">Search Results</h2>
bằng đoạn code này :
<h2 class="pagetitle">Search Results for <?php /* Search Count */ $allsearch = &new WP_Query("s=$s&showposts=-1"); $key = wp_specialchars($s, 1); $count = $allsearch->post_count; _e('); _e('<span class="search-terms">'); echo $key; _e('</span>'); _e(' — '); echo $count . ' '; _e('articles'); wp_reset_query(); ?></h2>
5 Lọc kết quả tìm kiếm theo post type
Các bạn có thể tạo thêm chức năng lọc bài viết theo kiểu bài viết (post type) bằng cách dán đoạn code sau vào file functions.php .
function SearchFilter($query) { if ($query->is_search) { // Insert the specific post type you want to search $query->set('post_type', 'feeds'); } return $query; } add_filter('pre_get_posts','SearchFilter');
6 Tô đậm kết quả tìm kiếm
Trong search.php, thay thế the_title() function với echo $title; đồng thời copy đoạn code sau nằm trước đoạn code mà chúng ta vừa thay thế.
<?php $title = get_the_title(); $keys= explode(" ",$s); $title = preg_replace('/('.implode('|', $keys) .')/iu', '<strong class="search-excerpt">