J'essaie de filtrer certaines publications dans WP_Query
, mais je n'arrive pas à obtenir le bon état. Ce que je veux faire, en gros, est d’obtenir les publications qui ont le champ personnalisé event_data
(trié par ce champ) et parmi ces publications de ne sélectionner que celles qui ont rempli un de ces champs event_doc1
, event_doc2
, event_doc3
, main_doc
.
Le code est ci-dessous.
$metaCondition = array(
'relation' => 'OR',
array(
'key' => 'main_doc',
'value' => 0,
'compare' => '!=',
'type' => 'NUMBER'
),
array(
'key' => 'event_doc1',
'value' => 0,
'compare' => '!=',
'type' => 'NUMBER'
),
array(
'key' => 'event_doc2',
'value' => 0,
'compare' => '!=',
'type' => 'NUMBER'
),
array(
'key' => 'event_doc3',
'value' => 0,
'compare' => '!=',
'type' => 'NUMBER'
)
);
$query = array(
'numberposts' => 4,
'orderby' => 'meta_value',
'meta_key' => 'event_data',
'order' => 'ASC',
'meta_query' => $metaCondition
);
Merci d'avance à tout le monde!
Désolé, ça ne marche pas comme ça. Les méta-paramètres "simples" sont convertis en une partie de la méta_query dans son ensemble. Donc, ce n'est pas une chose séparée, et votre relation {OR s'applique également à cette relation.
Votre requête n’est donc pas possible avec le système de requête normal, car vous voulez mélanger des ET avec des OR (vous voulez des éléments qui ont event_data ANDed avec un tas d’autres avec des OR entre eux).
Vous devrez recourir à un code SQL personnalisé ou à repenser votre conception.