- Hướng dẫn tạo bộ tìm kiếm cho site Bất động sản WordPress P.1
- Hướng dẫn tạo bộ tìm kiếm cho site Bất động sản WordPress P.2
- Hướng dẫn tạo bộ tìm kiếm cho site Bất động sản WordPress P.3
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/
Quét mã QR để đọc bài viết này để xem tiếp trên điện thoại
chào bạn! mình cám ơn bạn vì bài viết khá hữu ích cho mình. nhưng mình là dân tay ngang không phải IT nên cũng không hiểu lắm, bạn có thể cho mình sđt liên lạc hoặc FB để trong quá trình mình làm không đc có thể hỏi bạn đc k ,, cám ơn bạn nhiều mong bạn hồi đáp