Чтобы на странице категории или метки товаров товары со статусом "Нет в наличии" отображались после товаров в наличии, нужно добавить код в 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
Вам помогла эта статья? Оцените!