add_action( 'init', 'my_init' );
function my_init() {
    global $wp;
    $wp->add_query_var( 'y' );
}
add_action( 'pre_get_posts', 'my_pre_get_posts' );
function my_pre_get_posts( $query ) {
    if ( $query->is_page('season') && is_main_query()) {

        $year = get_query_var('y');
        if ($year) {
          // ここに書きたい
        }
    }

}

function.phpに上記記述を追加しています。
seasonという固定ページで、
リクエストパラメータのyの値を使い
channelカスタム投稿のカスタムフィールドyear
にヒットする記事をすべて取得するメインクエリに書き換えたいです。

$query->setで意図する動作への書き換えは可能でしょうか?
フックする関数は上記で問題ないでしょうか?

ご教授ください。