Здравствуйте. При создании AJAX фильтра по произвольным полям возникла проблема запрос отправляется но ответа нет делаю по инструкции
https://misha.blog/wordpress/filtryi-zapisey-i-tov...
Подскажите что я делаю не так?
Подозреваю что не передается обратно массив $args не знаю как его передать и правильно добавить в query_posts на странице?
Заранее благодарен.
Вот код страницы с фильтрами
форма
<form action="<?php echo site_url() ?>/wp-admin/admin-ajax.php" method="POST" id="filter">
<div class="form-group">
<label for="dateStart">С даты</label>
<input type="date" class="form-control" id="dateStart" name="dateStart">
</div>
<div class="form-group">
<label for="dateEnd">По дату</label>
<input type="date" class="form-control" id="dateEnd" name='dateEnd'>
</div>
<div class="form-group">
<label for="seminarTypeSelect">Город</label>
<select id="seminarTypeSelect" class="form-control" name='city'>
<option>Москва</option>
<option>Киев</option>
</select>
</div>
<div class="form-group">
<label for="seminarTypeSelect2">Тип семнара</label>
<select id="seminarTypeSelect2" class="form-control" name='stype'>
<option value="seminar">Семинар</option>
<option value="webinar">Вебинар</option>
</select>
</div>
<button type="submit" class="btn btn-default">Применить фильтр</button>
<input type="hidden" name="action" value="myfilter">
</form>
<div id="response"></div>
</div>
Аргументы для query_posts
<?php
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args = array(
'post_type' => 'kursy',
'order' => 'DESC',
'posts_per_page' => 15,
'orderby' => 'meta_value',
'paged' => $paged,
'meta_query' => array(
array('key' => 'datestart'),
),
);
?>
Скрипт для отправки AJAX :
<script type="text/javascript">
jQuery(function ($) {
$('#filter').submit(function () {
var filter = $(this);
$.ajax({
url: ajaxurl, // обработчик
data: filter.serialize(), // данные
type: filter.attr('method'), // тип запроса
beforeSend: function (xhr) {
filter.find('button').text('Загружаю...'); // изменяем текст кнопки
},
success: function (data) {
filter.find('button').text(
'Применить фильтр'); // возвращаеи текст кнопки
$('#response').html(data);
}
});
return false;
});
});
</script>
Функция обработчик в файле function.php
function true_filter_function(){
$args['meta_query'] = array( 'relation'=>'AND' ); // AND значит все условия meta_query должны выполняться
// условие 1: Фильтр по датам если установленны.
if( isset( $_POST['dateStart'] ))
$args['meta_query'][] = array(
'key' => 'datestart',
'value' => $_POST['dateStart'],
'compare' => '=',
'type' => 'DATE'
);
if( isset( $_POST['stype'] ) )
$args['meta_query'][] = array(
'key' => 'stype',
'value' => $_POST['stype'],
'type' => 'CHAR',
'compare' => '='
);
die();
}
add_action('wp_ajax_myfilter', 'true_filter_function');
add_action('wp_ajax_nopriv_myfilter', 'true_filter_function');