J'ai deux types de messages, nouvelles et événements :
Je souhaite afficher des actualités et des événements , idéalement avec une seule requête.
Un fait important est que les événements doivent être commandés avant le date de fin et que seuls les événements futurs ou actuels doivent être affichés.
Voici la requête que j'essaye:
$args = array(
'post_type' => array( 'news', 'events' ),
'meta_key' => 'end-date',
'orderby' => 'meta_value',
'order' => 'ASC',
'meta_query' => array(
array(
'key' => 'end-date',
'value' => date ( 'Ymd' ),
'type' => 'NUMERIC',
'compare' => '>='
)
)
);
Cela fonctionne très bien pour les événements seuls, mais pas lorsque j'ajoute des nouvelles aux types de poste.
Le problème semble être que j'ai spécifié les paramètres 'meta_key' et 'meta_query' qui ne sont présents que sur les événements , de sorte que tous les les nouvelles sont omises dans les résultats.
Ma question est donc la suivante: existe-t-il un moyen de cibler un méta_query sur un post_type spécifique dans une même requête?
Vous pouvez ajouter un autre tableau dans votre méta_query pour inclure toutes les publications de votre deuxième type de publication.
Dans votre exemple, vous avez 2 types de message
Si vous pouvez choisir un meta_key
qui n'existe que pour news
mais n'existe pas sur events
, cet ensemble d'arguments renverra tous les types de publication d'articles et continuera à filtrer les événements.
$args = array(
'post_type' => array( 'news', 'events' ),
'meta_key' => 'end-date',
'orderby' => 'meta_value',
'order' => 'ASC',
'meta_query' => array(
array(
'key' => 'end-date',
'value' => date ( 'Ymd' ),
'type' => 'NUMERIC',
'compare' => '>='
),
array(
'key' => 'my_unique_key_for_news',
'compare' => 'EXISTS'
),
'relation' => 'OR',
)
);
Le relation => OR
est important. Il est indiqué que les résultats correspondant à votre end-dates
correspondant à >=
aujourd'hui, OR et tous les éléments correspondant à la clé pour news
(ce qui correspond à tous les éléments d'actualité) doivent être renvoyés.
De cette façon, vous obtenez des informations spécifiques sur les méta_valeurs des événements, mais vous renvoyez tous les résultats pour les actualités, ce qui permet au filtre de conserver le type de deuxième message seul.