Wordpress,如果存在自定义查询变量,则过滤帖子。 (pre_get_posts,add_vars)

时间:2013-08-09 15:03:23

标签: wordpress wordpress-theming filtering posts

基本上,我想要做的是过滤我的查询,如果存在多个变量,那么我可以设置这样的设置:

Posts Filter Mockup

我可以用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'];

没有太大的成功......

0 个答案:

没有答案