Wordpress使用基于表单参数的新WP_Query重新加载页面

I am doing a template for a page where I do a WP Query and, with that, I display the posts of the query. I wanna change the query and the posts displayed depending on the information of three filters, preferrable, without reloading the whole page, but, for now, it's ok to start with that. I've also read that the correct way to do it is to use admin-post.php, but I cannot manage to do it. Here's my code for the form so far:

<form method="get" action="<?php echo esc_url( admin_url('admin-post.php') ); ?> id="talentum-search-form">
    <div class="row">
        <div class="col-xs-4">
            <select class="form-control" id="talentum-alumni-state" name="talentum-alumni-statex" onchange='document.getElementById("talentum-search-form").submit();'>
                <option>Todos los estados</option>
                <?php $tmp_alumni_state = talentum_get_custom_field_values ( 'talentum-embajadores-estado' );
                if ( !empty( $tmp_alumni_state ) ):
                    foreach ( $tmp_alumni_state as $state): ?>
                        <option><?php echo $state ?></option>
                    <?php endforeach;
                endif; ?>
            </select>
        </div>
        <div class="col-xs-4">
            <select class="form-control" id="talentum-alumni-generation" name="talentum-alumni-generationx" onchange='document.getElementById("talentum-search-form").submit();'>
                <option>Todas las generaciones</option>
                <option>1ra. generación</option>
                <option>2da. generación</option>
            </select>
        </div>
        <div class="col-xs-4">
            <input class="form-control mr-sm-2" name="talentum-alumni-name" name="talentum-alumni-namex" type="text" placeholder="Nombre" onchange='document.getElementById("talentum-search-form").submit();'>
        </div>
        <input type="hidden" name="action" value="alumni_search">
    </div></form>

The foreach calls a function and displays all the options of the first select, while the second select has only three options. On the other hand, this is my function attached to the admin-post hooks:

function talentum_alumni_search() {
    echo $_POST . "-";
    echo $_GET . "-";
    echo $_REQUEST . "-";
    echo $url = get_site_url() . "/talentum-universidad/egresados";

}
add_action( 'admin_post_nopriv_alumni_search', 'talentum_alumni_search' );
add_action( 'admin_post_alumni_search', 'talentum_alumni_search' );

For now, I'm just echoing the variables, but they're empty. Also, I used a redirect for test, but I realized the whole redirection process was too slow for just applying a filter to the same page.

Can you tell me what I'm doing wrong in terms of passing the GET or POST parameters to the function? Also, can you tell me of a fast way to reload the page and keep the parameters which is "Wordpress compliant"?

UPDATE:

I'm seeing the variables and using them to conform the parameters of a WP_Query. What would be the most correct way to send the query back to the page where the parameters came from, so that the page would reload with this new query?

This is my query:

    $tmp_alumni_search_metas = [];

    if ( isset($_GET['as_nonce']) && wp_verify_nonce( $_GET['as_nonce'], 'alumni_search_') ):
        $args_custom_alumni_search  =   array(
            'posts_per_page'        =>  -1,
            'category'              =>  'Embajadores'
        );
        if ( !empty( $_GET['alumni-state'] ) && $_GET['alumni-state'] != 'Todos los estados' ):
            $safe_alumni_state = $_GET['alumni-state'];
            $tmp_alumni_search_metas['meta_alumni_state_clause'] = array(   'key'       => 'talentum-egresado-estado',
                                                                            'compare'   => '=',
                                                                            'value'     =>  $safe_alumni_state );
        endif;
        if ( !empty( $_GET['alumni-generation'] ) && $_GET['alumni-generation'] != 'Todas las generaciones' ):
            $safe_alumni_generation = $_GET['alumni-generation'];
            $tmp_alumni_search_metas['meta_alumni_generation_clause'] = array(  'key'       => 'talentum-egresado-generacion',
                                                                            'compare'   => '=',
                                                                            'value'     =>  $safe_alumni_generation );
            if ( isset( $tmp_alumni_search_metas ) ):
                $tmp_alumni_search_metas['relation'] = 'AND';
            endif;
        endif;
        $args_custom_alumni_search['meta_query'] = $tmp_alumni_search_metas;
        if ( !empty( $_GET['alumni-name'] ) ):
            $safe_alumni_name = $_GET['alumni-name'];
            $args_custom_alumni_search['s'] = $safe_alumni_generation;
        endif;
        var_dump( $args_custom_alumni_search );
    else:
        echo "¡Parámetro de seguridad incorrecto! (nonce)";
    endif;