我正在尝试修改the_loop
插件的输出。我已经调查过了pre_get_posts
, 这肯定有效,但我需要通过自定义分类法过滤循环。我可以用$query->set(\'tax_query\',$my_tax_new_query)
, 但问题是,这会覆盖以前可能已设置的任何分类查询。它应用了我的查询INSTEAD 前一个查询的IN ADDITION TO IT. 如何在不删除之前的查询的情况下向循环应用额外的分类过滤器?
编辑:
例如:
function myplugin_filter_the_loop($query) {
$taxonomy = \'hobbies\';
$exclude_terms = array(\'biking\',\'swimming\',\'horsebackriding\');
$query->set(\'tax_query\',$exclude_terms)
}
add_filter(\'pre_get_posts\',\'myplugin_filter_the_loop\');
这是可行的,但它将取代以前定义的
tax_query
在循环中。
编辑2:
替代使用posts_where
:
function myplugin_filter_the_loop($where) {
$relationship_ids = array(97,98,99);
foreach ( $relationship_ids as $id ) :
$where .= " AND ( wp_posts.ID NOT IN ( SELECT object_id FROM wp_term_relationships WHERE term_taxonomy_id IN ($id)"
endforeach;
}
add_filter(\'posts_where\',\'myplugin_filter_the_loop\');
为了实现这一点,我只需要通过term\\u id或slug等获得相应的关系id。