fbpx

Jak wyświetlić priorytetowe produkty WooCommerce na górze listy w panelu administracyjnym

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?

  1. Skopiuj podany kod PHP.
  2. Wklej go do pliku functions.php Twojego motywu potomnego (child theme) lub użyj wtyczki takiej jak Code Snippets.
  3. 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

Imię:


Nazwisko:


Adres email:


Nazwa Twojej firmy:


NIP Twojej firmy

REGON Twojej firmy



Adres Twojej firmy

Ulica

Kod pocztowy

Miasto

Wybierz bramkę płatniczą na Twojej stronie