Отображение товаров со статусом «Нет в наличии» после товаров в наличии в каталоге WooCommerce

Чтобы на странице категории или метки товаров товары со статусом "Нет в наличии" отображались после товаров в наличии, нужно добавить код в functions.php вашей темы:

add_filter('posts_clauses', 'order_by_stock_status', 2000);


function order_by_stock_status($posts_clauses)
{
    global $wpdb;
    // only change query on WooCommerce loops
    if (is_woocommerce() && (is_shop() || is_product_category() || is_product_tag())) {
        $posts_clauses['join'] .= " INNER JOIN $wpdb->postmeta istockstatus ON ($wpdb->posts.ID = istockstatus.post_id) ";
        $posts_clauses['orderby'] = " istockstatus.meta_value ASC, " . $posts_clauses['orderby'];
        $posts_clauses['where'] = " AND istockstatus.meta_key = '_stock_status' AND istockstatus.meta_value <> '' " . $posts_clauses['where'];
    }
    return $posts_clauses;
}

Для отображения надписи "Нет в наличии" в каталоге товаров, нужно добавить следующий код:

add_action('woocommerce_after_shop_loop_item_title', 'add_availability_in_catalog',8);

function add_availability_in_catalog()
{
    global $product;
    $availability = $product->get_availability();
    if ( ! empty( $availability['availability'] ) ) { ?>
        <span class="stock <?php echo esc_attr( $availability['class'] ); ?>"><?php echo wp_kses_post( $availability['availability'] ); ?></span>
    <?php }
}

Обновлено: 04.05.2020

Вам помогла эта статья? Оцените!
(Пока оценок нет)
Загрузка...

Поддержать развитие блога https://www.patreon.com/processby

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *