Cum să ascundeți un produs în WooCommerce sau să ascundeți produsele după categorie sau roluri

Publicat: 2020-02-24

Există multe moduri pe care le puteți folosi pentru a ascunde un anumit produs în WooCommerce și în această postare; vom explora fiecare dintre aceste moduri de a ascunde un produs în WooCommerce. Există mai multe motive pentru care ar trebui să luați în considerare să ascundeți un produs din magazinul WooCommerce, dar primul loc pe listă este atunci când produsul este epuizat sau când produsul este rezervat pentru anumiti clienti sau roluri de utilizator.

Ascundeți produsul WooCommerce

Dacă doriți să ascundeți produsele epuizate, ar trebui mai întâi să luați în considerare adăugarea etichetei epuizate pe produs în loc să ascundeți produsul.

Cu toate acestea, dacă tot doriți să ascundeți aceste produse epuizate sau orice alte produse WooCommerce, vă voi împărtăși în această postare cum puteți ascunde produsele după ID, nume sau categorie.

Ascundeți opțiunile de utilizare a produsului WooCommerce

WooCommerce vine în mod implicit cu o opțiune excelentă care permite utilizatorilor să controleze vizibilitatea unui produs.

Puteți crea un produs ascuns în WooCommerce controlând opțiunea de vizibilitate înainte de a publica imaginea. Pentru a ascunde produsul în WooCommerce folosind vizibilitate, trebuie să urmați următorii pași:

  1. Conectați-vă la tabloul de bord al site-ului dvs. WordPress
  2. Faceți clic pe meniul de produse așa cum se arată în imaginea de mai jos, astfel încât să accesați produsul pe care doriți să-l ascundeți de utilizatori folosind o opțiune de vizibilitate. Cum să ascundeți un produs în Woocommerce
  3. Selectați produsul din lista tuturor produselor pe care doriți să le ascundeți după cum se arată mai jos și faceți clic pe editare pentru a accesa ecranul de editare a produsului: Cum să ascundeți un produs în Woocommerce
  4. În ecranul de editare a produsului din partea dreaptă, sub metacaseta de publicare de mai jos, există o opțiune numită „Vizibilitatea catalogului”. Faceți clic pe acest link și va apărea un drop-down cu opțiuni, iar ultima opțiune este Ascunsă.
    Când bifați această opțiune radio și faceți clic pe ok apoi actualizați postarea, produsul va fi ascuns din catalogul magazinului. După cum este ilustrat în acești trei pași (1,2,3): Cum să ascundeți un produs în Woocommerce
  5. Când salvați aceste opțiuni și actualizați postarea, vizibilitatea produsului va fi setată ca ascunsă, așa cum puteți vedea în fața magazinului: Cum să ascundeți un produs în Woocommerce
  6. Dacă bifați opțiunea de vizibilitate a catalogului în partea de sus a ecranului de editare a produsului, ar trebui să vedeți că a fost actualizată pentru a fi ascunsă atunci când postarea a fost actualizată: Cum să ascundeți produsul în Woocommerce

Acesta este cel mai rapid mod de a ascunde un produs WooCommerce din catalogul magazinului. Există și alte moduri pe care le puteți folosi, cum ar fi adăugarea de cod la tema copil. Permiteți-ne să explorăm mai multe opțiuni pe care le puteți folosi pentru a ascunde produsul în WooCommerce.

Woocommerce Ascunde anumite categorii de produse din pagina magazinului

Dacă doriți să ascundeți anumite produse din pagina magazinului din WooCommerce, puteți realiza acest lucru folosind un cârlig de acțiune care vizează interogarea paginii magazinului „woocommerce_product_query”.

Funcția de apel invers ar trebui să folosească $tax_query pentru a restrânge termenii asociați cu produsul pe care doriți să-l ascundeți.

În acest caz, termenii cheie din tabloul $tax_query este echivalent cu categoria/eticheta, așa cum am explicat în postare cum să obțineți categoria curentă de produse WooCommerce.

Să presupunem că vrem să ascundem acest produs din categoria „piese auto”.

ascunde produsul woocommerce

Putem folosi următorul fragment de cod adăugat la fișierul functions.php pentru a ascunde produsul din pagina magazinului:

 /**
 * Ascundeți produsul WooCommerce după categorie din pagina magazinului.
 *
 * @param $q
 */
 

add_action( 'woocommerce_product_query', 'njengah_hide_product_by_category_shop_page'); 

funcția njengah_hide_product_by_category_shop_page( $q ) {

    $tax_query = (matrice) $q->get( 'tax_query' );

    $tax_query[] = matrice(
           'taxonomy' => 'product_cat',
           'field' => 'slug',
           'terms' => array( 'uncategorised','auto-parts'), // Nu afișați produse din categoria 'auto parts' pe pagina magazinului.
           „operator” => „NU ÎN”
    );


    $q->set( 'tax_query', $tax_query );

}

Adăugați acest cod la funcțiile temei și puteți înlocui categoria „piese auto” cu orice altă categorie în care doriți să ascundeți produse, iar acest lucru va ascunde efectiv produsele din acea categorie în pagina magazinului, așa cum se vede mai jos:

ascunde produsul woocommerce

WooCommerce Ascundeți produsele dacă nu sunteți autentificat

O altă modalitate obișnuită de a ascunde produsele în WooCommerce implică restricționarea vizibilității produsului în funcție de starea utilizatorului, indiferent dacă este conectat sau nu.

Primul pas este evident să verifici dacă utilizatorul este autentificat. Am explicat în detaliu aici – cum să verifici dacă utilizatorul este autentificat în WordPress.

Vom folosi acest cod pentru a verifica starea de conectare, apoi îl combinăm cu interogarea pentru a ascunde produsele WooCommerce în mod condiționat, în funcție de starea de autentificare a utilizatorului.

Codul ar trebui să fie după cum urmează:

 **
 * Ascundeți produsul WooCommerce dacă utilizatorul nu este autentificat 
 *
 * @param $interogare
 */
 

funcția njengah_hide_product_if_user_not_logged ($interogare) {
	
	
    if ( $query->is_main_query() && is_woocommerce() && !is_user_logged_in() ) {
		
        $tax_query = matrice(
            matrice(
                    'taxonomy' => 'product_cat',
                    'field' => 'slug',
                    'terms' => array( 'uncategorised','auto-parts'), // Nu afișați produse din categoria 'auto parts' pe pagina magazinului.
                    „operator” => „NU ÎN” // exclude
                )
            );

        $interogare->set('tax_query', $tax_query);
    }
}

add_action( 'pre_get_posts', 'njengah_hide_product_if_user_not_logged');

După cum puteți vedea, verificăm condiționat dacă utilizatorul este conectat folosind funcția is_user_logged_in() înainte de a putea continua cu interogarea.

Woocommerce Ascundeți produsele în funcție de rolurile utilizatorului

De asemenea, puteți ascunde produsele după rolurile de utilizator. Mai întâi trebuie să obțineți utilizatorul conectat în prezent și rolul lor de utilizator, așa cum am subliniat în tutorialul anterior despre cum să obțineți rolul de utilizator curent în WordPress . Acest cod pentru a obține rolul de utilizator este pur și simplu după cum urmează:

 $user = wp_get_current_user(); // obținerea și setarea utilizatorului curent

        $roluri = ( array ) $utilizator->roluri; // obţinerea rolului

        $roles[0] //rol de utilizator curent

Ar trebui să combinăm acest cod cu acțiunea anterioară pre_get_posts, iar codul care va ascunde produsul pentru toți utilizatorii se așteaptă de la administrator este următorul:

 /**
 * Ascundeți produsul WooCommerce în funcție de rolul utilizatorului, ca în acest caz, numai administratorul poate vedea acest produs 
 *
 * @param $interogare
 */


funcția njengah_hide_product_by_user_role($interogare) {
	
	 $user = wp_get_current_user(); // obținerea și setarea utilizatorului curent 
	 $roluri = ( array ) $utilizator->roluri; // obţinerea rolului 
	
	
    if ( $query->is_main_query() && is_woocommerce() && $roles[0] != 'administrator' ) {
		
        $tax_query = matrice(
            matrice(
                    'taxonomy' => 'product_cat',
                    'field' => 'slug',
                    'terms' => array( 'uncategorised','auto-parts'), // Nu afișați produse din categoria 'auto parts' pe pagina magazinului.
                    „operator” => „NU ÎN” // exclude
                )
            );

        $interogare->set('tax_query', $tax_query);
    }
}

add_action( 'pre_get_posts', 'njengah_hide_product_by_user_role');

După cum puteți vedea în această linie de cod în care verificăm condiționat interogarea, am introdus condiția de a verifica dacă rolul utilizatorului nu este admin – $roles[0] != 'administrator' apoi continuăm cu interogarea. Acesta este modul în care ascundeți produsele WooCommerce în funcție de rolul de utilizator.

Puteți explica acest exemplu pentru a se potrivi nevoilor dvs. specifice și, de asemenea, puteți combina toate aceste cazuri pentru a crea o modalitate condiționată de a ascunde produsele WooCommerce.

Gânduri finale

În această postare, am evidențiat cele trei moduri comune în care puteți ascunde produsele WooCommerce, care includ ascunderea în funcție de rolul utilizatorului, ascunderea produselor cu excepția cazului în care utilizatorul este conectat și ascunderea produselor WooCommerce fără oricare dintre aceste condiții. De asemenea, am subliniat cel mai simplu mod de a ascunde produsele WooCommerce utilizând opțiunea de vizibilitate a catalogului care este furnizată în ecranul de editare a produsului. Sper că acum puteți implementa cu ușurință oricare dintre aceste soluții pentru a ascunde produsele WooCommerce din magazinul dvs.