Parameter query search result WordPress basic-nya menggunakan "?s=", tapi bagaimana jika kita ingin membuat parameter baru lainnya berdasarkan hasil pencarian WordPress.
Misalnya, kita ingin membuat parameter query seperti ini (Demo):
http://www.jevuska.com/?p=list&q=injeksi+manual+keyword
Di file functions.php theme WordPress Anda, tambahkan kode function berikut:
function _jv_add_query_vars_filter( $vars ){
//create 'q' as query parameter
$vars[] = "q";
return $vars;
}
add_filter( 'query_vars', '_jv_add_query_vars_filter' );
function _jv_custom_search_query( $query ) {
//pre get post loop p and q parameter base on s parameter
if ($_GET['p'] == "list" && get_query_var('q') != "") {
$query->set('post_status', 'publish');
$query->set('post_type', 'post');
$query->set( 's', $query->query_vars['q']);
//add filter to wp_title base on q parameter
add_filter('wp_title',function(){
$title = ucwords(get_search_query());
return $title;
},10,2);
};
return $query;
}
add_filter( 'pre_get_posts', '_jv_custom_search_query');
//optional - add custome search form
function _jv_search_form( $form ) {
$form = '<form role="search" method="get" id="searchform" class="searchform" action="' . home_url( '/' ) . '" >
<div><label class="screen-reader-text" for="s">' . __( 'Search for:' ) . '</label>
<input type="hidden" value="list" name="p"/>
<input type="text" value="' . get_search_query() . '" name="q" id="s" />
</div>
</form>';
return $form;
}
add_filter( 'get_search_form', '_jv_search_form' );
Function ini akan meng-generate post di halaman front page theme WP Anda (index.php atau home.php), jadi hasilnya akan sangat tergantung pada theme yang digunakan, juga plugin tambahan yang menfilter wp_title, contohnya plugin Yoast WordPress SEO.
PS: post ini adalah hasil request sobat blogger.
Bagikan
mantap om,, izin coba