yl1tko1
@yl1tko1
Начинающий веб программист

Как сделать свою сортировку товаров Woocommerce?

Подскажите как реализовать такую сортировку вместо стандартных?
5b5beb1196d02076898930.jpeg
  • Вопрос задан
  • 1217 просмотров
Пригласить эксперта
Ответы на вопрос 1
azerphoenix
@azerphoenix
Java Software Engineer
Здравствуйте!

1) кол-во отображаемых товаров:
/** Выводим dropdown кол-во товаров **/
remove_action( 'woocommerce_before_shop_loop', 'woocommerce_catalog_ordering', 30 );

function woocommerce_catalog_page_ordering() {
?>

<form action="" method="POST" name="results" class="woocommerce-ordering">
<select name="woocommerce-sort-by-columns" id="woocommerce-sort-by-columns" class="sortby" onchange="this.form.submit()">
<?php

//Get products on page reload
if  (isset($_POST['woocommerce-sort-by-columns']) && (($_COOKIE['shop_pageResults'] <> $_POST['woocommerce-sort-by-columns']))) {
        $numberOfProductsPerPage = $_POST['woocommerce-sort-by-columns'];
          } else {
        $numberOfProductsPerPage = $_COOKIE['shop_pageResults'];
          }
            $shopCatalog_orderby = apply_filters('woocommerce_sortby_page', array(
                '10'        => __('10', 'woocommerce'),
                '20'        => __('20', 'woocommerce'),
                '40'        => __('40', 'woocommerce'),
                '-1'        => __('Все', 'woocommerce'),
            ));

        foreach ( $shopCatalog_orderby as $sort_id => $sort_name )
            echo '<option value="' . $sort_id . '" ' . selected( $numberOfProductsPerPage, $sort_id, true ) . ' >' . $sort_name . '</option>';
?>
</select>
</form>

<?php echo ' </span>' ?>
<?php
}

// now we set our cookie if we need to
function dl_sort_by_page($count) {
  if (isset($_COOKIE['shop_pageResults'])) { // if normal page load with cookie
     $count = $_COOKIE['shop_pageResults'];
  }
  if (isset($_POST['woocommerce-sort-by-columns'])) { //if form submitted
    setcookie('shop_pageResults', $_POST['woocommerce-sort-by-columns'], time()+1209600, '/', 'example.com, false); //this will fail if any part of page has been output- hope this works!
    $count = $_POST['woocommerce-sort-by-columns'];
  }
  // else normal page load and no cookie
  return $count;
}

add_filter('loop_shop_per_page','dl_sort_by_page');


не забудьте example.com поменять на ваш домен.

А для сортировки (по название и т.д.) вызовите это в шаблоне:
<?php woocommerce_catalog_ordering() ?>

Пример - test5.md7.info/shop
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы