web-dev-qa-db-fra.com

meta_query compare> = ne fonctionne pas mais <= fonctionne?

J'essaye d'exécuter le code suivant:

$today123 = date('Ymd');
$args123 = array (
        'post_type' => 'myType',
        'meta_query' => array(
            'relation'=>'AND',
            array(
                'key'       => 'date',//this is a custom field, not the std 'date' field of wp
                'compare'   => '>=',
                'value'     => $today123,
            )
        ),
        'posts_per_page' => 10,
        'orderby' => 'meta_value_num',
        'order' => 'ASC' 
);
$variable=new WP_Query($args123);

pour filtrer mon type de message personnalisé en fonction d'un champ personnalisé, j'utilise la requête dans une boucle comme prévu et je vérifie la sortie avec un couple de var_export

la requête ignore complètement ma meta_query (j'ai essayé de supprimer la commande byby mais même sans elle, la méta-requête n'est tout simplement pas appliquée)

donc j'ai trempé un peu avec le code et la caisse divers résultats dans diverses situations et j'ai découvert quelque chose,

si utilisation

'compare'   => '>=',

il est ignoré, et il renvoie tous les messages, même ceux qui ne possèdent pas

'meta_date' >= date('Ymd')

mais si j'utilise exactement le même code, en mettant

'compare'   => '<=',

comme par magie, le filtre est appliqué et fonctionne comme je le souhaiterais </ compare au travail.

Il se peut que je manque quelque chose ici. Je dois récupérer les posts 'myType' qui ont une valeur de meta_date supérieure ou égale à la date ('Ymd') et les trier par méta_data dans un ordre ASC ...

Pourquoi comparer '<=' fonctionne et comparer '> =' ne fonctionne pas? Comment puis-je atteindre mon résultat souhaité?

MODIFIER:

"Drôle" découverte: si je ne commande pas et commande, comparez> = fonctionne ...

1
Yuri Scarbaci

Après une enquête complète et beaucoup plus de débogage et de modification du code, j'ai découvert que l'utilisation de "date" comme nom de champ méta générait beaucoup de "confusion" dans la requête wordrpess elle-même comme wordpress "Pour éviter tout cela, la solution consiste simplement à changer le nom du métafield de date en méta_date, ce qui permet à toute la requête sur le champ de fonctionner comme prévu!

2
Yuri Scarbaci