dicem
@dicem

Почему не приходит ответ с сервера при асинхронном выводе постов в WordPress?

Предисловие, сделал пользовательский тип записей "Объекты недвижимости"(buildings). Для них накидал пользовательские поля, по которым в последствии собирался фильтровать эти записи.
Делал по данному гайду: https://misha.blog/wordpress/filtryi-zapisey-i-tov...

В итоге имею следующую форму:
Изображение формы
5bf6a1c4d8227970533854.png


Проблема в том, что посылая параметры 5bf6a3c444f1a143986717.png
ajax запрос успешно отрабатывает, но я получаю абсолютно пустой response.5bf6a427d3d4d787470940.png

Мой код под спойлером:
spoiler

Разметку формы решил залить в пастбин, чтоб не уйти в лимит: 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');

  • Вопрос задан
  • 52 просмотра
Решения вопроса 1
dicem
@dicem Автор вопроса
Вобщем все решил, все до жути понятно, обработчик ничего не возвращал, вот и приходила пустота Т_Т. Как всегда решение под носом.

Добавил в обработчик перед wp_die():
$buildings = get_posts( $args );
		foreach( $buildings as $post ){ setup_postdata($post);
			?>
				<div class="col-lg-2 col-md-2 col-sm-4 col-xs-6">
					<div class="card" style="width: 100%;">
						<img class="card-img-top" src="<?php $image_url =  wp_get_attachment_image_src( $post->photo ); echo $image_url[0] ?>" alt="Card image cap">
						<div class="card-body">
							<h5 class="card-title"><?php echo $post->price; ?> ₽</h5>
							<p class="card-text card-text--build">
								<?php 
									if ($post->room == 'Студия') {
										echo ($post->room . ', ' . $post->space . ' м<sup>2</sup>');
									}else{
										echo ($post->room . ' комн. кв. ' . $post->space . ' м<sup>2</sup>');
									}
								 ?><br>
								<?php echo ($post->district . '<br>ул. ' . $post->city . ', дом ' . $post->house); ?>
							</p>
							<a href="<?php the_permalink(); ?>" class="btn btn-primary" target="_blank">Перейти</a>
						</div>
					</div>
				</div>
			<?php
			the_post();
		}
		wp_reset_postdata();
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы