- Доступные продукты с ценой выше 0Далее
- Товары доступны с ценой или без
И затем - Товаров нет в наличии
Я пробовал этот код, но думаю, что в некоторых частях кода есть проблемы, некоторые части, возможно, придется удалить, а некоторые нужно изменить.
Код: Выделить всё
add_action('woocommerce_product_query', 'custom_product_order', 100);
function custom_product_order($query) {
add_filter('posts_clauses', 'custom_product_order_clauses', 100, 2);
return $query;
}
function custom_product_order_clauses($clauses, $query) {
global $wpdb;
$pos = strpos($clauses['join'], 'wc_product_meta_lookup wc_product_meta_lookup');
if ($pos === false) {
$clauses['join'] .= " LEFT JOIN {$wpdb->prefix}wc_product_meta_lookup wc_product_meta_lookup ON {$wpdb->posts}.ID = wc_product_meta_lookup.product_id ";
}
$stock_status = " FIELD(wc_product_meta_lookup.stock_status, 'instock' , 'outofstock') ASC, ";
$has_price = " IF(wc_product_meta_lookup.min_price > 0, 1, 0) DESC, ";
$clauses['orderby'] = $stock_status . $has_price . $clauses['orderby'];
return $clauses;
}
Я хочу, чтобы доступные товары с ценой больше 0 отображались первыми и рядом друг с другом в порядке WooCommerce по умолчанию.
На основе даты выпуска, случайного идентификатора или идентификатора публикации (не знаю чего!), но я бы не хотел, чтобы это было указано в порядке цен.>
Подробнее здесь: https://stackoverflow.com/questions/783 ... es-greater