Dengan beberapa solusi rentan diposting di sini, saya datang dengan versi yang disederhanakan dan disanitasi.
Pertama, kami membuat fungsi untuk posts_wherefilter 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_titleke 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_filterske 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 sparameternya?
The sParameter tersedia:
$args = array(
's' => $search_term,
);
Saat menambahkan istilah pencarian Anda ke dalam skerja parameter dan itu akan mencari judul posting, itu juga akan mencari konten posting.
Bagaimana dengan titleparameter yang ditambahkan dengan WP 4.4?
Melewati istilah pencarian ke dalam titleparameter:
$args = array(
'title' => $search_term,
);
Peka huruf besar-kecil dan LIKE, tidak %LIKE%. Ini berarti pencarian hellotidak akan menghasilkan posting dengan judul Hello Worldatau Hello.
$wpdb->prepare().