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; ?>

Где и как я могу создать форму поиска, чтобы отфильтровать свойства по типу 'property_type' и 'location'.

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 имя фильтра:-)

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

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

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

Если вы хотите выполнить поиск по тому же шаблону страницы, вы можете добиться этого, используя таблицу данных 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();

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

Другие вопросы по тегам