Come nascondere un prodotto in WooCommerce o nascondere i prodotti per categoria o ruoli

Pubblicato: 2020-02-24

Ci sono molti modi che puoi usare per nascondere un prodotto specifico in WooCommerce e in questo post; esploreremo ciascuno di questi modi per nascondere un prodotto in WooCommerce. Ci sono diversi motivi per cui dovresti considerare di nascondere un prodotto dal negozio WooCommerce, ma in cima alla lista c'è quando il prodotto è esaurito o quando il prodotto è riservato a clienti o ruoli utente specifici.

Nascondi prodotto WooCommerce

Se vuoi nascondere i prodotti esauriti, dovresti prima considerare di aggiungere l'etichetta esaurita sul prodotto invece di nascondere il prodotto.

Tuttavia, se vuoi ancora nascondere questi prodotti esauriti o qualsiasi altro prodotto WooCommerce, condividerò in questo post come puoi nascondere i prodotti per ID, nome o categoria.

Nascondi il prodotto WooCommerce usando le opzioni

WooCommerce per impostazione predefinita viene fornito con un'eccellente opzione che consente agli utenti di controllare la visibilità di un prodotto.

Puoi creare un prodotto nascosto in WooCommerce controllando l'opzione di visibilità prima di pubblicare l'immagine. Per nascondere il prodotto in WooCommerce utilizzando la visibilità, devi seguire i seguenti passaggi:

  1. Accedi alla dashboard del tuo sito WordPress
  2. Fare clic sul menu dei prodotti come mostrato nell'immagine sottostante in modo da accedere al prodotto che si desidera nascondere agli utenti utilizzando un'opzione di visibilità. Come nascondere un prodotto in Woocommerce
  3. Seleziona il prodotto dall'elenco di tutti i prodotti che desideri nascondere come mostrato di seguito e fai clic sulla modifica per accedere alla schermata di modifica del prodotto: Come nascondere un prodotto in Woocommerce
  4. Nella schermata di modifica del prodotto sul lato destro sotto il metabox di pubblicazione sotto c'è un'opzione denominata 'Visibilità catalogo' Fare clic su questo collegamento e apparirà un menu a discesa con le opzioni e l'ultima opzione è Nascosta.
    Quando selezioni questa opzione radio e fai clic su ok, quindi aggiorna il post, il prodotto verrà nascosto dal catalogo del negozio. Come illustrato in questi tre passaggi (1,2,3): Come nascondere un prodotto in Woocommerce
  5. Quando salvi queste opzioni e aggiorni il post, la visibilità del prodotto verrà impostata su nascosta come puoi vedere nel frontend del negozio: Come nascondere un prodotto in Woocommerce
  6. Se controlli l'opzione di visibilità del catalogo nel back-end della schermata di modifica del prodotto, dovresti vedere che è stata aggiornata in nascosta quando il post è stato aggiornato: Come nascondere il prodotto in Woocommerce

Questo è il modo più rapido per nascondere un prodotto WooCommerce dal catalogo del negozio. Ci sono altri modi in cui puoi usare come aggiungere codice al tema figlio. Esploriamo più opzioni che puoi utilizzare per nascondere il prodotto in WooCommerce.

Woocommerce Nascondi prodotti di una categoria specifica dalla pagina del negozio

Se desideri nascondere prodotti specifici dalla pagina del negozio in WooCommerce, puoi ottenere ciò utilizzando un gancio di azione che prende di mira la query della pagina del negozio "woocommerce_product_query".

La funzione di callback dovrebbe utilizzare $tax_query per restringere il campo ai termini associati al prodotto che desideri nascondere.

In questo caso, la chiave dei termini nell'array $tax_query è equivalente alla categoria/tag come ho spiegato nel post come ottenere l'attuale categoria di prodotti WooCommerce.

Supponiamo di voler nascondere questo prodotto dalla categoria "ricambi auto".

nascondi prodotto woocommerce

Possiamo usare il seguente frammento di codice aggiunto al file functions.php per nascondere il prodotto dalla pagina del negozio:

 /**
 * Nascondi il prodotto WooCommerce per categoria dalla pagina del negozio.
 *
 * @param $q
 */
 

add_action('woocommerce_product_query', 'njengah_hide_product_by_category_shop_page'); 

funzione njengah_hide_product_by_category_shop_page($q) {

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

    $query_imposta[] = array(
           'tassonomia' => 'gatto_prodotto',
           'campo' => 'lumaca',
           'terms' => array( 'uncategorized', 'auto-parts'), // Non visualizzare i prodotti nella categoria 'auto parts' nella pagina del negozio.
           'operatore' => 'NON IN'
    );


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

}

Aggiungi questo codice alle funzioni del tema e puoi sostituire la categoria "ricambi automatici" con qualsiasi altra categoria in cui desideri nascondere i prodotti e questo nasconderà efficacemente i prodotti di quella categoria nella pagina del negozio come mostrato di seguito:

nascondi prodotto woocommerce

WooCommerce Nascondi i prodotti a meno che non sia stato effettuato l'accesso

Un altro modo comune per nascondere i prodotti in WooCommerce prevede la limitazione della visibilità del prodotto in base allo stato dell'utente, registrato o meno.

Il primo passo è ovviamente controllare se l'utente è loggato. Ho spiegato in dettaglio qui – come verificare se l'utente è loggato in WordPress.

Utilizzeremo questo codice per controllare lo stato di accesso, quindi combinarlo con la query per nascondere i prodotti WooCommerce in base allo stato di accesso dell'utente.

Il codice dovrebbe essere il seguente:

 **
 * Nascondi il prodotto WooCommerce se l'utente non ha effettuato l'accesso 
 *
 * @param $ query
 */
 

funzione njengah_hide_product_if_user_not_logged($query) {
	
	
    if ( $query->is_main_query() && is_woocommerce() && !is_user_logged_in() ) {
		
        $query_imposta = array(
            Vettore(
                    'tassonomia' => 'gatto_prodotto',
                    'campo' => 'lumaca',
                    'terms' => array( 'uncategorized', 'auto-parts'), // Non visualizzare i prodotti nella categoria 'auto parts' nella pagina del negozio.
                    'operatore'=> 'NON IN' // escludi
                )
            );

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

add_action( 'pre_get_posts', 'njengah_hide_product_if_user_not_logged');

Come puoi vedere, stiamo verificando in modo condizionale se l'utente ha effettuato l'accesso utilizzando la funzione is_user_logged_in() prima di poter procedere con la query.

Woocommerce Nascondi prodotti per ruoli utente

Puoi anche nascondere i prodotti in base ai ruoli utente. Devi prima ottenere l'utente attualmente connesso e il suo ruolo utente come ho descritto nel tutorial precedente su come ottenere il ruolo utente corrente in WordPress . Questo codice per ottenere il ruolo utente è semplicemente il seguente:

 $utente = wp_get_utente_corrente(); // ottenere e impostare l'utente corrente

        $ruoli = (array) $utente->ruoli; // ottenere il ruolo

        $ruoli[0] //ruolo utente corrente

Dovremmo combinare questo codice con la precedente azione pre_get_posts e il codice che nasconderà il prodotto per tutti gli utenti che si aspettano che l'amministratore sia il seguente:

 /**
 * Nascondi il prodotto WooCommerce dal ruolo utente come in questo caso solo l'amministratore può vedere questo prodotto 
 *
 * @param $ query
 */


funzione njengah_hide_product_by_user_role($query) {
	
	 $utente = wp_get_utente_corrente(); // ottenere e impostare l'utente corrente 
	 $ruoli = (array) $utente->ruoli; // ottenere il ruolo 
	
	
    if ( $query->is_main_query() && is_woocommerce() && $roles[0] != 'amministratore' ) {
		
        $query_imposta = array(
            Vettore(
                    'tassonomia' => 'gatto_prodotto',
                    'campo' => 'lumaca',
                    'terms' => array( 'uncategorized', 'auto-parts'), // Non visualizzare i prodotti nella categoria 'auto parts' nella pagina del negozio.
                    'operatore'=> 'NON IN' // escludi
                )
            );

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

add_action('pre_get_post', 'njengah_hide_product_by_user_role');

Come puoi vedere in questa riga di codice in cui stiamo verificando condizionalmente la query, ho introdotto la condizione per verificare se il ruolo utente non è admin – $roles[0] != 'administrator' quindi procediamo con la query. Questo è il modo in cui nascondi i prodotti WooCommerce in base al ruolo dell'utente.

Puoi esporre questo esempio per soddisfare le tue esigenze specifiche e puoi anche combinare tutti questi casi per creare un modo condizionale per nascondere i prodotti WooCommerce.

Pensieri finali

In questo post, abbiamo evidenziato i tre modi comuni in cui puoi nascondere i prodotti WooCommerce che includono nascondere per ruolo utente, nascondere i prodotti a meno che l'utente non abbia effettuato l'accesso e nascondere i prodotti WooCommerce senza nessuna di queste condizioni. Abbiamo anche delineato il modo più semplice per nascondere i prodotti WooCommerce utilizzando l'opzione di visibilità del catalogo fornita nella schermata di modifica del prodotto. Spero che ora tu possa implementare facilmente una di queste soluzioni per nascondere i prodotti WooCommerce dal tuo negozio.