web-dev-qa-db-fra.com

L'utilisation de get_posts () avec le jeu de paramètres tax_query ne fonctionne pas avec les pièces jointes

Je travaille sur un projet qui nécessite de rechercher des pièces jointes avec une paire taxonomie-slug donnée (dans ce cas, category = javascript). J'utilise get_posts() avec tax_query défini pour y parvenir, mais il renvoie zilch.

Le tableau en cours de transmission à get_posts () est le suivant:

array(8) {
  ["tax_query"]=>
  array(1) {
    [0]=>
    array(3) {
      ["taxonomy"]=>
      string(8) "category"
      ["field"]=>
      string(4) "slug"
      ["term"]=>
      array(1) {
        [0]=>
        string(10) "javascript"
      }
    }
  }
  ["numberposts"]=>
  int(-1)
  ["orderby"]=>
  string(10) "menu_order"
  ["order"]=>
  string(3) "ASC"
  ["post_status"]=>
  string(7) "inherit" // 'any' also tried
  ["post_type"]=>
  string(10) "attachment"
  ["post_mime_type"]=>
  string(34) "application,video,text,audio,image"
  ["post_parent"]=>
  string(0) ""
}

Il y a une image dans la catégorie JavaScript (qui a javascript comme slug), mais elle n'est pas renvoyée.

En outre, si cela est pertinent, la catégorie est définie à l'aide de catégories de médias .

EDIT: post_status=>inherit et post_status=>any ont été essayés sans changement du résultat final.

EDIT 2: La création d'un nouvel objet WP_Query en omettant le meta_query crée un SQL valide, mais l'inclusion de meta_query ajoute ceci: AND 0 = 1, ce qui oblige évidemment la requête entière à ne rien retourner. Le code SQL complet généré est ci-dessous:

SELECT SQL_CALC_FOUND_ROWS  cms_posts.ID 
FROM cms_posts  
WHERE 1=1  
AND 0 = 1 
AND (
    cms_posts.post_mime_type 
    LIKE 'application/%' 
    OR cms_posts.post_mime_type 
    LIKE 'video/%' 
    OR cms_posts.post_mime_type 
    LIKE 'text/%' 
    OR cms_posts.post_mime_type 
    LIKE 'audio/%' 
    OR cms_posts.post_mime_type 
    LIKE 'image/%')  
AND cms_posts.post_type = 'attachment' 
AND (cms_posts.post_status <> 'trash' 
    AND cms_posts.post_status <> 'auto-draft' 
    AND cms_posts.post_status <> 'spam') 
GROUP BY cms_posts.ID 
ORDER BY cms_posts.menu_order 
ASC LIMIT 0, 10
1
Dan

Je ne sais pas si vous avez essayé, mais essayez d'ajouter post_status => inherit à votre requête. J'ai constaté que get_posts est défini par défaut sur publish et ne renverra donc aucune pièce jointe, car son post_status est toujours inherit. La page de codex sur get_posts le confirme.

Modifier: en regardant votre requête à nouveau, vous avez term dans le tax_query où il devrait être terms: http://codex.wordpress.org/Class_Reference/WP_Query#Taxonomy_Parameters

1
Manny Fleurmond