WordPress: расширенный поиск настраиваемых типов записей и настраиваемых полей

У меня следующая проблема. Я пытаюсь создать сайт о недвижимости с помощью wordpress. Я создал настраиваемый тип сообщения и включил следующие поля с дополнительными настраиваемыми полями: Тип объявления (выберите: Продажа, Аренда), Тип собственности (выберите: Квартира, Дом), Цена (Число), Город (тип поля: Выбрать)

У меня есть следующий запрос для получения значений:

<?php
  $args = array(
            'post_type' => 'properties',
            'posts_per_page' => 10,
            'posts_per_page' => -1,
            'meta_query' => array(
                    array(
                        'key'     => 'property_type',
                        'value'   => 'Apartment',
                    ),
                ),
        );
  $loop = new WP_Query( $args );
  while ( $loop->have_posts() ) : $loop->the_post();
  ?>
  <?php
    $property_type = get_field('property_type');
            $property_price = get_field('price');
            $property_location = get_field('location');
            $property_description = get_field('description');
    ?>
    <div class="propert_list">
        <h1><?php the_title(); ?></h1>
        <div class="property_type">
            Location - <strong><?php echo $property_type; ?></strong>
        </div>
        <div class="property_price">
            Price - <strong><?php echo $property_price; ?></strong>
        </div>
        <div class="property_location">
            Location - <strong><?php echo $property_location['address']; ?></strong>
        </div>
        <div class="property_description">
            Property Description - <strong><?php echo $property_description; ?></strong>
        </div>
    </div>
    <br /><hr />
    <?php endwhile; ?>

Где и как я могу создать форму поиска для фильтрации свойств по типу свойства и местоположению.


person Dpetrov    schedule 01.02.2016    source источник


Ответы (3)


Одно из решений - установить Search & Filter. Он позволяет фильтровать поиск по заданному типу / ам сообщениям, метаполям и т. Д. И является очень мощным. Минус в том, что за версию Pro, возможно, придется заплатить.

Другим решением может быть добавление скрытых полей ввода в форму поиска PHP. Например:

<input type="hidden" name="post_type[]" value="properties" />

чтобы искать только свойства и делать то же самое для фильтрации ваших мета-значений. Это легко реализовать, но менее гибко, и я все равно предпочитаю разделять свои представление и логику.

Третье решение - использовать фильтр pre_get_posts. Тогда вы могли бы написать, например,

if ( $post_types ) $query->set( 'post_type', 'properties' );

… И так далее внутри этого фильтра. Есть много примеров, показывающих, как это сделать. Просто поищите в Google название фильтра :-)

person chrisriis    schedule 01.02.2016

Если вы хотите выполнить поиск по одному и тому же шаблону страницы, вы можете добиться этого с помощью таблицы данных HTML с возможностью поиска и JavaScript. Просто инкапсулируйте свои значения в таблицу. Вы можете сослаться на эти ссылки в качестве примера кода:

http://www.vijayjoshi.org/2011/01/03/searching-text-in-a-html-table-using-jquery/

а также

https://www.datatables.net/examples/data_sources/js_array.html

Я также заметил, что вы забыли сбросить запрос wp. Всегда безопасно заканчивать на wp_reset_query();

Надеюсь, вам это поможет.

person Amar Pratap    schedule 01.02.2016

Почему бы вам не использовать для этого плагин?

попробуйте: https://wordpress.org/plugins/ultimate-wp-query-search-filter/

Это было бы идеально ..

person Bilal Hussain    schedule 01.02.2016