Dengan beberapa solusi rentan diposting di sini, saya datang dengan versi yang disederhanakan dan disanitasi.
Pertama, kami membuat fungsi untuk posts_where
filter yang memungkinkan Anda hanya menampilkan posting yang cocok dengan kondisi tertentu:
function cc_post_title_filter($where, &$wp_query) {
global $wpdb;
if ( $search_term = $wp_query->get( 'cc_search_post_title' ) ) {
$where .= ' AND ' . $wpdb->posts . '.post_title LIKE \'%' . $wpdb->esc_like( $search_term ) . '%\'';
}
return $where;
}
Sekarang kita tambahkan cc_search_post_title
ke argumen kueri kami:
$args = array(
'cc_search_post_title' => $search_term, // search post title only
'post_status' => 'publish',
);
Dan akhirnya bungkus filter di sekitar kueri:
add_filter( 'posts_where', 'cc_post_title_filter', 10, 2 );
$query = new WP_Query($args);
remove_filter( 'posts_where', 'cc_post_title_filter', 10 );
Menggunakan get_posts ()
Fungsi tertentu yang mengambil posting tidak menjalankan filter, jadi fungsi filter posts_where yang Anda lampirkan tidak akan mengubah kueri. Jika Anda berencana untuk menggunakan get_posts()
kueri posting Anda, Anda perlu disetel suppress_filters
ke false dalam array argumen Anda:
$args = array(
'cc_search_post_title' => $search_term,
'suppress_filters' => FALSE,
'post_status' => 'publish',
);
Sekarang Anda dapat menggunakan get_posts()
:
add_filter( 'posts_where', 'cc_post_title_filter', 10, 2 );
$posts = get_posts($args);
remove_filter( 'posts_where', 'cc_post_title_filter', 10 );
Bagaimana dengan s
parameternya?
The s
Parameter tersedia:
$args = array(
's' => $search_term,
);
Saat menambahkan istilah pencarian Anda ke dalam s
kerja parameter dan itu akan mencari judul posting, itu juga akan mencari konten posting.
Bagaimana dengan title
parameter yang ditambahkan dengan WP 4.4?
Melewati istilah pencarian ke dalam title
parameter:
$args = array(
'title' => $search_term,
);
Peka huruf besar-kecil dan LIKE
, tidak %LIKE%
. Ini berarti pencarian hello
tidak akan menghasilkan posting dengan judul Hello World
atau Hello
.
$wpdb->prepare()
.