J'utilise des types d'article personnalisé pour afficher les propriétés et un champ de prix personnalisé est attribué à chaque article. Sur la page de propriétés, je souhaite afficher une liste de quatre propriétés de même prix, deux inférieures ou égales au prix de la propriété actuelle et deux supérieures au prix actuel. Avec wp_query, commander numériquement des propriétés par prix est assez facile, mais comment puis-je uniquement afficher les valeurs les plus proches du prix de la propriété actuelle?
Une possibilité est une requête SQL directe similaire à celle donnée ici .
Mais je ne suis pas convaincu que ce serait beaucoup plus efficace que 2 requêtes, toutes gérées par WordPress:
Le n'est pas testé
$price =0; //Price of current property
$id=0; //Property (post) ID.
$args = array(
'post_type' => 'property',
'post__not_in'=>array($id),
'posts_per_page'=> 2,
'meta_query' => array(array(
'key' => 'price',
'value' => $price,
'type' => 'numeric',
'compare' => '>='
)),
'meta_key'=> 'price',
'orderby'=>'meta_value_num',
'order'=>'ASC'
);
$two_above = get_posts($args);
//Put their IDs along with current property ID in an array
$ids = array_values(wp_list_pluck($two_above, 'ID'));
array_Push($ids, $id);
//Exclude returned properties and current property from next query
$args['post__not_in'] = $ids;
$args['meta_query']['compare'] = '<=';
$args['order'] = 'DESC';
$two_below = get_posts($args);