Поддержка Проблемы и решения Форма фильтр записей по произвольным полям

  • Доброго дня всем! Пытаюсь сделать форму фильтрации записей на главной странице по произвольным полям. На данном этапе получилось сделать форму, которая фильтрует записи, но работает она не так как хотелось бы.

    <form action="/" method="get">
    <p><label>Тип:</label><br />
    <select name="type">
    <option value="">Все</option>
    <option value="photo">Фотография</option>
    <option value="postcard">Открытка</option>
    <option value="video">Видео</option>
    <option value="research">Исследование</option>
    </select>
    </p>
    <p><label>Место:</label><br />
    <select name="place">
    <option value="">Все</option>
    <option value="baranowitschi">Барановичи</option>
    <option value="nowaya-mysch">Новая Мышь</option>
    <option value="kolpenitsa">Колпеница</option>
    </select>
    </p>
    <p><label>Год:</label><br />
    от <input type="text" name="min-date" size="3" value="1870">
    до <input type="text" name="max-date" size="3" value="1991"></p>
    <p><input type="submit" value="Фильтр"></p>
    </form>
    			</div>
    		</section>
    <?php if($carrotlite_front) : ?>
    	<section class="main post-grid cols">
    // -- Начало фильтра
    	<?php
    	$args = array(
            'post_type' => 'post',
            'meta_key' => $_GET['meta_key'],
    
            'meta_query' => array(
    	array(
    		'key' => 'select_type',
    		'value' => $_GET['type'],
    		'type' => 'text',
    		'compare' => 'IN'
    		),
    	array(
    		'key' => 'select_place',
    		'value' => $_GET['place'],
    		'type' => 'text',
    		'compare' => 'IN'
    		),
    	array(
    	'key' => 'shot_date',
    	'value' => array( (int)$_GET['min-date'], (int)$_GET['max-date'] ),
    	'type' => 'numeric',
    	'compare' => 'BETWEEN'
                )
            )
        );
        query_posts( $args ); ?>
    // -- Конец фильтра
    		<?php if (have_posts()) : ?>
    ------ Далее код вывода записей

    Сейчас страница загружается пустой, записи появляются только когда применить фильтр, но нужно чтобы при загрузке страницы были видны все записи, а уже после применения фильтра были видны записи согласно введенных данных формы. Вроде бы это можно сделать введя проверку заполненности полей формы через $GET, типа:

    if($_GET['type']){
    массив обработчик с функцией query_posts…
    }

    но у меня не получается, нужна помощь в правильном построении массива с проверкой полей.

  • Тема «Форма фильтр записей по произвольным полям» закрыта для новых ответов.