web-dev-qa-db-fra.com

WP Méta requête pour un type d'article personnalisé basé sur deux valeurs

J'espère que vous pourrez m'aider et me donner un conseil sur quelque chose que j'essaie de réaliser et échouer lamentablement.

Je travaille sur un thème immobilier WordPress - Real homes. Voici le lien vers le site: https://lnobrerealestate.pt/

Ce que j'essaie de faire, c'est d'avoir deux sections avec des propriétés en vedette, une pour les ventes et une pour les locations.

Donc, pour ce faire, je dois changer la requête qui obtient les posts. La requête d'origine qui obtient une liste des propriétés en vedette est la suivante:

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

Cette requête obtient les 12 premières propriétés marquées comme étant décrites. Ce que je dois ajouter, c'est une autre condition permettant de vérifier si le statut de la propriété est "À vendre" ou "À louer".

Je peux obtenir un tableau des statuts de propriété avec cette requête:

        $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>';
            }
        }

J'ai donc pensé que, sur la base de ces deux requêtes, je pouvais faire ce qui suit:

/* 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',
             )
             )
        )
    );

Je compare le tableau des statuts de propriété avec deux valeurs - à louer pour l'anglais et Arrendamento pour le portugais.

Cette requête n'aboutit pas à ce que j'essaie de réaliser et je ne peux pas obtenir ce qui me manque ici. Semble assez simple.

J'espère que vous pourrez me faire une suggestion.

Merci

1
Vitaly Svidersky

OK, c’est un petit exemple de ce que j’appelle le "codage à souhait";)

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

Vous utilisez get_terms fonction ici, qui va

Récupérer les termes dans une taxonomie ou une liste de taxonomies donnée.

Et vous utilisez ceci à l'intérieur de la partie meta_query d'une requête, qui est utilisée pour interroger des champs personnalisés.

Il n’ya donc aucun moyen de faire quoi que ce soit ... Les termes ne sont pas des requêtes meta_query valables ...

Mais bien sûr, cela peut être fait ... Tout ce que vous avez à faire est de vérifier les documents pour WP_Query ...

Vous avez déjà ceci:

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

et vous savez que vous obtenez les propriétés en vedette. Donc, tout ce que vous avez à faire est d’ajouter votre requête fiscale à cet endroit:

$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
Krzysiek Dróżdż