Задать вопрос
@ligisayan

Как сделать фильтрацию произвольных типов записей по диапазону произвольных полей?

Всем привет! Есть сайт на wordpress с произвольным типом записи методика (method) у которого есть 2 параметра минимальный (methodic_age_min) и максимальный (methodic_age_max) возраст добавляемые с помощью произвольных полей advanced custom fields

Я хочу сделать фильтрацию методик с помощью ползунка диапазона - ссылка на фидл: те методики, у которых значение ползунка укладывается в промежуток между минимальным и максимальным значением - их и выводить.

Пытаюсь сделать вот так, но не понимаю как повлиять на фильтрацию результата. Что делаю не правильно?

Страница шаблона
<div class="container">
<form class="filter" action="" method="get">
<input type="range" name="method_age" min="0" max="100" step="1" oninput="go_filter()" id="r1">
<p id="one">50</p>
<button type="submit">Отфильтровать</button>
</form>
	<?php 
	if ($_GET && !empty($_GET)) {
		methodic_filter();
	if (have_posts()) : while (have_posts()) : the_post(); ?>
		<h1><?php the_title(); ?></h1>
		<?php the_content(); ?>
		<div class="ped_holder">
		<?php 
		$the_query = new WP_Query( array ( 
			'post_type' => 'method', 
			'posts_per_page' => '-1',
		) );
		while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
                ...
               <?php endwhile; wp_reset_postdata(); ?>
	<?php endwhile; endif; } ?>
</div>


functions.php
function methodic_filter() {
	$args = array(); 
	$args['meta_query'] = array('relation' => 'AND');
	global $wp_query;

	if ($_GET['method_age'] != '') {
		if ($_GET['method_age'] == '') $_GET['method_age'] = 0;

		$args['meta_query'][] = array(
			'key' => 'methodic_age_min',
			'value' => (int)$_GET['method_age'],
			'type' => 'numeric',
			'compare' => '>='
			);
                $args['meta_query'][] = array(
			'key' => 'methodic_age_max',
			'value' => (int)$_GET['method_age'],
			'type' => 'numeric',
			'compare' => '>='
			);
	}
			
	query_posts(array_merge($args,$wp_query->query));
}
  • Вопрос задан
  • 25 просмотров
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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