我正在WordPress上创建一个房地产网站,我正在创建一个自定义搜索,并使用tax\\u 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,
)
),
)
);
因此,只要确认在选择下拉菜单时搜索工作正常即可。但在我的例子中,如果未选择任何内容,我需要显示结果。有人知道如何做到这一点吗?谢谢你。
最合适的回答,由SO网友:GKS 整理而成
到目前为止,很好,通过检查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代码。它肯定会解决您的问题:)