webentwicklung-frage-antwort-db.com.de

tax_query zeigt keine Ergebnisse an, wenn nichts ausgewählt ist

Ich erstelle eine Immobilienwebsite in WordPress, erstelle eine benutzerdefinierte Suche und verwende tax_query, um Suchergebnisse zu filtern und "Bundesstaaten" und "Vororte" anzuzeigen.

Die Suche funktioniert einwandfrei, wenn Optionen ausgewählt sind. Wenn jedoch nichts ausgewählt ist, werden überhaupt keine Suchergebnisse angezeigt. Dies ist ein Problem mit einer Immobilienwebsite, da ein Benutzer häufig einen "Bundesstaat", aber nicht den "Vorort" oder gar nichts auswählen kann.

Gibt es einen korrekten Weg, oder wie soll ich vorgehen, damit die Ergebnisse angezeigt werden, wenn nichts (oder das eine oder andere) ausgewählt ist?.

Hier ist meine Auswahlliste für Vororte:

<!-- 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>

Und die Bearbeitung des Formulars:

// 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,
                )

            ),
        )
    );

Nur um zu bestätigen, dass die Suche funktioniert, wenn Dropdowns ausgewählt sind. Aber in meinem Fall brauche ich Ergebnisse, um anzuzeigen, ob nichts ausgewählt ist. Weiß jemand, wie man das erreicht? Vielen Dank.

2
Notorious

Fügen Sie die Taxonomiebedingung hinzu, indem Sie die Werte für suburbs und states überprüfen.

// 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);

Ersetzen Sie Ihren PHP Code durch diesen. Es wird definitiv Ihr Problem lösen :)

2
Govind Kumar