Сбросить запрос при смене товара на странице - PullRequest
0 голосов
/ 25 февраля 2020

Я создал выпадающий продукт для каждого списка страниц. Это работает нормально, но проблема в том, что когда я go перехожу на последнюю страницу продукта, а затем меняю продукт на странице в раскрывающемся списке на что-то большее (например, с 50 на 100), он перенаправляет на 404 страницы, что имеет смысл, поскольку у нас нет такая эта страница. Вот сценарий:

  1. Считайте, что мы на этой странице: https://www.mywebsite.com/products (Количество товаров на странице 50)
  2. I go на последнюю страницу с нумерацией страниц: https://www.mywebsite.com/products/page/3/ (Количество товаров на странице все еще 50)
  3. Затем я меняю номер выпадающего списка товаров на страницу до 100 товаров на странице.
  4. Он перенаправляет на https://www.mywebsite.com/products/page/3/?perpage=100 (404 не найдено)

При этом он должен перенаправить на https://www.mywebsite.com/products/?perpage=100, что является правильным запросом. Другими словами, он должен сбросить запрос нумерации страниц перед изменением количества продуктов на странице.

Вот что я пробовал до сих пор:

add_action( 'woocommerce_before_shop_loop', 'pro_selectbox', 25 );
function pro_selectbox() {
$per_page = filter_input(INPUT_GET, 'perpage', FILTER_SANITIZE_NUMBER_INT);
echo '<div class="woocommerce-perpage">';
echo '<span>Puppies per page: <select onchange="if (this.value) window.location.href=this.value">';
$orderby_options = array(
'50' => '50',
'100' => '100'
);
foreach( $orderby_options as $value => $label ) {
echo "<option ".selected( $per_page, $value )." value='?perpage=$value'>$label</option>";
}
echo '</select>';
echo '</div>';
}
add_action( 'pre_get_posts', 'pro_pre_get_products_query' );
function pro_pre_get_products_query( $query ) {
$per_page = filter_input(INPUT_GET, 'perpage', FILTER_SANITIZE_NUMBER_INT);
if( $query->is_main_query() && !is_admin() && is_post_type_archive( 'product' ) ) {
$query->set( 'posts_per_page', $per_page );
}
}

Вопрос в том, как я могу изменить запрос от этого: https://www.mywebsite.com/products/page/3/?perpage=100 к этому: https://www.mywebsite.com/products/?perpage=100 путем изменения приведенного выше фрагмента.

Заранее спасибо

...