Add option to query string before get_posts() is called on archive.php

function rpf_add_query_var_not_to_show_user_request_product($query) {

  $post_type = $query->get( 'post_type' );
    if ( ! is_null($post_type) && $post_type == 'product' ) {
      $query->set( 'meta_key', '_user_request' );
      $query->set( 'meta_value', 'no' );
      $query->set( 'meta_compare', '=' ); // default
    }
  }
  add_action( 'pre_get_posts', 
'rpf_add_query_var_not_to_show_user_request_product', 100, 1 );

yes, pre_get_posts is heaven! and $query->set(), $query->get() are angels!