web-dev-qa-db-fra.com

Type de message personnalisé et taxonomie personnalisée WP_Query

J'ajoute un type d'article personnalisé avec une taxonomie personnalisée et je souhaite obtenir toutes les publications dans ce modèle, mais le résultat est 0

$args=array(
  'post_type' => 'contents',
  'post_status' => 'publish',
  'tax_query' => array(
      'taxonomy' => 'content-category',
      'field' => 'id',
      'terms' => array(5,26,28)
  ),
  'meta_key' => 'fs16'
);
$query = new WP_Query($args);

La requête SQL est suivie (je ne sais pas pourquoi):

SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts INNER JOIN wp_postmeta ON (wp_posts.ID = wp_postmeta.post_id) JOIN wp_icl_translations t ON wp_posts.ID = t.element_id AND t.element_type = 'post_contents' JOIN wp_icl_languages l ON t.language_code=l.code AND l.active=1 WHERE 1=1 AND 0 = 1 AND wp_posts.post_type = 'contents' AND (wp_posts.post_status = 'publish') AND (wp_postmeta.meta_key = 'fsk16' ) AND t.language_code='en' GROUP BY wp_posts.ID ORDER BY wp_posts.post_date DESC LIMIT 0, 10

Qu'est-ce qui ne va pas ici?

1
WPler

Les taxonomy, field et terms dans tax_query doivent avoir une profondeur de deux niveaux au lieu d'un. Citation de la page WP_Query :

Remarque importante: tax_query prend un tableau de tableaux d'arguments de requête de taxe (il faut un tableau de tableaux) - vous pouvez le voir dans le deuxième exemple ci-dessous. Cette construction vous permet d'interroger plusieurs taxonomies en utilisant le paramètre de relation du premier tableau (externe) pour décrire la relation booléenne entre les requêtes de taxonomie.

Donc, vos arguments devraient être comme:

$args = array(
    'post_type' => 'contents',
    'tax_query' => array(
        array(
               'taxonomy' => 'content-category',
               'field' => 'id',
               'terms' => array(5,26,28)
        )
    ),
        'meta_key' => 'fs16'
);

Vous pouvez omettre 'post_status' => 'publish' car c'est la valeur par défaut utilisée de toute façon.

2
RRikesh