it-swarm.com.de

Benutzerdefinierter Beitragstyp und benutzerdefinierte Taxonomie WP_Query

Ich füge einen benutzerdefinierten Beitragstyp mit benutzerdefinierter Taxonomie hinzu und möchte alle Beiträge über eine Vorlage in diese einbinden, aber das Ergebnis ist 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);

Die SQL-Abfrage wird befolgt (ich weiß nicht warum):

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

Was läuft hier falsch?

1
WPler

Die taxonomy, field und terms in tax_query sollten nicht nur eine, sondern zwei Array-Ebenen tief sein. Zitiert von der WP_Query-Seite :

Wichtiger Hinweis: tax_query akzeptiert ein Array von Steuerabfrageargumenten (es benötigt ein Array von Arrays) - dies sehen Sie im zweiten Beispiel unten. Mit diesem Konstrukt können Sie mehrere Taxonomien abfragen, indem Sie den Relationsparameter im ersten (äußeren) Array verwenden, um die boolesche Beziehung zwischen den Taxonomieabfragen zu beschreiben.

Also sollten Ihre Argumente so lauten:

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

Sie können 'post_status' => 'publish' weglassen, da dies der ohnehin verwendete Standardwert ist.

2
RRikesh