我正试图打印出每个分类法中的所有帖子,其中包含一个名为product
(jigoshop产品)。所以我用$cats = get_terms(\'product_cat\');
, 然后我循环遍历它们,并获得分类法中的所有帖子。问题是,它不起作用。它只是返回空白!
$uposts = get_posts(array(
\'post_type\' => \'product\',
\'numberposts\' => -1,
\'tax_query\' => array(
\'taxonomy\' => $cat->taxonomy,
\'field\' => \'slug\',
\'terms\' => array($cat->slug),
\'operator\' => \'IN\'
)
));
如果我更改
\'terms\' => array($cat->slug)
到
\'terms\' => $cat->slug
它返回所有帖子,就好像它完全忽略了tax\\u查询一样。
你知道是什么导致这个失败的吗?我试过和operator
, 正在更改field
至ID(同时发送$cat->ID
作为术语)。。。什么都不管用!
$cat具有以下值:
stdClass Object
(
[term_id] => 114
[name] => Ny testkategori
[slug] => ny-testkategori
[term_group] => 0
[term_taxonomy_id] => 115
[taxonomy] => product_cat
[description] =>
[parent] => 0
[count] => 2
[meta_id] => 3
[jigoshop_term_id] => 114
[meta_key] => order
[meta_value] => 1
)
所以$cat->slug和$cat->分类法是有效的值。
最合适的回答,由SO网友:Vinod Dalvi 整理而成
tax\\u query采用tax查询参数数组(它采用数组数组),但您只使用单个数组。正确的代码如下所示。
$uposts = get_posts(
array(
\'post_type\' => \'product\',
\'numberposts\' => -1,
\'tax_query\' => array(
array(
\'taxonomy\' => $cat->taxonomy,
\'field\' => \'slug\',
\'terms\' => array($cat->slug),
\'operator\' => \'IN\',
)
)
)
);
有关更多信息,请访问
this page.