Cортировка товаров в Woocommerce: чтобы товары без цены или с ценой 0 показывались в конце списка?
Сейчас стоит сортировка по умолчанию по цене возрастание, но в каталоге много товаров без цены или с ценой 0.
Как сделать так чтобы эти товары показывались не в начале списка товаров а в конце не меняя способ сортировки.
Пробовал вот этот код. Но не работает.
add_filter('posts_clauses', 'order_by_stock_status', 50, 2);
function order_by_stock_status($posts_clauses) {
global $wpdb;
if (!is_admin() && is_woocommerce() && (is_shop() || is_product_category() || is_product_tag() || is_product_taxonomy())) {
$posts_clauses['orderby'] = "price_query.price > 0 DESC, " . $posts_clauses['orderby'];
}
return $posts_clauses;
}
Нашел решение. Может кому-то пригодится.
// Товары без цены или с ценой равной нулю будут в конце списка add_filter('posts_clauses', 'order_by_no_price', 50, 2); function order_by_no_price($posts_clauses) { global $wpdb; if (!is_admin() && is_woocommerce() && (is_shop() || is_product_category() || is_product_tag() || is_product_taxonomy())) { if($posts_clauses['join']!=' LEFT JOIN wp_wc_product_meta_lookup wc_product_meta_lookup ON wp_posts.ID = wc_product_meta_lookup.product_id '){ $posts_clauses['join'] = $posts_clauses['join'] . " LEFT JOIN wp_wc_product_meta_lookup wc_product_meta_lookup ON wp_posts.ID = wc_product_meta_lookup.product_id "; } $posts_clauses['orderby'] = "wc_product_meta_lookup.min_price > 0 DESC, " . $posts_clauses['orderby']; } return $posts_clauses;