@kirill2709903

Как вывести ajax фильтр статей в модальном окне wordpress?

Здравствуйте! В модальном окне выводятся записи, которые фильтруются по категориям и меткам. Фильтр нашел тут, подправил под свои нужды, теперь он выглядит так :
Само окно
<div id="myModal" class="modal fade none in" style="display: block;">
		<div class="modal-dialog">
			<div class="modal-content">
				<div class="modal-header">
					<button type="button" class="close" data-dismiss="modal" aria-hidden="false">×</button>
					<h4 class="modal-title title">Ежедневно в наше агентство поступает более 100 новых заявок на аренду квартиры. Выберете из нашей базы жильцов, которых готовы заселить.</h4>
				</div>



				<!-- FILTER -->
	<form class="form-horizontal" action="<?php echo site_url() ?>/wp-admin/admin-ajax.php" method="POST" id="filter">
		<div class="select_style">
			<div class="col-lg-4">
				<?php 
					if( $terms = get_terms( array(
						'taxonomy' => 'category', // to make it simple I use default categories
						 'orderby' => 'name'
							) ) ) : 
						// if categories exist, display the dropdown
						echo '<select name="categoryfilter"><option value="">Select category...</option>';
						foreach ( $terms as $term ) :
						echo '<option value="' . $term->term_id . '">' . $term->name . '</option>'; // ID of the category as an option value
						endforeach;
						echo '</select>';
						endif;
						?>
					</div>
					
					<div class="col-lg-4">
						<?php 
							if( $terms = get_terms( array(
							    'taxonomy' => 'post_tag', // to make it simple I use default categories
							    'orderby' => 'name'
							) ) ) : 
							// if categories exist, display the dropdown
								echo '<select name="postTagfilter"><option value="">Select category...</option>';
								foreach ( $terms as $term ) :
									echo '<option value="' . $term->term_id . '">' . $term->name . '</option>'; // ID of the category as an option value
								endforeach;
								echo '</select>';
							endif;
							?>
							<button>Apply filter</button>
	<input type="hidden" name="action" value="myfilter">
						</div>
					</div>	
				</form>
				<!-- END FILTER -->




				<!-- Основное содержимое модального окна -->
				<div class="modal-body body_style">
					<div class="panel-body">
						<div id="orders-place" class="item">
						<?php 
							$query = new WP_Query( array('taxonomy') );
							if($query->have_posts()) : while ($query->have_posts()) : $query->the_post(); 
								?>
							<div class="infoflat" id='<post-<?php the_ID(); ?>'>
								<h3 id="cat-<?php $category = get_the_category(); echo $category[0]->cat_ID; ?>">
									<b>Метро:</b> <?php echo the_category('cat_name'); ?>
								</h3>
								<h3 id="tag-<?php $post_tag = get_the_tags(); echo $post_tag[0]->term_id ?>">
									<b>Комнат:</b> <?php the_tags('','',''); ?>
								</h3>
								<?php the_content(); ?>
								<p><b>Цена:</b> 45000</p>
								<div id="response"></div>
							</div>
						<?php 
							endwhile;
							endif;
							wp_reset_query();
						?>
						</div>
					</div>
				</div>
			</div>
		</div>
	</div>


Выглядит так :
6358446c3f9ae917060542.png

То что я поставил в functions
add_action('wp_ajax_myfilter', 'misha_filter_function'); // wp_ajax_{ACTION HERE} 
add_action('wp_ajax_nopriv_myfilter', 'misha_filter_function');

function misha_filter_function(){
	$args = array(
		'orderby' => 'date', // we will sort posts by date
		'order'	=> $_POST['date'] // ASC or DESC
	);
 
	// for taxonomies / categories
	if( isset( $_POST['categoryfilter'] ) )
		$args['tax_query'] = array(
			'relation' => 'AND',
			array(
				'taxonomy' => 'category',
				'field' => 'id',
				'terms' => $_POST['categoryfilter']
			)
		);
 
	if( isset( $_POST['postTagfilter'] ) )
		$args['tax_query'] = array(
			'relation' => 'AND',
			array(
				'taxonomy' => 'post_tag',
				'field' => 'id',
				'terms' => $_POST['postTagfilter']
			)
		); 
	
	$query = new WP_Query( $args );
	
	if( $query->have_posts() ) :
		while( $query->have_posts() ): $query->the_post(); ?>
			<?php the_content(); ?>
		<?php endwhile;
		wp_reset_postdata();
	else :
		echo 'No posts found';
	endif;
	
	die();
}


Файл с jQuery я не трогал.
Фильтр работает, но он результаты выводит в wp-admin/admin-ajax.php, в то время как мне нужно , что бы фильтрация проходила внутри модального окна и без перезагрузки.. Я понимаю , что дело в actione... Я просто не могу понять как сделать правильно... Подскажите как это сделать? Я пока не совсем понимаю что нужно, объясните, пожалуйста.
  • Вопрос задан
  • 96 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

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