Zarządzanie dużą liczbą produktów w sklepie internetowym bywa czasochłonne, zwłaszcza gdy często pracujesz z wybranym asortymentem. W tym wpisie pokażemy, jak wyświetlić priorytetowe produkty WooCommerce na początku listy produktów w panelu admina, bez ukrywania reszty oferty.
Dlaczego warto ustawić priorytetowe produkty WooCommerce?
W sklepach z rozbudowanym katalogiem często zachodzi potrzeba szybkiego dostępu do konkretnych produktów – np. nowości, promocji lub bestselerów. Dzięki drobnej modyfikacji kodu PHP możesz wskazać konkretne ID produktów lub całą kategorię, które mają być zawsze widoczne na górze listy w zakładce „Wszystkie produkty”.
Jak działa ten kod PHP?
Kod wykorzystuje hak pre_get_posts, by zmodyfikować zapytanie WordPressa wyświetlające produkty w panelu administracyjnym. Dodatkowo, filtr posts_orderby zmienia kolejność produktów tak, by najpierw pokazać priorytetowe produkty, a dopiero później resztę – posortowaną domyślnie według daty dodania.
Kod nie ukrywa innych produktów – tylko zmienia kolejność ich wyświetlania, co zachowuje pełną funkcjonalność filtrowania i wyszukiwania.
Jak wdrożyć kod w swoim sklepie?
- Skopiuj podany kod PHP.
- Wklej go do pliku functions.php Twojego motywu potomnego (child theme) lub użyj wtyczki takiej jak Code Snippets.
- Zmień ID produktów i kategorii na te, które chcesz traktować jako priorytetowe.
To wszystko – od teraz Twoje priorytetowe produkty WooCommerce zawsze będą na górze listy w panelu admina!
// Funkcja zmieniająca kolejność produktów w tabeli admina "Wszystkie produkty" w WooCommerce bez ukrywania reszty add_action('pre_get_posts', function($query) { if (!is_admin() || !$query->is_main_query()) { return; } global $pagenow; if ($pagenow !== 'edit.php' || $query->get('post_type') !== 'product') { return; } // ID kategorii i produktów, które mają być zawsze na górze $priority_category_id = 42; $priority_product_ids = array(3798, 3799, 3800); // Pobierz produkty z kategorii $priority_query_args = array( 'post_type' => 'product', 'posts_per_page' => -1, 'fields' => 'ids', 'post_status' => 'publish', 'tax_query' => array( array( 'taxonomy' => 'product_cat', 'field' => 'term_id', 'terms' => $priority_category_id, ), ), ); $priority_products = get_posts($priority_query_args); // Połącz wszystkie ważne produkty $priority_products = array_unique(array_merge($priority_product_ids, $priority_products)); if (!empty($priority_products)) { add_filter('posts_orderby', function($orderby, $query_inside) use ($priority_products) { if (!is_admin() || !$query_inside->is_main_query() || $query_inside->get('post_type') !== 'product') { return $orderby; } $ids_order = implode(',', $priority_products); // Produkty priorytetowe pierwsze, potem reszta według daty utworzenia return "FIELD(ID, $ids_order) DESC, post_date DESC"; }, 10, 2); } });
Zobacz również: Automatyczne Kompletowanie Zamówień w WooCommerce: Jak Przyspieszyć Realizację Produktów Cyfrowych