问题描述
我尝试使用以下代码在 pre_get_posts 钩子上添加税务查询:
// Add custom posts to main query (archive and home)
add_action( 'pre_get_posts', 'add_post_types_to_query' );
function add_post_types_to_query( $query ) {
if ( (is_home() || is_category() || is_search()) && $query->is_main_query() && !is_admin() )
{
// Query all posts on index and category pages
$query->set( 'post_type', array( 'post', 'page', 'definition', 'video', 'data_vizualization', 'quizz', 'talk', 'question', 'study', 'bibliography' ) );
$workspace_taxonomy_query =
array(array(
'taxonomy ' => 'workspace',
'field' => 'slug',
'terms' => array('particulier'),
'operator' => 'IN'
));
$query->tax_query->queries[] = $workspace_taxonomy_query;
$query->set( 'tax_query', $workspace_taxonomy_query);
}
return $query;
}
此代码给出以下 where 子句:「0 = 1」 。哪里不对?这是好钩吗?在主查询完成之前,如何正确添加分类过滤器?
感谢提前答复!
最佳解决方案
你有一个 syntax-ish 错误,或一个拼写错误。 tax_query
阵列中的”taxonomy” 之后有一个空格。如果这是它的总和,我会发表评论,但另外 $query->tax_query->queries[] = $workspace_taxonomy_query;
线是毫无意义的。没有或没有变化。不要试图破坏阵列。只需使用 $query->set( 'tax_query', $workspace_taxonomy_query);
如下 (使用我的测试环境中存在的分类法和术语):
// Add custom posts to main query (archive and home)
add_action( 'pre_get_posts', 'add_post_types_to_query' );
function add_post_types_to_query( $query ) {
if ( (is_home() || is_category() || is_search()) && $query->is_main_query() && !is_admin() )
{
// Query all posts on index and category pages
$query->set( 'post_type', array( 'post', 'page', 'definition', 'video', 'data_vizualization', 'quizz', 'talk', 'question', 'study', 'bibliography' ) );
$workspace_taxonomy_query =
array(
array(
'taxonomy' => 'post_tag',
'field' => 'slug',
'terms' => array('test-4'),
'operator' => 'IN'
)
);
$query->tax_query->queries[] = $workspace_taxonomy_query;
}
return $query;
}
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。