web-dev-qa-db-ja.com

カスタム投稿タイプとカスタム分類法WP_Query

カスタム分類法を使用してカスタム投稿タイプを追加し、すべての投稿をテンプレートでこれに追加したいのですが、結果は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);

SQLクエリに従います(理由はわかりません)。

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

ここで何がおかしいのですか?

1
WPler

tax_querytaxonomyfield、およびtermsは、1つではなく2つの配列レベルの深さでなければなりません。 WP_Queryページ から引用。

重要な注意:tax_queryはtaxクエリ引数の配列を受け取ります(配列の配列を受け取ります) - これは以下の2番目の例で見ることができます。この構成により、最初の(外側の)配列のrelationパラメーターを使用して分類法照会間のブール関係を記述することによって、複数の分類法を照会することができます。

それで、あなたの議論は次のように叫ぶべきです:

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

とにかくデフォルト値なので'post_status' => 'publish'を省略することができます。

2
RRikesh