WooCommerce: Sortowanie produktów po ilości w magazynie

Spis treści

WooCommerce: Sortowanie produktów po ilości w magazynie

Prowadząc sklep internetowy, często łapałem się na tym, że muszę szybko sprawdzić, które produkty zaczynają się kończyć – szczególnie te, których w magazynie zostało zaledwie 1–5 sztuk. W panelu WooCommerce widać wprawdzie statusy „Na stanie” czy „Brak w magazynie”, ale trudno było mi je posortować i od razu wyłapać pozycje wymagające uzupełnienia. Dlatego postanowiłem dodać prostą funkcję sortowania po ilości w magazynie bezpośrednio na liście produktów. Okazało się to szybkim i bardzo praktycznym rozwiązaniem, które znacząco ułatwia codzienną pracę.

Cel: dodać w panelu Produkty → Wszystkie produkty możliwość sortowania listy po stanie magazynowym, aby łatwo znaleźć produkty z ilościami 1, 2, 3, 4 itd.

Wymagania i przygotowanie

Szybki skrót

Jeśli chcesz po prostu, aby kolumna “stan magazynowy” miała możliwość sortowania:

  1. Zainstaluj wtyczkę Code Snippets (lub edytuj functions.php motywu potomnego).
  2. Wklej fragment kodu z sekcji „Metoda A”.
  3. Zapisz i odśwież listę Produkty → Wszystkie produkty.
  4. Kliknij nagłówek kolumny “Stan magazynowy”, żeby sortować rosnąco/malejąco.

Metoda A — sortowanie po istniejącej kolumnie „Stan magazynowy” (bez wtyczek)

To najprostszy wariant: korzystamy z istniejącej kolumny „Stan magazynowy” i tylko dokładamy do niej możliwość sortowania produktów po ilości w magazynie.

Gdzie wkleić kod?

  • Wtyczka Code Snippets → „Add New”, albo
  • na końcu pliku functions.php motywu potomnego.

Uwaga: Upewnij się, że żaden inny snippet nie modyfikuje w tym samym czasie sortowania produktów (konflikty potrafią wyłączyć sortowanie). Ten kod działa wyłącznie w panelu admina, na ekranie listy produktów.

Kod:


// Ustawia kolumnę 'Stan magazynowy' jako sortowalną
add_filter( 'manage_edit-product_sortable_columns', function( $columns ) {
    $columns['is_in_stock'] = 'stock';
    return $columns;
});

add_action( 'pre_get_posts', function( $q ) {
    if ( ! is_admin() || ! $q->is_main_query() ) return;
    if ( 'product' !== $q->get( 'post_type' ) ) return;

    if ( 'stock' === $q->get( 'orderby' ) ) {
        $q->set( 'meta_key', '_stock' );
        $q->set( 'orderby', 'meta_value_num' );
        $q->set( 'meta_query', [
            'relation' => 'OR',
            [ 'key' => '_stock', 'compare' => 'EXISTS' ],
            [ 'key' => '_stock', 'compare' => 'NOT EXISTS' ],
        ] );
    }
});

Co otrzymujesz?

  • Klikając nagłówek Stan magazynowy, sortujesz produkty po liczbie dostępnych sztuk (rosnąco/malejąco).
  • Kod nie dodaje nowych kolumn – wykorzystujemy to, co już jest w WooCommerce.

Metoda B — z wtyczkami

Jeśli nie chcesz dodawać kodu:

Wtyczka Admin Columns (darmowa/PRO)

  • Zainstaluj i włącz Admin Columns.
  • Wejdź w Ustawienia → Admin Columns → wybierz ekran Produkty.
  • Dodaj kolumnę Stock (lub Stock Quantity) i zaznacz Sortowalne.
  • Zapisz – kolumna pojawi się w liście produktów i można po niej sortować.

Testowanie i korzystanie

  1. Wejdź w Produkty → Wszystkie produkty.
  2. Jeśli nie widzisz kolumny, rozwiń w prawym górnym rogu Opcje ekranu i upewnij się, że jest zaznaczona.
  3. Kliknij nagłówek “Stan magazynowy”, aby sortować.
  4. Używaj pól wyszukiwania/filtrów (np. kategorie), aby zawęzić listę i szybciej wyłapać produkty z ilościami 1–5.

Najczęstsze pytania (FAQ)

Czy to działa z produktami z wariantami?
Częściowo. WooCommerce zwykle trzyma stany na wariantach, a nie na produkcie nadrzędnym. Kolumna „Stan magazynowy” pokaże wartość tylko wtedy, gdy produkt nadrzędny faktycznie zarządza stanem (rzadziej spotykane). Sortowanie opiera się na meta _stock – czyli głównie proste produkty. Jeśli większość asortymentu to warianty, rozważ wtyczkę Admin Columns PRO (ma gotowe kolumny/filtry dla wariantów) lub oddzielny ekran Stock Manager.

Czy to wpłynie na wydajność?
Kod jest lekki i działa tylko w panelu. Nie powinien obciążać strony.

Czy muszę używać Code Snippets?
Nie, możesz wkleić kod do functions.php motywu potomnego. Wtyczka ułatwia zarządzanie i wyłączanie fragmentów.

Przywracanie zmian / usuwanie

  • Jeśli używasz Code Snippets – po prostu deaktywuj lub usuń dany snippet.
  • Jeśli wkleiłeś do functions.php – usuń fragment kodu i zapisz plik.

Gotowe!

Od teraz możesz sortować produkty po ilości w magazynie bez wychodzenia z listy produktów i szybciej wyłapywać pozycje ze stanem 1–5 itd.