如果未选择任何内容,则TAX_QUERY不显示结果

时间:2016-11-25 作者:Notorious

我正在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,
                )

            ),
        )
    );
因此,只要确认在选择下拉菜单时搜索工作正常即可。但在我的例子中,如果未选择任何内容,我需要显示结果。有人知道如何做到这一点吗?谢谢你。

1 个回复
最合适的回答,由SO网友:GKS 整理而成

到目前为止,很好,通过检查suburbsstates 价值

// 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代码。它肯定会解决您的问题:)

相关推荐

Search results for ACF data

是否可以编写查询以仅从一个自定义字段中搜索数据?我有一个名为“讲座”的CPT,我只想搜索名为“关键字”的自定义字段中的数据,我有:<?php $args = array( \'post_type\' => \'lectures\', \'order\' => \'ASC\', \'posts_per_page\' => -1, \'