1

基本的に、私がやろうとしているのは、いくつかの変数が存在する場合にクエリをフィルタリングして、次のように設定できるようにすることです。

投稿フィルターのモックアップ

でこれを行うことができますが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'];

あまり成功せずに...

4

0 に答える 0