@castetus

Woocommerce — как совместить работу фильтра товаров и пагинации?

Здравствуйте все!
Сделал фильтр товаров в категории, простенький:
add_action( 'pre_get_posts', 'custom_products_filter' );
function custom_products_filter( $query ) {
	if (!is_product_category() || is_admin()){
		return;
	}

	if (isset($_GET['weight']) && $query->is_main_query()){
		$args = ['numberposts' => -1, 'weight' => $_GET['weight']];
		$products = wc_get_products($args);
		foreach ($products as $product){
			$ids[] = $product->get_id();
		}
		$query->set('post__in', $ids);
	}
}

Но если отфильтровать товары не на первой странице категории, то значение пагинации сохраняется - а отфильтрованных товаров может быть недостаточно для отображения на не первой странице.
То есть урл выглядит как /product-category/govyadina/page/2/?weight%5B0%5D=0.1
Корректный алгоритм вижу так:
если при применении фильтра текущая страница не первая - то пагинация сбрасывается в начало, и уже там применяется фильтр. То есть из урла надо убрать "page/2/". (а все что после ? оставить)
А как это сделать? Вручную вырезать из урла параметр пагинации и редиректить?
  • Вопрос задан
  • 89 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы