налоговый запрос не показывает результатов, если ничего не выбрано
Я создаю сайт недвижимости на 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,
)
),
)
);
Поэтому просто для подтверждения того, что поиск работает нормально, когда выбраны выпадающие списки. Но в моем случае мне нужны результаты для отображения, если ничего не выбрано. Кто-нибудь знает, как этого добиться? Спасибо.
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-код этим. Это определенно решит вашу проблему:)