Задать вопрос
anlimas
@anlimas
Web developer

AJAX фильтр по произвольным типам и произвольным полям wordpress?

Здравствуйте. При создании 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');
  • Вопрос задан
  • 2596 просмотров
Подписаться 2 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 1
alex-1917
@alex-1917
Если ответ помог, отметь решением
У Миши на русскоязычном варианте много косячков, как минимум есть обрезки в коде, походу он и сам не знает об этом да-да!!...)))
Если не веришь, могу тыкнуть ссылкой - разница в несколько строк, работоспособность скрипта полностью разрушена.
Забил Миша на РФ, забил...
Гугли его англо-сайт - там все ОК!!! Словарь не забудь.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы