it-swarm.com.de

WP Meta-Abfrage für einen benutzerdefinierten Beitragstyp basierend auf zwei Werten

Ich hoffe, Sie können mir helfen und mir einen Tipp zu etwas geben, das ich erreichen möchte und das kläglich scheitert.

Ich arbeite an einem WordPress-Immobilienmotiv - Immobilien. Hier ist der Link zur Website: https://lnobrerealestate.pt/

Was ich versuche zu erreichen, ist, zwei Abschnitte mit vorgestellten Eigenschaften zu haben, einen für Verkäufe und einen für Mieten.

Dazu muss ich die Abfrage ändern, die die Posts erhält. Die ursprüngliche Abfrage, die eine Liste der vorgestellten Eigenschaften abruft, lautet:

/* Featured Properties Query Arguments */
$featured_properties_args = array(
    'post_type'         => 'property',
    'posts_per_page'    => 12,
    'meta_query'        => array(
        array(
            'key'       => 'REAL_HOMES_featured',
            'value'     => 1,
            'compare'   => '=',
            'type'      => 'NUMERIC'
        )
    )
);

Diese Abfrage ruft die ersten 12 Eigenschaften ab, die als gekennzeichnet gekennzeichnet sind. Was ich hinzufügen muss, ist eine andere Bedingung, die prüfen würde, ob der Eigentumsstatus "Zum Verkauf" oder "Zur Miete" ist.

Mit dieser Abfrage kann ich eine Reihe von Eigenschaftsstatus abrufen:

        $property_status_terms = get_terms(array(
                'taxonomy'   => "property-status",
                'orderby'    => 'name',
                'order'      => 'ASC',
                'hide_empty' => false
            )
        );

        if (! empty($property_status_terms)) {
            foreach ($property_status_terms as $property_status) {
                echo '<p>' . $property_status->name . '</p>';
            }
        }

Ich denke also, dass ich basierend auf diesen beiden Abfragen Folgendes tun kann:

/* Featured Properties Query Arguments */
    $featured_properties_args = array(
        'post_type'         => 'property',
        'posts_per_page'    => 12,
        'meta_query'        => array(
            'relation' => 'AND',
            array(
                'key'       => 'REAL_HOMES_featured',
                'value'     => 1,
                'compare'   => '=',
                'type'      => 'NUMERIC'
            ),
            get_terms(array(
            'taxonomy'       => 'property-status',
            'value'     => array('For Rent', 'Arrendamento'),
            'compare'   => 'IN',
             )
             )
        )
    );

Ich vergleiche die Anzahl der Immobilienstatus mit zwei Werten - für Miete im Fall von Englisch und Arrendamento im Fall von Portugiesisch.

Diese Abfrage führt nicht zu dem, was ich erreichen möchte, und ich kann nicht abrufen, was ich hier vermisse. Scheint ganz einfach zu sein.

Ich hoffe, Sie können mir einen Vorschlag machen.

Vielen Dank

1

OK, das ist ein kleines Beispiel für das, was ich "Wunschcodierung" nenne;)

get_terms(array(
    'taxonomy'       => 'property-status',
    'value'     => array('For Rent', 'Arrendamento'),
    'compare'   => 'IN',
) )

Sie verwenden hier die Funktion get_terms

Rufen Sie die Begriffe in einer bestimmten Taxonomie oder Liste von Taxonomien ab.

Und Sie verwenden dies im meta_query-Teil einer Abfrage, mit der benutzerdefinierte Felder abgefragt werden.

Es gibt also keine Möglichkeit, irgendetwas zu tun ... Bedingungen sind keine gültigen meta_query-Abfragen ...

Aber natürlich kann es gemacht werden ... Alles, was Sie tun müssen, ist, die Dokumente auf WP_Query zu überprüfen ...

Du hast das schon:

$featured_properties_args = array(
    'post_type'         => 'property',
    'posts_per_page'    => 12,
    'meta_query'        => array(
        array(
            'key'       => 'REAL_HOMES_featured',
            'value'     => 1,
            'compare'   => '=',
            'type'      => 'NUMERIC'
        )
    )
);

und Sie wissen, es bringt Ihnen vorgestellten Eigenschaften. Alles, was Sie tun müssen, ist, Ihre Steuerabfrage dort hinzuzufügen:

$featured_properties_args = array(
    'post_type'         => 'property',
    'posts_per_page'    => 12,
    'meta_query'        => array(
        array(
            'key'       => 'REAL_HOMES_featured',
            'value'     => 1,
            'compare'   => '=',
            'type'      => 'NUMERIC'
        )
    ),
    'tax_query'         => array(
        array(
            'taxonomy'  => 'property-status',
            'field'     => 'name',
            'terms'     => array('For Rent', 'Arrendamento'),
        )
    ) 
);
0