Hướng dẩn thêm câu lệnh query để search
Thêm đoạn này vào
add_filter( 'pre_get_posts','bogtintonghop_custom_search_filter');
function bogtintonghop_custom_search_filter( $query ) {
if( $query->is_search && !is_admin() ) //
{
if( isset($_GET['s'] ) ) {
$query->set( 'post_type', array( 'nha_dat' ) );// ô search text.
}
if( $query->is_main_query() ) {
}
}
return $query;
}
Thêm đoạn này vào trong if $query->is_main_query()
$args[] = array( 'relation' => 'AND' );
if( isset( $_GET[ 'loai_nha_dat' ] ) && $_GET[ 'loai_nha_dat' ] != 'all' ) {
$args[] =
array(
'taxonomy' => 'loai_nha_dat',
'field' => 'slug',
'terms' => $_GET['loai_nha_dat']
);
}
if( isset( $_GET[ 'tinh_tp' ] ) && $_GET[ 'tinh_tp' ] != 'all' && $_GET[ 'xa_huyen' ] == 'all') {
$args[] =
array(
'taxonomy' => 'dia_diem',
'field' => 'slug',
'terms' => $_GET['tinh_tp']
);
}
if( isset( $_GET[ 'xa_huyen' ] ) && $_GET[ 'xa_huyen' ] != 'all') {
$args[] =
array(
'taxonomy' => 'dia_diem',
'field' => 'slug',
'terms' => $_GET['xa_huyen']
);
}
$query->set( 'tax_query', $args );
đoạn này xử lý các taxonomy.
Tiếp tục thêm đoạn code này vào để search các field
if( isset( $_GET['huong_nha'] ) || isset( $_GET['giathap'] ) || isset( $_GET['giacao'] ) ) {
$meta_query = array( 'relation' => 'AND' );
// Hướng nhà
if( isset( $_GET[ 'huong_nha' ] ) && $_GET[ 'huong_nha' ] != 'all' ) {
$meta_query[] = array(
'key' => 'huong',
'value' => $_GET['huong_nha'],
'compare' => '='
);
}
// Giá
if( isset( $_GET[ 'giathap' ] ) && $_GET[ 'giathap' ] != 0 ) {
$meta_query[] = array(
'key' => 'price',
'value' => $_GET[ 'giathap' ],
'type' => 'numeric',
'compare' => '>='
);
}
if( isset( $_GET[ 'giacao' ] ) && $_GET[ 'giacao' ] !=0 ) {
$meta_query[] = array(
'key' => 'price',
'value' => $_GET[ 'giacao' ],
'type' => 'numeric',
'compare' => '<='
);
}
$query->set( 'meta_query', $meta_query );
}
Tổng kết code search ngắn gọn chỉ có thể này thôi
add_filter( 'pre_get_posts','bogtintonghop_custom_search_filter');
function bogtintonghop_custom_search_filter( $query ) {
if( $query->is_search && !is_admin() ) {
if( isset($_GET['s'] ) ) {
$query->set( 'post_type', array( 'nha_dat' ) );// box text search
}
if( $query->is_main_query() ) {
$args[] = array( 'relation' => 'AND' );
if( isset( $_GET[ 'loai_nha_dat' ] ) && $_GET[ 'loai_nha_dat' ] != 'all' ) {
$args[] =
array(
'taxonomy' => 'loai_nha_dat',
'field' => 'slug',
'terms' => $_GET['loai_nha_dat']
);
}
if( isset( $_GET[ 'tinh_tp' ] ) && $_GET[ 'tinh_tp' ] != 'all' && $_GET[ 'xa_huyen' ] == 'all') {
$args[] =
array(
'taxonomy' => 'dia_diem',
'field' => 'slug',
'terms' => $_GET['tinh_tp']
);
}
if( isset( $_GET[ 'xa_huyen' ] ) && $_GET[ 'xa_huyen' ] != 'all') {
$args[] =
array(
'taxonomy' => 'dia_diem',
'field' => 'slug',
'terms' => $_GET['xa_huyen']
);
}
$query->set( 'tax_query', $args );
if( isset( $_GET['huong_nha'] ) || isset( $_GET['giathap'] ) || isset( $_GET['giacao'] ) ) {
$meta_query = array( 'relation' => 'AND' );
// Hướng nhà
if( isset( $_GET[ 'huong_nha' ] ) && $_GET[ 'huong_nha' ] != 'all' ) {
$meta_query[] = array(
'key' => 'huong',
'value' => $_GET['huong_nha'],
'compare' => '='
);
}
// Giá
if( isset( $_GET[ 'giathap' ] ) && $_GET[ 'giathap' ] != 0 ) {
$meta_query[] = array(
'key' => 'price',
'value' => $_GET[ 'giathap' ],
'type' => 'numeric',
'compare' => '>='
);
}
if( isset( $_GET[ 'giacao' ] ) && $_GET[ 'giacao' ] !=0 ) {
$meta_query[] = array(
'key' => 'price',
'value' => $_GET[ 'giacao' ],
'type' => 'numeric',
'compare' => '<='
);
}
// đoạn code nào dành cho bạn nào tạo giá trong khoảng VD: 1ty - 2ty
// if( isset( $_GET[ 'gia' ] ) && $_GET[ 'gia' ] != 'all' ) {
// $price = explode( "-", $_GET['gia'] );
// if( $_GET[ 'nhu-cau' ] == 'mua-ban' ) {
// $key = 'real_estate_price_for_sell';
// } else if( $_GET[ 'nhu-cau' ] == 'thue' ) {
// $key = 'real_estate_price_for_rent';
// }
// $meta_query[] = array(
// 'key' => $key,
// 'value' =>array( floatval( $price[0] ), floatval( $price[1] ) ),
// 'type' => 'numeric',
// 'compare' => 'BETWEEN'
// );
// }
$query->set( 'meta_query', $meta_query );
}
}
}
return $query;
}
Các bạn cài plugin All-in-One WP Migration để giải nén source ra nhé. download tại đây
Nguồn: https://blogtintonghop.com/huong-dan-tao-bo-search-bat-dong-san-wordpress-p-3/