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

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

Bài viết này thuộc phần 2 trong tổng số 3 bài viết trong Serie Tạo bộ tìm kiếm BĐS cho Wordpress

Để thực hiện làm  bộ search cần xác định field search và giá trị của nó

  1. Tạo form search tương ứng với field cần search.

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

2. Lấy dữ liệu loại nhà đất, Huyện/ thành phố, Để ý nhỏ, phần huyện/thành phố có đoạn data-idp dùng để lấy id của danh mục đó, tí sử dụng làm ajax

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<select name="loai_nha_dat">
<?php
echo '<option value="all">Chọn loại nhà đất</option>';
$terms = get_terms( array(
'taxonomy' => 'loai_nha_dat',
'hide_empty' => true,
'parent' => 0
) );
foreach ($terms as $term ) {
?>
<option value="<?php echo $term->slug ?>"><?php echo $term->name ?></option>
<?php
}
?>
</select>
<select name="tinh_tp">
<?php
echo '<option value="all" data-idp="-1">Chọn Huyện/Thành Phố</option>';
$terms = get_terms( array(
'taxonomy' => 'dia_diem',
'hide_empty' => true,
'parent' => 0
) );
foreach ($terms as $term ) {
?>
<option data-idp="<?=$term->term_id?>" value="<?php echo $term->slug ?>"><?php echo $term->name ?></option>
<?php
}
?>
</select>
<select name="loai_nha_dat"> <?php echo '<option value="all">Chọn loại nhà đất</option>'; $terms = get_terms( array( 'taxonomy' => 'loai_nha_dat', 'hide_empty' => true, 'parent' => 0 ) ); foreach ($terms as $term ) { ?> <option value="<?php echo $term->slug ?>"><?php echo $term->name ?></option> <?php } ?> </select> <select name="tinh_tp"> <?php echo '<option value="all" data-idp="-1">Chọn Huyện/Thành Phố</option>'; $terms = get_terms( array( 'taxonomy' => 'dia_diem', 'hide_empty' => true, 'parent' => 0 ) ); foreach ($terms as $term ) { ?> <option data-idp="<?=$term->term_id?>" value="<?php echo $term->slug ?>"><?php echo $term->name ?></option> <?php } ?> </select>
<select name="loai_nha_dat">
  <?php 
  echo '<option value="all">Chọn loại nhà đất</option>';
  $terms = get_terms( array(
    'taxonomy' => 'loai_nha_dat',
    'hide_empty' => true,
    'parent' => 0
  ) );	
  foreach ($terms  as $term ) {
    ?>
    <option value="<?php echo $term->slug ?>"><?php echo $term->name ?></option>
    <?php 
  }
  ?>
</select>

<select name="tinh_tp">
  <?php 
  echo '<option value="all" data-idp="-1">Chọn Huyện/Thành Phố</option>';
  $terms = get_terms( array(
    'taxonomy' => 'dia_diem',
    'hide_empty' => true,
    'parent' => 0
  ) );	
  foreach ($terms  as $term ) {
    ?>
    <option data-idp="<?=$term->term_id?>" value="<?php echo $term->slug ?>"><?php echo $term->name ?></option>
    <?php 
  }
  ?>
</select>

Phần ajax giữa huyện/ thành phố và xã/phường

1. Ta tạo trước khung select nhưng chưa lấy dữ liệu gì cả

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<select name="xa_huyen">
<?php
echo '<option value="all">Chọn xã phường</option>';
?>
</select>
<select name="xa_huyen"> <?php echo '<option value="all">Chọn xã phường</option>'; ?> </select>
<select name="xa_huyen">
      <?php 
  echo '<option value="all">Chọn xã phường</option>';
            ?>
   </select>

2. vào function thêm đoạn code

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
function my_scripts_method() {
wp_enqueue_script(
'ajax_script',
get_stylesheet_directory_uri() . '/vendor/ajax-script.js',
array( 'jquery' )
);
wp_localize_script('ajax_script', 'WPURLS', array(
'siteurl' => admin_url( 'admin-ajax.php' )
));
}
add_action( 'wp_enqueue_scripts', 'my_scripts_method' );
function my_scripts_method() { wp_enqueue_script( 'ajax_script', get_stylesheet_directory_uri() . '/vendor/ajax-script.js', array( 'jquery' ) ); wp_localize_script('ajax_script', 'WPURLS', array( 'siteurl' => admin_url( 'admin-ajax.php' ) )); } add_action( 'wp_enqueue_scripts', 'my_scripts_method' );
function my_scripts_method() {
  wp_enqueue_script(
    'ajax_script',
    get_stylesheet_directory_uri() . '/vendor/ajax-script.js',
    array( 'jquery' )
  );
  wp_localize_script('ajax_script', 'WPURLS', array(
    'siteurl' => admin_url( 'admin-ajax.php' )
));
}
add_action( 'wp_enqueue_scripts', 'my_scripts_method' );

có ý nghĩa là sử dụng ajax-scripts.js nằm trong thư mục vendor của theme là file chứa jquery . và lấy code ajax trong functions.php

3. Giờ thêm đoạn code ajax vào ajax-scripts.js

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
(function($) {
$(document).ready(function() {
$( "select[name='tinh_tp']" ).change(function() {
console.log($(this).find(':selected').attr('data-idp')) ; // lấy data idp
data = {
'action': 'ajax_danhmuc', //tên action ajax
'id' :$(this).find(':selected').attr('data-idp')
};
$.ajax({
url: WPURLS.siteurl,
data: data,
dataType : "json",
type: 'POST',
beforeSend: function(xhr) {
console.log('ajax chay');
},
success: function(data) {
if (data) {
console.log(data);
$('select[name="xa_huyen"]').html(data.data);//in dữ liệu vào select này
}
}
});
});
})
})(jQuery);
(function($) { $(document).ready(function() { $( "select[name='tinh_tp']" ).change(function() { console.log($(this).find(':selected').attr('data-idp')) ; // lấy data idp data = { 'action': 'ajax_danhmuc', //tên action ajax 'id' :$(this).find(':selected').attr('data-idp') }; $.ajax({ url: WPURLS.siteurl, data: data, dataType : "json", type: 'POST', beforeSend: function(xhr) { console.log('ajax chay'); }, success: function(data) { if (data) { console.log(data); $('select[name="xa_huyen"]').html(data.data);//in dữ liệu vào select này } } }); }); }) })(jQuery);
(function($) {

  $(document).ready(function() {


    $( "select[name='tinh_tp']" ).change(function() {
      console.log($(this).find(':selected').attr('data-idp')) ; // lấy data idp

      data = {
        'action': 'ajax_danhmuc', //tên action ajax
        'id' :$(this).find(':selected').attr('data-idp')
      };
      $.ajax({
         url: WPURLS.siteurl, 
         data: data,
         dataType : "json",
         type: 'POST',

         beforeSend: function(xhr) {

          console.log('ajax chay');
           
       },
       success: function(data) {
        if (data) {
          console.log(data);
          $('select[name="xa_huyen"]').html(data.data);//in dữ liệu vào select này
        }
       }
   });
    });

  })
})(jQuery);

4. Thêm đoạn code php lấy dữ liệu vào functions.php

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
function ajax_danhmuc()
{
ob_start();
echo '<option value="all">Chọn xã phường</option>';
if ($_POST['id'] == -1) {
}
else
{
$terms = get_terms( array(
'taxonomy' => 'dia_diem',
'hide_empty' => true, // có dữ liệu thì mới in ra
'parent' => $_POST['id'] // id danh mục cha
// 'exclude' => array($_POST['id']), // câu lênh này là dùng để loại bỏ danh mục có id =
) );
}
foreach ($terms as $term ) {
?>
<option value="<?php echo $term->slug ?>"><?php echo $term->name ?></option>
<?php
}
$result = ob_get_clean();
wp_send_json_success($result);
die();
}
add_action('wp_ajax_ajax_danhmuc', 'ajax_danhmuc'); // wp_ajax_{action}
add_action('wp_ajax_nopriv_ajax_danhmuc', 'ajax_danhmuc'); // wp_ajax_nopriv_{action}
function ajax_danhmuc() { ob_start(); echo '<option value="all">Chọn xã phường</option>'; if ($_POST['id'] == -1) { } else { $terms = get_terms( array( 'taxonomy' => 'dia_diem', 'hide_empty' => true, // có dữ liệu thì mới in ra 'parent' => $_POST['id'] // id danh mục cha // 'exclude' => array($_POST['id']), // câu lênh này là dùng để loại bỏ danh mục có id = ) ); } foreach ($terms as $term ) { ?> <option value="<?php echo $term->slug ?>"><?php echo $term->name ?></option> <?php } $result = ob_get_clean(); wp_send_json_success($result); die(); } add_action('wp_ajax_ajax_danhmuc', 'ajax_danhmuc'); // wp_ajax_{action} add_action('wp_ajax_nopriv_ajax_danhmuc', 'ajax_danhmuc'); // wp_ajax_nopriv_{action}
function ajax_danhmuc()
{
  ob_start();

  echo '<option value="all">Chọn xã phường</option>';

  if ($_POST['id'] == -1) {
    
  }
  else
  {
    $terms = get_terms( array(
      'taxonomy' => 'dia_diem',
      'hide_empty' => true, // có dữ liệu thì mới in ra
      'parent' => $_POST['id'] // id danh mục cha
      // 'exclude' => array($_POST['id']), // câu lênh này là dùng để loại bỏ danh mục có id = 
    ) );	
  }
  foreach ($terms  as $term ) {
    ?>
    <option value="<?php echo $term->slug ?>"><?php echo $term->name ?></option>

    <?php 
  }
  $result = ob_get_clean();
  wp_send_json_success($result);
  die();
}
add_action('wp_ajax_ajax_danhmuc', 'ajax_danhmuc'); // wp_ajax_{action}
add_action('wp_ajax_nopriv_ajax_danhmuc', 'ajax_danhmuc'); // wp_ajax_nopriv_{action}

Xong phần này ta đã xử lý được việc ajax lấy dữ liệu cho phường xã.

4. Lấy danh sách hướng nhà từ select của acf .

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<select name="huong_nha">
<?php
echo '<option value="all">Chọn hướng nhà</option>';
?>
<?php
$huong ='';
$field = get_field_object('huong');
$choices = $field['choices'];
$field_key = "field_5bced3bd459f2";
$field = get_field_object($field_key);
if( $field )
{
foreach( $field['choices'] as $k => $v )
{
if (isset($_GET['huong_nha'])) {
if ($k == $_GET['huong_nha'])
{
$huong = 'selected';
}
}
echo '<option value="' . $k . '"'.$huong.' >' . $v . '</option>';
}
}
?>
</select>
<select name="huong_nha"> <?php echo '<option value="all">Chọn hướng nhà</option>'; ?> <?php $huong =''; $field = get_field_object('huong'); $choices = $field['choices']; $field_key = "field_5bced3bd459f2"; $field = get_field_object($field_key); if( $field ) { foreach( $field['choices'] as $k => $v ) { if (isset($_GET['huong_nha'])) { if ($k == $_GET['huong_nha']) { $huong = 'selected'; } } echo '<option value="' . $k . '"'.$huong.' >' . $v . '</option>'; } } ?> </select>
<select name="huong_nha">
            <?php 
            echo '<option value="all">Chọn hướng nhà</option>';
            ?>
            <?php
            $huong ='';
            $field = get_field_object('huong');
            $choices = $field['choices'];
            $field_key = "field_5bced3bd459f2";
            $field = get_field_object($field_key);
            if( $field )
            {
              foreach( $field['choices'] as $k => $v )
              {
                if (isset($_GET['huong_nha'])) {
                  if ($k == $_GET['huong_nha'])
                  {
                    $huong = 'selected';
                  }
                }
                echo '<option value="' . $k . '"'.$huong.' >' . $v . '</option>';
              }
            }			
            ?>
          </select>

5. Phần giá này bạn tự nhập hoặc có thể làm các trường dữ liệu lấy danh sách ra cho đẹp. Phần này đơn giản mình nhập tay demo cho nhanh

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<div class="box-gia-thap order-lg-7 glg15">
<select name="giathap">
<option value="0">Giá thấp nhất</option>
<option value="500000000">500 Triệu</option>
<option value="1000000000">1 Tỷ</option>
<option value="1500000000">1.5 Tỷ</option>
<option value="2000000000">2 Tỷ</option>
<option value="2500000000">2.5 Tỷ</option>
</select>
</div>
<div class="box-gia-cao order-lg-8 glg15">
<select name="giacao">
<option value="0">Giá thấp nhất</option>
<option value="500000000">500 Triệu</option>
<option value="1000000000">1 Tỷ</option>
<option value="1500000000">1.5 Tỷ</option>
<option value="2000000000">2 Tỷ</option>
<option value="2500000000">2.5 Tỷ</option>
<option value="3000000000">3 Tỷ</option>
<option value="3500000000">3.5 Tỷ</option>
<option value="4000000000">4 Tỷ</option>
<option value="4500000000">4.5 Tỷ</option>
</select>
</div>
<div class="box-gia-thap order-lg-7 glg15"> <select name="giathap"> <option value="0">Giá thấp nhất</option> <option value="500000000">500 Triệu</option> <option value="1000000000">1 Tỷ</option> <option value="1500000000">1.5 Tỷ</option> <option value="2000000000">2 Tỷ</option> <option value="2500000000">2.5 Tỷ</option> </select> </div> <div class="box-gia-cao order-lg-8 glg15"> <select name="giacao"> <option value="0">Giá thấp nhất</option> <option value="500000000">500 Triệu</option> <option value="1000000000">1 Tỷ</option> <option value="1500000000">1.5 Tỷ</option> <option value="2000000000">2 Tỷ</option> <option value="2500000000">2.5 Tỷ</option> <option value="3000000000">3 Tỷ</option> <option value="3500000000">3.5 Tỷ</option> <option value="4000000000">4 Tỷ</option> <option value="4500000000">4.5 Tỷ</option> </select> </div>
<div class="box-gia-thap order-lg-7 glg15">
          <select name="giathap">
            <option value="0">Giá thấp nhất</option>
            <option value="500000000">500 Triệu</option>
            <option value="1000000000">1 Tỷ</option>
            <option value="1500000000">1.5 Tỷ</option>
            <option value="2000000000">2 Tỷ</option>
            <option value="2500000000">2.5 Tỷ</option>
          </select>
        </div>
        <div class="box-gia-cao order-lg-8 glg15">
          <select name="giacao">
            <option value="0">Giá thấp nhất</option>
            <option value="500000000">500 Triệu</option>
            <option value="1000000000">1 Tỷ</option>
            <option value="1500000000">1.5 Tỷ</option>
            <option value="2000000000">2 Tỷ</option>
            <option value="2500000000">2.5 Tỷ</option>
            <option value="3000000000">3 Tỷ</option>
            <option value="3500000000">3.5 Tỷ</option>
            <option value="4000000000">4 Tỷ</option>
            <option value="4500000000">4.5 Tỷ</option>

          </select>
        </div>

Tổng kết lại:

1. Form search gồm:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<form role="search" method="get" class="search-form" action="<?php echo home_url( '/' ); ?>">
<div class="box-text-search order-lg-1">
<input type="search" class="search-field"
placeholder="<?php echo esc_attr_x( 'Từ khóa…', 'placeholder' ) ?>"
value="<?php echo get_search_query() ?>" name="s"
title="<?php echo esc_attr_x( 'Search for:', 'label' ) ?>"
autocomplete="off" />
</div>
<div class="box-loainha order-lg-3 glg15">
<select name="loai_nha_dat">
<?php
echo '<option value="all">Chọn loại nhà đất</option>';
$terms = get_terms( array(
'taxonomy' => 'loai_nha_dat',
'hide_empty' => true,
'parent' => 0
) );
foreach ($terms as $term ) {
?>
<option value="<?php echo $term->slug ?>"><?php echo $term->name ?></option>
<?php
}
?>
</select>
</div>
<div class="tinh_tp order-lg-4 glg15">
<select name="tinh_tp">
<?php
echo '<option value="all" data-idp="-1">Chọn Huyện/Thành Phố</option>';
$terms = get_terms( array(
'taxonomy' => 'dia_diem',
'hide_empty' => true,
'parent' => 0
) );
foreach ($terms as $term ) {
?>
<option data-idp="<?=$term->term_id?>" value="<?php echo $term->slug ?>"><?php echo $term->name ?></option>
<?php
}
?>
</select>
</div>
<div class="box-xahuyen order-lg-5 glg15">
<select name="xa_huyen">
<?php
echo '<option value="all">Chọn xã phường</option>';
?>
</select>
</div>
<div class="box-huong order-lg-6 glg15">
<select name="huong_nha">
<?php
echo '<option value="all">Chọn hướng nhà</option>';
?>
<?php
$huong ='';
$field = get_field_object('huong');
$choices = $field['choices'];
$field_key = "field_5bced3bd459f2";
$field = get_field_object($field_key);
//var_dump($field['choices']);
if( $field )
{
foreach( $field['choices'] as $k => $v )
{
if (isset($_GET['huong_nha'])) {
if ($k == $_GET['huong_nha'])
{
$huong = 'selected';
}
}
echo '<option value="' . $k . '"'.$huong.' >' . $v . '</option>';
}
}
?>
</select>
</div>
<div class="box-gia-thap order-lg-7 glg15">
<select name="giathap">
<option value="0">Giá thấp nhất</option>
<option value="500000000">500 Triệu</option>
<option value="1000000000">1 Tỷ</option>
<option value="1500000000">1.5 Tỷ</option>
<option value="2000000000">2 Tỷ</option>
<option value="2500000000">2.5 Tỷ</option>
</select>
</div>
<div class="box-gia-cao order-lg-8 glg15">
<select name="giacao">
<option value="0">Giá thấp nhất</option>
<option value="500000000">500 Triệu</option>
<option value="1000000000">1 Tỷ</option>
<option value="1500000000">1.5 Tỷ</option>
<option value="2000000000">2 Tỷ</option>
<option value="2500000000">2.5 Tỷ</option>
<option value="3000000000">3 Tỷ</option>
<option value="3500000000">3.5 Tỷ</option>
<option value="4000000000">4 Tỷ</option>
<option value="4500000000">4.5 Tỷ</option>
</select>
</div>
<div class="box-sub order-lg-2 ">
<input type="submit" class="search-submit"
value="<?php echo esc_attr_x( 'Tìm kiếm', 'submit button' ) ?>" />
</div>
</form>
<form role="search" method="get" class="search-form" action="<?php echo home_url( '/' ); ?>"> <div class="box-text-search order-lg-1"> <input type="search" class="search-field" placeholder="<?php echo esc_attr_x( 'Từ khóa…', 'placeholder' ) ?>" value="<?php echo get_search_query() ?>" name="s" title="<?php echo esc_attr_x( 'Search for:', 'label' ) ?>" autocomplete="off" /> </div> <div class="box-loainha order-lg-3 glg15"> <select name="loai_nha_dat"> <?php echo '<option value="all">Chọn loại nhà đất</option>'; $terms = get_terms( array( 'taxonomy' => 'loai_nha_dat', 'hide_empty' => true, 'parent' => 0 ) ); foreach ($terms as $term ) { ?> <option value="<?php echo $term->slug ?>"><?php echo $term->name ?></option> <?php } ?> </select> </div> <div class="tinh_tp order-lg-4 glg15"> <select name="tinh_tp"> <?php echo '<option value="all" data-idp="-1">Chọn Huyện/Thành Phố</option>'; $terms = get_terms( array( 'taxonomy' => 'dia_diem', 'hide_empty' => true, 'parent' => 0 ) ); foreach ($terms as $term ) { ?> <option data-idp="<?=$term->term_id?>" value="<?php echo $term->slug ?>"><?php echo $term->name ?></option> <?php } ?> </select> </div> <div class="box-xahuyen order-lg-5 glg15"> <select name="xa_huyen"> <?php echo '<option value="all">Chọn xã phường</option>'; ?> </select> </div> <div class="box-huong order-lg-6 glg15"> <select name="huong_nha"> <?php echo '<option value="all">Chọn hướng nhà</option>'; ?> <?php $huong =''; $field = get_field_object('huong'); $choices = $field['choices']; $field_key = "field_5bced3bd459f2"; $field = get_field_object($field_key); //var_dump($field['choices']); if( $field ) { foreach( $field['choices'] as $k => $v ) { if (isset($_GET['huong_nha'])) { if ($k == $_GET['huong_nha']) { $huong = 'selected'; } } echo '<option value="' . $k . '"'.$huong.' >' . $v . '</option>'; } } ?> </select> </div> <div class="box-gia-thap order-lg-7 glg15"> <select name="giathap"> <option value="0">Giá thấp nhất</option> <option value="500000000">500 Triệu</option> <option value="1000000000">1 Tỷ</option> <option value="1500000000">1.5 Tỷ</option> <option value="2000000000">2 Tỷ</option> <option value="2500000000">2.5 Tỷ</option> </select> </div> <div class="box-gia-cao order-lg-8 glg15"> <select name="giacao"> <option value="0">Giá thấp nhất</option> <option value="500000000">500 Triệu</option> <option value="1000000000">1 Tỷ</option> <option value="1500000000">1.5 Tỷ</option> <option value="2000000000">2 Tỷ</option> <option value="2500000000">2.5 Tỷ</option> <option value="3000000000">3 Tỷ</option> <option value="3500000000">3.5 Tỷ</option> <option value="4000000000">4 Tỷ</option> <option value="4500000000">4.5 Tỷ</option> </select> </div> <div class="box-sub order-lg-2 "> <input type="submit" class="search-submit" value="<?php echo esc_attr_x( 'Tìm kiếm', 'submit button' ) ?>" /> </div> </form>
<form role="search" method="get" class="search-form" action="<?php echo home_url( '/' ); ?>">

        <div class="box-text-search order-lg-1">
          <input type="search" class="search-field"
          placeholder="<?php echo esc_attr_x( 'Từ khóa…', 'placeholder' ) ?>"
          value="<?php echo get_search_query() ?>" name="s"
          title="<?php echo esc_attr_x( 'Search for:', 'label' ) ?>"
          autocomplete="off" />
        </div>
        <div class="box-loainha order-lg-3 glg15">
          <select name="loai_nha_dat">
            <?php 
            echo '<option value="all">Chọn loại nhà đất</option>';
            $terms = get_terms( array(
              'taxonomy' => 'loai_nha_dat',
              'hide_empty' => true,
              'parent' => 0
            ) );	
            foreach ($terms  as $term ) {
              ?>
              <option value="<?php echo $term->slug ?>"><?php echo $term->name ?></option>
              <?php 
            }
            ?>
          </select>
        </div>
        <div class="tinh_tp order-lg-4 glg15">
          <select name="tinh_tp">
            <?php 
            echo '<option value="all" data-idp="-1">Chọn Huyện/Thành Phố</option>';
            $terms = get_terms( array(
              'taxonomy' => 'dia_diem',
              'hide_empty' => true,
              'parent' => 0
            ) );	
            foreach ($terms  as $term ) {
              ?>
              <option data-idp="<?=$term->term_id?>" value="<?php echo $term->slug ?>"><?php echo $term->name ?></option>
              <?php 
            }
            ?>
          </select>
        </div>
        <div class="box-xahuyen order-lg-5 glg15">
          <select name="xa_huyen">
            <?php 
            echo '<option value="all">Chọn xã phường</option>';

            ?>
          </select>
        </div>
        <div class="box-huong order-lg-6 glg15">
          <select name="huong_nha">
            <?php 
            echo '<option value="all">Chọn hướng nhà</option>';

            ?>

            <?php
            $huong ='';
            $field = get_field_object('huong');
            $choices = $field['choices'];
            $field_key = "field_5bced3bd459f2";
            $field = get_field_object($field_key);
            //var_dump($field['choices']);
            if( $field )
            {
              foreach( $field['choices'] as $k => $v )
              {
                if (isset($_GET['huong_nha'])) {
                  if ($k == $_GET['huong_nha'])
                  {
                    $huong = 'selected';
                  }
                }
                echo '<option value="' . $k . '"'.$huong.' >' . $v . '</option>';
              }
            }			
            ?>
          </select>
        </div>
        <div class="box-gia-thap order-lg-7 glg15">
          <select name="giathap">
            <option value="0">Giá thấp nhất</option>
            <option value="500000000">500 Triệu</option>
            <option value="1000000000">1 Tỷ</option>
            <option value="1500000000">1.5 Tỷ</option>
            <option value="2000000000">2 Tỷ</option>
            <option value="2500000000">2.5 Tỷ</option>
          </select>
        </div>
        <div class="box-gia-cao order-lg-8 glg15">
          <select name="giacao">
            <option value="0">Giá thấp nhất</option>
            <option value="500000000">500 Triệu</option>
            <option value="1000000000">1 Tỷ</option>
            <option value="1500000000">1.5 Tỷ</option>
            <option value="2000000000">2 Tỷ</option>
            <option value="2500000000">2.5 Tỷ</option>
            <option value="3000000000">3 Tỷ</option>
            <option value="3500000000">3.5 Tỷ</option>
            <option value="4000000000">4 Tỷ</option>
            <option value="4500000000">4.5 Tỷ</option>

          </select>
        </div>
        <div class="box-sub order-lg-2 ">
          <input type="submit" class="search-submit"
          value="<?php echo esc_attr_x( 'Tìm kiếm', 'submit button' ) ?>" />
        </div>
      </form>

2. functions.php gồm

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
function my_scripts_method() {
wp_enqueue_script(
'ajax_script',
get_stylesheet_directory_uri() . '/vendor/ajax-script.js',
array( 'jquery' )
);
wp_localize_script('ajax_script', 'WPURLS', array(
'siteurl' => admin_url( 'admin-ajax.php' )
));
}
add_action( 'wp_enqueue_scripts', 'my_scripts_method' );
function ajax_danhmuc()
{
ob_start();
echo '<option value="all">Chọn xã phường</option>';
if ($_POST['id'] == -1) {
}
else
{
$terms = get_terms( array(
'taxonomy' => 'dia_diem',
'hide_empty' => true, // có dữ liệu thì mới in ra
'parent' => $_POST['id'] // id danh mục cha
// 'exclude' => array($_POST['id']),
) );
}
foreach ($terms as $term ) {
?>
<option value="<?php echo $term->slug ?>"><?php echo $term->name ?></option>
<?php
}
$result = ob_get_clean();
wp_send_json_success($result);
die();
}
add_action('wp_ajax_ajax_danhmuc', 'ajax_danhmuc'); // wp_ajax_{action}
add_action('wp_ajax_nopriv_ajax_danhmuc', 'ajax_danhmuc'); // wp_ajax_nopriv_{action}
function my_scripts_method() { wp_enqueue_script( 'ajax_script', get_stylesheet_directory_uri() . '/vendor/ajax-script.js', array( 'jquery' ) ); wp_localize_script('ajax_script', 'WPURLS', array( 'siteurl' => admin_url( 'admin-ajax.php' ) )); } add_action( 'wp_enqueue_scripts', 'my_scripts_method' ); function ajax_danhmuc() { ob_start(); echo '<option value="all">Chọn xã phường</option>'; if ($_POST['id'] == -1) { } else { $terms = get_terms( array( 'taxonomy' => 'dia_diem', 'hide_empty' => true, // có dữ liệu thì mới in ra 'parent' => $_POST['id'] // id danh mục cha // 'exclude' => array($_POST['id']), ) ); } foreach ($terms as $term ) { ?> <option value="<?php echo $term->slug ?>"><?php echo $term->name ?></option> <?php } $result = ob_get_clean(); wp_send_json_success($result); die(); } add_action('wp_ajax_ajax_danhmuc', 'ajax_danhmuc'); // wp_ajax_{action} add_action('wp_ajax_nopriv_ajax_danhmuc', 'ajax_danhmuc'); // wp_ajax_nopriv_{action}
function my_scripts_method() {
    wp_enqueue_script(
      'ajax_script',
      get_stylesheet_directory_uri() . '/vendor/ajax-script.js',
      array( 'jquery' )
    );
    wp_localize_script('ajax_script', 'WPURLS', array(
      'siteurl' => admin_url( 'admin-ajax.php' )
  ));
  }
  add_action( 'wp_enqueue_scripts', 'my_scripts_method' );


function ajax_danhmuc()
{
  ob_start();

  echo '<option value="all">Chọn xã phường</option>';

  if ($_POST['id'] == -1) {
    
  }
  else
  {
    $terms = get_terms( array(
      'taxonomy' => 'dia_diem',
      'hide_empty' => true, // có dữ liệu thì mới in ra
      'parent' => $_POST['id'] // id danh mục cha
      // 'exclude' => array($_POST['id']),
    ) );	
  }
  foreach ($terms  as $term ) {
    ?>
    <option value="<?php echo $term->slug ?>"><?php echo $term->name ?></option>

    <?php 
  }
  $result = ob_get_clean();
  wp_send_json_success($result);
  die();
}
add_action('wp_ajax_ajax_danhmuc', 'ajax_danhmuc'); // wp_ajax_{action}
add_action('wp_ajax_nopriv_ajax_danhmuc', 'ajax_danhmuc'); // wp_ajax_nopriv_{action}

3. ajax-scripts.js gồm:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
(function($) {
$(document).ready(function() {
$( "select[name='tinh_tp']" ).change(function() {
console.log($(this).find(':selected').attr('data-idp')) ; // lấy data idp
data = {
'action': 'ajax_danhmuc', //tên action ajax
'id' :$(this).find(':selected').attr('data-idp')
};
$.ajax({
url: WPURLS.siteurl,
data: data,
dataType : "json",
type: 'POST',
beforeSend: function(xhr) {
console.log('ajax chay');
},
success: function(data) {
if (data) {
console.log(data);
$('select[name="xa_huyen"]').html(data.data);//in dữ liệu vào select này
}
}
});
});
})
})(jQuery);
(function($) { $(document).ready(function() { $( "select[name='tinh_tp']" ).change(function() { console.log($(this).find(':selected').attr('data-idp')) ; // lấy data idp data = { 'action': 'ajax_danhmuc', //tên action ajax 'id' :$(this).find(':selected').attr('data-idp') }; $.ajax({ url: WPURLS.siteurl, data: data, dataType : "json", type: 'POST', beforeSend: function(xhr) { console.log('ajax chay'); }, success: function(data) { if (data) { console.log(data); $('select[name="xa_huyen"]').html(data.data);//in dữ liệu vào select này } } }); }); }) })(jQuery);
(function($) {

  $(document).ready(function() {


    $( "select[name='tinh_tp']" ).change(function() {
      console.log($(this).find(':selected').attr('data-idp')) ; // lấy data idp

      data = {
        'action': 'ajax_danhmuc', //tên action ajax
        'id' :$(this).find(':selected').attr('data-idp')
      };
      $.ajax({
         url: WPURLS.siteurl, 
         data: data,
         dataType : "json",
         type: 'POST',

         beforeSend: function(xhr) {

          console.log('ajax chay');
           
       },
       success: function(data) {
        if (data) {
          console.log(data);
          $('select[name="xa_huyen"]').html(data.data);//in dữ liệu vào select này
        }
       }
   });
    });

  })
})(jQuery);

4. cho thêm tí css vào để dể nhìn 1 tí

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
form.search-form {
padding: 20px 0;
display: flex;
flex-wrap: wrap;
}
form.search-form input,form.search-form select {
width: 100%;
}
@media screen and (min-width: 991px)
{
.box-text-search {
width: 80%;
margin-right: 10px;
margin-bottom: 5px;
}
.box-sub {
width: 15%;
}
.box-sub input {
padding: 7px;
background-color: #088f08;
color: #fff;
font-size: 16px;
}
.glg15 {
width: 15%;
margin-right: 13px;
}
.glg15 input, .glg15 select {
padding: 5px;
width: 100%;
}
.glg15:last-child {
margin-right: 0;
}
.box-gia-cao {margin-right: 0;}
}
form.search-form { padding: 20px 0; display: flex; flex-wrap: wrap; } form.search-form input,form.search-form select { width: 100%; } @media screen and (min-width: 991px) { .box-text-search { width: 80%; margin-right: 10px; margin-bottom: 5px; } .box-sub { width: 15%; } .box-sub input { padding: 7px; background-color: #088f08; color: #fff; font-size: 16px; } .glg15 { width: 15%; margin-right: 13px; } .glg15 input, .glg15 select { padding: 5px; width: 100%; } .glg15:last-child { margin-right: 0; } .box-gia-cao {margin-right: 0;} }
form.search-form {
    padding: 20px 0;
    display: flex;
    flex-wrap: wrap;
}


form.search-form input,form.search-form select {
    width: 100%;
}

@media screen and (min-width: 991px)
{
.box-text-search {
    width: 80%;
    margin-right: 10px;
    margin-bottom: 5px;
}
.box-sub {
    width: 15%;
}

.box-sub input {
    padding: 7px;
    background-color: #088f08;
    color: #fff;
    font-size: 16px;
}
.glg15 {
    width: 15%;
    margin-right: 13px;
}

.glg15 input, .glg15 select {
    padding: 5px;
    width: 100%;
}

.glg15:last-child {
    margin-right: 0;
}

.box-gia-cao {margin-right: 0;}
}

Nguồn: https://blogtintonghop.com/huong-dan-tao-bo-search-bat-dong-san-wordpress-p-2/

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

Quét mã QR để đọc bài viết này để xem tiếp trên điện thoại

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

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *