Разметку формы решил залить в пастбин, чтоб не уйти в лимит:
https://pastebin.com/8VJVbf3m
filterAjax.js :
jQuery(function($){
$('#filter_complex').submit( function(){
var filter = $(this)
$.ajax({
url: myajax.url, // обработчик
data: filter.serialize(), // данные
type: filter.attr('method'), // тип запроса
beforeSend: function(xhr){
filter.find('button.btn-primary').text('Загружаю...') // изменяем текст кнопки
},
success: function(data){
filter.find('button.btn-primary').text('Применить фильтр') // возвращаеи текст кнопки
$('#response').html(data)
},
error: function(data){
alert('Ошибка: ' + data)
}
});
return false;
});
});
php обработчик в function.php:
function complexFilter_function(){
$args = array(
'post_type' => 'buildings',
'orderby' => 'date',
'meta_query' => array( 'relation'=>'AND' )
);
// Условие 1: цена больше $_POST['priceFrom']
if( isset( $_POST['priceFrom'] ) && ($_POST['priceFrom'] != '') )
$args['meta_query'][] = array(
'key' => 'price',
'value' => $_POST['priceFrom'],
'type' => 'numeric',
'compare' => '>'
);
// Условие 2: цена меньше $_POST['priceTo']
if( isset( $_POST['priceTo'] ) && ($_POST['priceTo'] != '') )
$args['meta_query'][] = array(
'key' => 'price',
'value' => $_POST['priceTo'],
'type' => 'numeric',
'compare' => '<'
);
// Условие 3: Жилищный комплекс
if( isset( $_POST['housing_complex'] ) && ($_POST['housing_complex'] != '') )
$args['meta_query'][] = array(
'key' => 'housing_complex',
'value' => $_POST['housing_complex'],
'type' => 'binary',
'compare' => 'LIKE'
);
// Условие 4: Район
if( isset( $_POST['district'] ) && ($_POST['district'] != '') )
$args['meta_query'][] = array(
'key' => 'district',
'value' => $_POST['district'],
'type' => 'binary',
'compare' => 'LIKE'
);
// Условие 5: Метро
if( isset( $_POST['metro'] ) && ($_POST['metro'] != '') )
$args['meta_query'][] = array(
'key' => 'metro',
'value' => $_POST['metro'],
'type' => 'binary',
'compare' => 'LIKE'
);
// Условие 6: ЖД / Станции
if( isset( $_POST['station'] ) && ($_POST['station'] != '') )
$args['meta_query'][] = array(
'key' => 'station',
'value' => $_POST['station'],
'type' => 'binary',
'compare' => 'LIKE'
);
// Условие 7: Город
if( isset( $_POST['city'] ) && ($_POST['city'] != '') )
$args['meta_query'][] = array(
'key' => 'city',
'value' => $_POST['city'],
'type' => 'binary',
'compare' => 'LIKE'
);
// Условие 8: Район ЛО
if( isset( $_POST['lo_district'] ) && ($_POST['lo_district'] != '') )
$args['meta_query'][] = array(
'key' => 'lo_district',
'value' => $_POST['lo_district'],
'type' => 'binary',
'compare' => 'LIKE'
);
// Условие 9: Комнатность
if( isset( $_POST['room'] ) && ($_POST['room'] != '') )
$args['meta_query'][] = array(
'key' => 'room',
'value' => $_POST['room'],
'type' => 'numeric',
'compare' => 'LIKE'
);
// Условие 10: Общая площадь
if( isset( $_POST['space'] ) && ($_POST['space'] != '') )
$args['meta_query'][] = array(
'key' => 'space',
'value' => $_POST['space'],
'type' => 'binary',
'compare' => '>'
);
// Условие 11: Год сдачи до
if( isset( $_POST['yeardo'] ) && ($_POST['yeardo'] != '') )
$args['meta_query'][] = array(
'key' => 'yeardo',
'value' => $_POST['yeardo'],
'type' => 'binary',
'compare' => 'LIKE'
);
// Условие 12: Отделка
if( isset( $_POST['feature-facing'] ) && ($_POST['feature-facing'] != '') )
$args['meta_query'][] = array(
'key' => 'furnish',
'value' => $_POST['feature-facing'],
'type' => 'binary',
'compare' => 'LIKE'
);
// Условие 13: Ипотека
if( isset( $_POST['feature-mortgage'] ) && ($_POST['feature-mortgage'] != '') )
$args['meta_query'][] = array(
'key' => 'mortgage',
'value' => $_POST['feature-mortgage'],
'type' => 'binary',
'compare' => 'LIKE'
);
// Условие 14: Переуступка
if( isset( $_POST['feature-assignments'] ) && ($_POST['feature-assignments'] != '') )
$args['meta_query'][] = array(
'key' => 'assignment',
'value' => $_POST['feature-assignments'],
'type' => 'binary',
'compare' => 'LIKE'
);
// Условие 15: Спецпредложение
if( isset( $_POST['feature-specialOffer'] ) && ($_POST['feature-specialOffer'] != '') )
$args['meta_query'][] = array(
'key' => 'spec_offer',
'value' => $_POST['feature-specialOffer'],
'type' => 'binary',
'compare' => 'LIKE'
);
// Условие 16: Военная ипотека
if( isset( $_POST['feature-armyMortgage'] ) && ($_POST['feature-armyMortgage'] != '') )
$args['meta_query'][] = array(
'key' => 'military_mortgage',
'value' => $_POST['feature-armyMortgage'],
'type' => 'binary',
'compare' => 'LIKE'
);
// Условие 17: Материнский капитал
if( isset( $_POST['feature-motherCapital'] ) && ($_POST['feature-motherCapital'] != '') )
$args['meta_query'][] = array(
'key' => 'm_capital',
'value' => $_POST['feature-motherCapital'],
'type' => 'binary',
'compare' => 'LIKE'
);
wp_die();
}
add_action('wp_ajax_complexFilter', 'complexFilter_function');
add_action('wp_ajax_nopriv_complexFilter', 'complexFilter_function');