2015-11-14 3 views
1

Например, у меня есть две вариации: from_year и 'until_year', как я могу фильтровать продукты по диапазону на странице архива продукта.WooCommerce фильтрует продукты по диапазону

Если называть этот адрес, будет получать только продукты, которые равняется переменным, но нужно from_year >= 2005 и until_year <= 20015

mysite.com/?from_year=2005 & until_year = 2015 & post_type = продукт

enter image description here

+0

Вы спрашиваете, как создать URL-адрес ссылки или как получить комбинацию терминов? – 1Bladesforhire

+0

получить комбинацию терминов – Sevi

ответ

0

Вам нужны даты. Вот хороший учебник по date queries и вот код на date parameters за WP_Query.

Вам также нужно будет фильтровать query_vars, чтобы добавить новые переменные запроса и pre_get_posts, чтобы изменить сообщения, полученные на основе ваших новых запросов.

Со всем этим справочным материалом, вот моя попытка как это сделать.

// Add query vars for filtering by years 
function so_33714675_add_vars($query_vars) { 
    $query_vars[] = 'from_year'; 
    $query_vars[] = 'until_year'; 
    return $query_vars; 
} 
add_filter('query_vars', 'so_33714675_add_vars'); 

// Filter product arvhice if query vars are present 
function so_33714675_pre_get_posts($query) { 
    if (!is_admin() && is_shop() && $query->is_main_query()) { 

     $from_year = get_query_var('from_year'); 
     $until_year = get_query_var('until_year'); 

     $date_query = array(); 

     if(! empty($from_year)){ 
      $date_query['after'] = array(
       'year'  => $from_year, 
      ); 
     } 

     if(! empty($until_year)){ 
      $date_query['before'] = array(
       'year'  => $until_year, 
      ); 

     } 

     // order by date 
     if(! empty($date_query)){ 
      set_query_var('orderby', 'date'); 
      set_query_var('order', 'ASC'); 

      $date_query['inclusive'] = true; 
      set_query_var('date_query', array($date_query)); 

     } 
    } 
} 
add_action('pre_get_posts', 'so_33714675_pre_get_posts'); 

Имейте в виду, что это не полностью протестировано. Я на 99% уверен, что это правильный подход, но это может потребовать некоторой настройки.

+0

Привет, мне не нужны фильтры по датам, но это может помочь, спасибо. Мне нужна продукция для фильтрации woocommerce по диапазону переменных/атрибутов. – Sevi

+0

Я вижу, вы отредактировали свой вопрос, чтобы сделать это более ясным. но теперь он полностью отличается от того, что было раньше. В будущем, пожалуйста, постарайтесь иметь самый точный вопрос. – helgatheviking

Смежные вопросы