¡Espero poder explicarlo correctamente, así que aquí vamos!
Tengo una página de listado de propiedades que debe ordenarse antes de la fecha en que se publicó (los datos provienen de una API, por lo que no es la fecha de publicación de WP) y luego todas las propiedades vendidas deberían estar en el último lugar en la lista ordenada por cuándo. vendido con los más vendidos recientemente apareciendo primero en esa sub lista. El primer campo personalizado se llama listing_date y el otro es agreement_date.
¿Alguien sabe si este tipo de pedido es posible? Estaba pensando que podría necesitar usar 2 consultas, pero eso significaría que no podría usar la paginación con esa solución. Aquí está mi intento fallido más reciente.
<?php
$args = array(
'post_type' => 'listing',
'posts_per_page' => 10,
'paged' => $paged,
'tax_query' => array(
array(
'taxonomy' => 'listingcategory',
'field' => 'slug',
'terms' => 'commercial',
),
),
'orderby' => array(
'agreed_date' => 'ASC',
'listing_date' => 'DESC'
),
);
$listing_posts = new WP_Query($args);
¡Gracias!
Código actualizado:
$args = array(
'post_type' => 'listing',
'posts_per_page' => 10,
'paged' => $paged,
'tax_query' => array(
array(
'taxonomy' => 'listingcategory',
'field' => 'slug',
'terms' => 'commercial',
),
'meta_query' => array(
'relation' => 'AND',
'listing_date_clause' => array(
'key' => 'listing_date',
'compare' => 'EXISTS',
),
'agreed_date_clause' => array(
'key' => 'agreed_date',
'compare' => 'EXISTS',
),
),
),
'orderby' => array(
'listing_date_clause' => 'DESC',
'agreed_date_clause' => 'DESC'
),
);