налоговый запрос не показывает результатов, если ничего не выбрано


Я создаю сайт недвижимости на WordPress, создаю пользовательский поиск и использую tax_query для фильтрации результатов поиска для отображения "Штатов" и "Пригородов".

Поиск работает нормально, когда выбраны параметры. Однако, если ничего не выбрано, результаты поиска вообще не будут отображаться. Это проблема с веб-сайтом недвижимости, потому что чаще всего пользователь может выбрать "Штат", но не "Пригород", или, возможно, вообще ничего.

Существует ли правильный способ или как я должен это сделать, чтобы результаты показывали, если ничего (или одно или другое) не выбрано.

Вот мой раскрывающийся список выбора пригородов:

<!-- Suburbs dropdown -->
            <select name="suburbs">

                <option value="any" selected>Any</option>

                <?php

                $suburb_terms = get_terms(array(
                    'taxonomy' => 'suburb',
                    'hide_empty' => true,
                    'orderby' => 'name',
                ) );

                foreach( $suburb_terms as $term ) {
                    echo '<option value="' . $term->slug . '">' . $term->name . '</option>';
                }

                ?>

            </select>

И обработка формы:

// Suburbs
    if( !empty( $_GET['suburbs'] ) ) {
        $suburbs = $_GET['suburbs'];
    }

    // States
    if( !empty( $_GET['states'] ) ) {
        $states = $_GET['states'];
    }


    // the query
    $property_query = new WP_Query(
        array(
            'post_type'      => 'properties',
            'posts_per_page' => 10,
            'tax_query'      => array(

                array(
                    'taxonomy' => 'state',
                    'field' => 'slug',
                    'terms' => $states,
                ),
                array(
                    'taxonomy' => 'suburb',
                    'field' => 'slug',
                    'terms' => $suburbs,
                )

            ),
        )
    );

Поэтому просто для подтверждения того, что поиск работает нормально, когда выбраны выпадающие списки. Но в моем случае мне нужны результаты для отображения, если ничего не выбрано. Кто-нибудь знает, как этого добиться? Спасибо.

Author: Notorious, 2016-11-25

1 answers

Пока все хорошо, добавьте условие таксономии, проверив значения suburbs и states.

// Suburbs
if( !empty( $_GET['suburbs'] ) ) {
    $suburbs = $_GET['suburbs'];
}

// States
if( !empty( $_GET['states'] ) ) {
    $states = $_GET['states'];
}

// Query arguments.
$args = array(
            'post_type'      => 'properties',
            'posts_per_page' => 10,
        );

$taxquery = array();

// if $state variable is selected.
if(!empty($states) || isset($suburbs)  ){
    array_push($taxquery,array(
            'taxonomy' => 'state',
            'field' => 'slug',
            'terms' => $states,
        ));
}

// if $suburbs variable is selected.
if(!empty($suburbs) || isset($suburbs) ) ){
    array_push($taxquery,array(
            'taxonomy' => 'suburb',
            'field' => 'slug',
            'terms' => $suburbs,
        ));
}

// if $taxquery has array;
if(!empty($taxquery)){
    $args['tax_query'] = $taxquery;
}

// And finally fetch the all post.
$property_query = new WP_Query($args);

Замените свой PHP-код этим. Это определенно решит вашу проблему:)

 3
Author: Govind Kumar, 2016-11-25 13:42:06