Jak ukryć produkt w WooCommerce lub ukryć produkty według kategorii lub ról
Opublikowany: 2020-02-24Istnieje wiele sposobów na ukrycie konkretnego produktu w WooCommerce oraz w tym poście; zbadamy każdy z tych sposobów na ukrycie produktu w WooCommerce. Istnieje kilka powodów, dla których warto rozważyć ukrycie produktu w sklepie WooCommerce, ale na szczycie listy jest to, gdy produkt jest niedostępny lub gdy produkt jest zarezerwowany dla określonych klientów lub ról użytkowników.
Ukryj produkt WooCommerce
Jeśli chcesz ukryć produkty niedostępne, powinieneś najpierw rozważyć dodanie etykiety brak na produkcie zamiast ukrywania produktu.
Niemniej jednak, jeśli nadal chcesz ukryć te niedostępne produkty lub jakiekolwiek inne produkty WooCommerce, podzielę się w tym poście, jak możesz ukryć produkty według identyfikatora, nazwy lub kategorii.
Ukryj produkt WooCommerce za pomocą opcji
WooCommerce domyślnie ma doskonałą opcję, która pozwala użytkownikom kontrolować widoczność produktu.
Możesz stworzyć ukryty produkt w WooCommerce, kontrolując opcję widoczności przed opublikowaniem obrazu. Aby ukryć produkt w WooCommerce za pomocą widoczności, musisz wykonać następujące kroki:
- Zaloguj się do pulpitu nawigacyjnego witryny WordPress
- Kliknij menu produktów, jak pokazano na poniższym obrazku, aby uzyskać dostęp do produktu, który chcesz ukryć przed użytkownikami, za pomocą opcji widoczności.
- Wybierz produkt z listy wszystkich produktów, które chcesz ukryć, jak pokazano poniżej, i kliknij edycję, aby uzyskać dostęp do ekranu edycji produktu:
- Na ekranie edycji produktu po prawej stronie pod metaboxem publikacji poniżej znajduje się opcja o nazwie „Widoczność katalogu”. Kliknij ten link, a pojawi się menu rozwijane z opcjami, a ostatnia opcja jest Ukryta.
Gdy zaznaczysz tę opcję radiową i klikniesz ok, a następnie zaktualizujesz post, produkt zostanie ukryty w katalogu sklepu. Jak pokazano w tych trzech krokach (1,2,3): - Gdy zapiszesz te opcje i zaktualizujesz post, widoczność produktu zostanie ustawiona na ukrytą, jak widać w interfejsie sklepu:
- Jeśli zaznaczysz opcję widoczności katalogu na zapleczu na ekranie edycji produktu, powinieneś zobaczyć, że został on zaktualizowany do ukrytego, gdy post był aktualizowany:
To najszybszy sposób na ukrycie produktu WooCommerce w katalogu sklepu. Istnieją inne sposoby, na przykład dodanie kodu do motywu podrzędnego. Pozwól nam zbadać więcej opcji, których możesz użyć, aby ukryć produkt w WooCommerce.
Woocommerce Ukryj produkty z określonej kategorii na stronie sklepu
Jeśli chcesz ukryć określone produkty na stronie sklepu w WooCommerce, możesz to osiągnąć za pomocą haka akcji, który kieruje zapytanie na stronę sklepu „woocommerce_product_query”.
Funkcja wywołania zwrotnego powinna używać $tax_query, aby zawęzić terminy związane z produktem, który chcesz ukryć.
W tym przypadku klucz terminów w tablicy $tax_query jest odpowiednikiem kategorii/tagu, jak wyjaśniłem w poście, jak uzyskać aktualną kategorię produktów WooCommerce.
Załóżmy, że chcemy ukryć ten produkt w kategorii „części samochodowe”.
Możemy użyć następującego fragmentu kodu dodanego do pliku functions.php, aby ukryć produkt na stronie sklepu:
/** * Ukryj produkt WooCommerce według kategorii na stronie sklepu. * * @param $q */ add_action( 'woocommerce_product_query', 'njengah_hide_product_by_category_shop_page' ); funkcja njengah_hide_product_by_category_shop_page( $q ) { $tax_query = (tablica) $q->get( 'tax_query' ); $zapytanie_podatkowe[] = tablica( 'taksonomia' => 'product_cat', 'pole' => 'ślimak', 'terms' => array( 'uncategorised','auto-parts'), // Nie wyświetlaj produktów w kategorii 'części samochodowe' na stronie sklepu. 'operator' => 'NIE W' ); $q->set( 'podatek_zapytanie', $podatek_zapytanie ); }
Dodaj ten kod do funkcji motywu i możesz zastąpić kategorię „części samochodowe” dowolną inną kategorią, w której chcesz ukryć produkty, a to skutecznie ukryje produkty z tej kategorii na stronie sklepu, jak pokazano poniżej:
WooCommerce Ukryj produkty, chyba że jesteś zalogowany
Innym powszechnym sposobem ukrywania produktów w WooCommerce jest ograniczenie widoczności produktu na podstawie statusu użytkownika, niezależnie od tego, czy jest zalogowany, czy nie.
Pierwszym krokiem jest oczywiście sprawdzenie, czy użytkownik jest zalogowany. Szczegółowo wyjaśniłem tutaj – jak sprawdzić, czy użytkownik jest zalogowany w WordPressie.
Wykorzystamy ten kod do sprawdzenia statusu logowania, a następnie połączymy go z zapytaniem, aby warunkowo ukryć produkty WooCommerce w zależności od statusu zalogowanego użytkownika.
Kod powinien wyglądać następująco:
** * Ukryj produkt WooCommerce, jeśli użytkownik nie jest zalogowany * * @param $zapytanie */ funkcja njengah_hide_product_if_user_not_logged( $zapytanie) { if ( $query->is_main_query() && is_woocommerce() && !is_user_logged_in() ) { $zapytanie_podatkowe = tablica( szyk( 'taksonomia' => 'product_cat', 'pole' => 'ślimak', 'terms' => array( 'uncategorised','auto-parts'), // Nie wyświetlaj produktów w kategorii 'części samochodowe' na stronie sklepu. 'operator'=> 'NOT IN' // wyklucz ) ); $query->set('tax_query', $tax_query); } } add_action( 'pre_get_posts', 'njengah_hide_product_if_user_not_logged' );
Jak widać, sprawdzamy warunkowo, czy użytkownik jest zalogowany za pomocą funkcji is_user_logged_in(), zanim będziemy mogli kontynuować zapytanie.
Woocommerce Ukryj produkty według ról użytkownika
Możesz również ukryć produkty według ról użytkownika. Musisz najpierw uzyskać aktualnie zalogowanego użytkownika i jego rolę użytkownika, jak opisałem w poprzednim samouczku, jak uzyskać aktualną rolę użytkownika w WordPress . Ten kod, aby uzyskać rolę użytkownika, jest po prostu następujący:
$użytkownik = wp_get_current_user(); // pobieranie i ustawianie bieżącego użytkownika $role = ( tablica ) $użytkownik->role; // zdobycie roli $roles[0] //aktualna rola użytkownika
Powinniśmy połączyć ten kod z poprzednią akcją pre_get_posts, a kod, który ukryje produkt przed wszystkimi użytkownikami oczekującymi od administratora, wygląda następująco:
/** * Ukryj produkt WooCommerce według roli użytkownika, tak jak w tym przypadku tylko administrator może zobaczyć ten produkt * * @param $zapytanie */ funkcja njengah_hide_product_by_user_role( $zapytanie) { $użytkownik = wp_get_current_user(); // pobieranie i ustawianie bieżącego użytkownika $role = ( tablica ) $użytkownik->role; // zdobycie roli if ( $query->is_main_query() && is_woocommerce() && $roles[0] != 'administrator' ) { $zapytanie_podatkowe = tablica( szyk( 'taksonomia' => 'product_cat', 'pole' => 'ślimak', 'terms' => array( 'uncategorised','auto-parts'), // Nie wyświetlaj produktów w kategorii 'części samochodowe' na stronie sklepu. 'operator'=> 'NOT IN' // wyklucz ) ); $query->set('tax_query', $tax_query); } } add_action( 'pre_get_posts', 'njengah_hide_product_by_user_role' );
Jak widać w tym wierszu kodu, w którym sprawdzamy zapytanie warunkowo, wprowadziłem warunek, aby sprawdzić, czy rolą użytkownika nie jest admin – $roles[0] != 'administrator' wtedy kontynuujemy zapytanie. W ten sposób ukrywasz produkty WooCommerce na podstawie roli użytkownika.
Możesz wyjaśnić ten przykład, aby dopasować go do swoich konkretnych potrzeb, a także możesz połączyć wszystkie te przypadki, aby stworzyć jeden warunkowy sposób na ukrycie produktów WooCommerce.
Końcowe przemyślenia
W tym poście podkreśliliśmy trzy typowe sposoby ukrywania produktów WooCommerce, które obejmują ukrywanie według roli użytkownika, ukrywanie produktów, chyba że użytkownik jest zalogowany i ukrywanie produktów WooCommerce bez któregokolwiek z tych warunków. Przedstawiliśmy również najprostszy sposób na ukrycie produktów WooCommerce za pomocą opcji widoczności katalogu, która jest dostępna na ekranie edycji produktu. Mam nadzieję, że możesz teraz łatwo wdrożyć jedno z tych rozwiązań, aby ukryć produkty WooCommerce w swoim sklepie.