Có cách nào để hạn chế tìm kiếm để đăng tiêu đề? Tôi biết tôi có thể sửa đổi tệp lõi query.php nhưng phải có một cách để làm điều đó với hook phải không?
Cảm ơn trước!
Có cách nào để hạn chế tìm kiếm để đăng tiêu đề? Tôi biết tôi có thể sửa đổi tệp lõi query.php nhưng phải có một cách để làm điều đó với hook phải không?
Cảm ơn trước!
Câu trả lời:
Đây là một bộ lọc sẽ thực hiện các mẹo. Thả nó vào chủ đề của bạn functions.php
hoặc một plugin.
/**
* Search SQL filter for matching against post title only.
*
* @link http://wordpress.stackexchange.com/a/11826/1685
*
* @param string $search
* @param WP_Query $wp_query
*/
function wpse_11826_search_by_title( $search, $wp_query ) {
if ( ! empty( $search ) && ! empty( $wp_query->query_vars['search_terms'] ) ) {
global $wpdb;
$q = $wp_query->query_vars;
$n = ! empty( $q['exact'] ) ? '' : '%';
$search = array();
foreach ( ( array ) $q['search_terms'] as $term )
$search[] = $wpdb->prepare( "$wpdb->posts.post_title LIKE %s", $n . $wpdb->esc_like( $term ) . $n );
if ( ! is_user_logged_in() )
$search[] = "$wpdb->posts.post_password = ''";
$search = ' AND ' . implode( ' AND ', $search );
}
return $search;
}
add_filter( 'posts_search', 'wpse_11826_search_by_title', 10, 2 );
Hầu hết các mã chỉ được sao chép từ WP_Query
lớp, ngoại trừ việc post_content LIKE
loại bỏ.
CẬP NHẬT: Đã xóa không dùng nữa like_escape()
từ 4.0