Hướng dẫn tạo bộ tìm kiếm cho site Bất động sản WordPress P.3

Tạo bộ tìm kiếm cho BĐS

 

 

 

 

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/

Series Navigation<< Hướng dẫn tạo bộ tìm kiếm cho site Bất động sản WordPress P.2

Học về Coding. Làm về IT. Nhưng hiện nay lại chuyển sang làm Digital Marketing. Sở thích chơi với con, lang thang Internet và mê DotA :D

    Comments are closed.