menex.ru
← Все статьи

Сортировка товаров по наличию в Woocommerce

17.09.2020 • Теги: #javascript #jQuery #Oxygen #woocommerce

Столкнулся с такой проблемой. Woocommerce не сортирует товары у которого стоит статус "в наличии" или "нет в наличии". Он только сортирует по остаткам на складе. Поэтому вышел из положения так. На странице вывел все товары и те у кого статус "нет в наличии" скриптом перекинул вниз.

add_action( 'wp_footer', function () { ?>
    <?php if (is_woocommerce() && is_product_category()) : ?>
    <script>
        jQuery(document).ready(function() {
            jQuery('.outofstock').each(function(index, item) {
                var $this = jQuery(item);
                $this.appendTo($this.parent());
            });
        });
    </script>
    <?php endif; ?>
<?php } );

Если заменить на $this.prependTo($this.parent()); то все товары не в наличии попадут наверх.

Прилепающие сообщения в Oxygen

Этот же скрипт помог в случае когда нужно было "прилипающие" сообщения вывести наверх списка. Для этого в шаблоне вывода постов Oxygen я добавил в класс следующий код

<div class='oxy-post <?php if (in_array( get_the_ID(), get_option( 'sticky_posts' ) )) {echo "sticky";}  ?>'>

А в сниппете подключил скрипт, который посты с классом sticky перекидывает наверх:

add_action( 'wp_footer', function () { ?>

    <script>
        jQuery(document).ready(function() {
            jQuery('.sticky').each(function(index, item) {
                var $this = jQuery(item);
                $this.prependTo($this.parent());
            });
        });
    </script>

<?php } );