Как переместить товары, отсутствующие на складе, в конец цикла архивирования ⇐ Php
Как переместить товары, отсутствующие на складе, в конец цикла архивирования
Я хочу отображать товары «Нет на складе» в категории товаров, но с точки зрения пользовательского опыта лучше переместить эти товары в конец списка, чтобы не путать пользователя.
Я предпринимал несколько попыток в этой области, но каждая попытка приносила проблему Например, при попытке сортировки по запасам вместо сортировки, выбранной пользователем, например сортировки по цене, она имела приоритет и не принесла желаемого результата. Или в другой попытке, только если пользователь выбрал сортировку по умолчанию, все было правильно, но если пользователь выбрал сортировку по цене или популярности, существующие и несуществующие товары смешивались. мой окончательный код:
add_filter('posts_clauses', 'order_by_stock_status'); функция order_by_stock_status($posts_clauses) { глобальный $wpdb; // меняем запрос только в циклах WooCommerce if (is_woocommerce() && (is_shop() || is_product_category() || is_product_tag() || is_product_taxonomy())) { $posts_clauses['join'] .= " ВНУТРЕННЕЕ СОЕДИНЕНИЕ $wpdb->postmeta istockstatus ON ($wpdb->posts.ID = istockstatus.post_id) "; $posts_clauses['orderby'] = "istockstatus.meta_value ASC, " . $posts_clauses['orderby']; $posts_clauses['where'] = " И istockstatus.meta_key = '_stock_status' И istockstatus.meta_value '' " . $posts_clauses['где']; } вернуть $posts_clauses; }
Я хочу отображать товары «Нет на складе» в категории товаров, но с точки зрения пользовательского опыта лучше переместить эти товары в конец списка, чтобы не путать пользователя.
Я предпринимал несколько попыток в этой области, но каждая попытка приносила проблему Например, при попытке сортировки по запасам вместо сортировки, выбранной пользователем, например сортировки по цене, она имела приоритет и не принесла желаемого результата. Или в другой попытке, только если пользователь выбрал сортировку по умолчанию, все было правильно, но если пользователь выбрал сортировку по цене или популярности, существующие и несуществующие товары смешивались. мой окончательный код:
add_filter('posts_clauses', 'order_by_stock_status'); функция order_by_stock_status($posts_clauses) { глобальный $wpdb; // меняем запрос только в циклах WooCommerce if (is_woocommerce() && (is_shop() || is_product_category() || is_product_tag() || is_product_taxonomy())) { $posts_clauses['join'] .= " ВНУТРЕННЕЕ СОЕДИНЕНИЕ $wpdb->postmeta istockstatus ON ($wpdb->posts.ID = istockstatus.post_id) "; $posts_clauses['orderby'] = "istockstatus.meta_value ASC, " . $posts_clauses['orderby']; $posts_clauses['where'] = " И istockstatus.meta_key = '_stock_status' И istockstatus.meta_value '' " . $posts_clauses['где']; } вернуть $posts_clauses; }
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение