我添加了一个具有自定义分类法的自定义帖子类型,并希望通过模板将所有帖子都添加到此类型中,但结果是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
这里怎么了?
SO网友:RRikesh
这个taxonomy
, field
和terms
在里面tax_query
应该是两个数组级别的深度,而不是一个。引用自WP_Query page:
重要提示:tax\\u query采用tax查询参数数组(它采用数组数组)-您可以在下面的第二个示例中看到这一点。此构造允许您通过使用第一个(外部)数组中的关系参数来描述分类查询之间的布尔关系来查询多个分类。
所以,你的论点应该是:
$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\'
因为它是使用的默认值。