Apakah ada cara untuk membatasi pencarian untuk memposting judul? Saya tahu saya bisa memodifikasi file inti query.php tetapi harus ada cara untuk melakukannya dengan kait, kan?
Terima kasih sebelumnya!
Apakah ada cara untuk membatasi pencarian untuk memposting judul? Saya tahu saya bisa memodifikasi file inti query.php tetapi harus ada cara untuk melakukannya dengan kait, kan?
Terima kasih sebelumnya!
Jawaban:
Berikut filter yang akan melakukan trik. Masukkan ke dalam tema functions.phpatau plugin Anda.
/**
* 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 );
Sebagian besar kode hanya disalin dari WP_Querykelas, kecuali dengan yang post_content LIKEdihapus.
UPDATE: Dihapus usang like_escape()sejak 4.0