J'essaie de rechercher un type de publication personnalisé pour un système de galerie. J'ai une case à cocher pour définir une galerie en tant que galerie "en vedette" (configurée via le plugin More Fields) - si cette case est cochée, la méta-valeur devient 1, puis si elle n'est pas cochée, elle devient 0. Tout va bien. Cependant, si la case n'a jamais été cochée, la méta-clé n'est jamais créée, ce qui signifie que je ne peux pas rechercher NOT LIKE 1 car il n'existe pas.
La requête que je veux est de retirer 4 galeries qui ne sont pas marquées comme «1» dans cette méta-valeur, mais aussi celles qui n'ont pas cette valeur du tout. Existe-t-il un moyen de toujours donner aux publications nouvellement ajoutées une valeur par défaut pour cette clé méta (c.-à-d. Toujours les rendre 0 par défaut si la case n'est pas cochée) ou existe-t-il un moyen de rechercher la clé qui n'est pas encore définie?
Ma requête actuelle est:
$args = array(
'post_type' => 'gallery',
'showposts' => 4,
'meta_key' => 'gal-ID',
'order_by' => 'meta_value',
'order' => 'ASC',
'meta_query' => array( array(
'key' => 'main-gal',
'value' => false,
) ),
) );
Et j'ai essayé plusieurs tentatives avec 'compare' => 'NOT LIKE', '! =' Etc etc.
Des idées? Ce ticket semble impliquer que c'est quelque chose qui devrait être réglé:
http://core.trac.wordpress.org/ticket/18158
Merci!
la source
Selon les paramètres de champ personnalisés du Codex, une
NOT EXISTS
comparaison spéciale est disponible depuis WP version 3.5Techniquement, cela produit quelque chose comme la requête SQL suivante dans les demandes de publication:
Il fonctionne en joignant la méta-table sur la clé fournie et en sélectionnant uniquement les enregistrements où cela n'avait pas donné lieu à des données significatives (
IS NULL
). Donc, cela ne fonctionne que pour le cas où la clé n'existe pas du tout et ne fonctionnera pas pour les clés qui existent avec des valeurs fausses .la source
NOT EXISTS
comparaison. Pour contournersave_post
les méta-clés non définies , je sauvegarde simplement un 0 sur le crochet si la méta-clé n'est pas définie. Comment çaNOT EXISTS
marche? Va-t-il trier la requête de l'OP parmain-gal
, puis remplir le 4 avec les messages qui n'ont pas cette méta?Comme l'a souligné le ticket, il n'est pas pris en charge .. jusque-là, vous devrez compter sur une solution personnalisée.
Quelques utilisateurs l'ont déjà demandé, ou du moins demandé comment le faire sur les forums WordPress.org, j'ai donc écrit une fonction pour faire le travail que je n'ai jamais gardé (coller), heureusement j'ai trouvé le sujet d'origine où j'ai fourni le lien pastebin (qui ne devrait pas expirer).
http://pastebin.com/kgLt1RrG
Je l'ai écrit il y a 8 mois et je ne l'ai pas testé (depuis), alors faites-moi part de tout problème.
J'espère que cela pourra aider..
la source
La méthode la plus simple, mais pas la plus propre:
Cela vous donnera toutes vos galeries triées par la clé méta. L'étape suivante consiste à déterminer si les galeries avec la valeur 1 viennent après ou avant les autres publications. De cette façon, vous pouvez soit:
Autres méthodes ne nécessitant pas d'instruction SQL personnalisée:
la source