基本上,如果存在多个变量,我要做的是过滤我的查询,以便我可以进行如下设置:
我可以用 来做到这一点query_posts()
,但我知道这是一种糟糕的做法。到目前为止,我已经注册了几个我需要使用的查询变量,我想我只需要知道如何将它们包含在查询中。显然我正在使用的只是不起作用。
// Add query vars for filtering by specific category ids
add_filter('query_vars', 'add_vars');
function add_vars($new_query_vars) {
$new_query_vars[] = 'speaker_id';
$new_query_vars[] = 'book_id';
return $new_query_vars;
}
// Filter posts if query vars are present
function vars_filter($query) {
if ( !is_admin() && $query->is_main_query() ) {
$query_book = get_query_var('book_id');
$query_speaker = get_query_var('speaker_id');
if(isset($query_book) || isset($query_speaker)) {
$cats = array($query_book, $query_book);
$query->set('cat', implode(",", $cats));
}
}
}
add_action('pre_get_posts','vars_filter');
我不完全是做这种事情的专家。我以前从未使用pre_get_posts
过,所以我有点失落。任何帮助将非常感激。
谢谢!
编辑
我也试过用这个:
$query_book = $query->query['book_id'];
$query_speaker = $query->query['speaker_id'];
没有太大的成功...