Ecommerce: come escludere i prodotti in saldo dalla prima pagina dello shop (woocommerce)

Domande & RisposteCategoria: WordpressEcommerce: come escludere i prodotti in saldo dalla prima pagina dello shop (woocommerce)
Luca asked 5 giorni ago

Vorrei far visualizzare tutti i prodotti nella prima pagina del negozio ma escludere quelli in saldo, per i quali ho pagina a parte. Come fare a filtrare?
Grazie

2 Answers
tuttoblog answered 4 giorni ago

Una soluzione pratica è creare categorie aggiuntive (tipo “novità”, “saldi”), poi creare una pagina ad hoc (e nominarla ad esempio home, oppure novità, ecc., e in questa inserire gli shortcodes di woocommerce che richiamano tali categorie.
Se ad esempio hai creato le categorie novita e saldi (oltre ad altre categorie, come pc, computer, oppure vestiti, ecc. a seconda del tuo negozio), in questa pagina ad hoc potrai mettere il seguente shortcode:

[recent_products category="saldi" operator="NOT IN"]

Questo mostrerà i prodotti recenti, ad eccezione di quelli elencati nella categoria “saldi”

Successivamente, e in maniera opzionale, potresti anche impostare tale pagine come home di woocommerce (Woocommerce –> Impostazioni).

magnaromagna answered 4 giorni ago

Un’altra soluzione più fine ma a livello di codice è proprio inserire l’istruzione in php per far visualizzare tutti i prodotti ma escludere quella particolare categoria. Il seguente codice va inserito nel file functions.php del vostro tema wordpress (ideale è utilizzare un tema child/figlio, per non perdere le modifiche in caso di update del tema). Funziona richiamando lo slug (url) della categoria, cioè se la categoria ha come url “saldi”, allora il codice è il seguente:

add_action( 'pre_get_posts', 'custom_pre_get_posts_query' );

function custom_pre_get_posts_query( $q ) {

if ( ! $q->is_main_query() ) return;
if ( ! $q->is_post_type_archive() ) return;

if ( ! is_admin() && is_shop() ) {

$q->set( 'tax_query', array(array(
'taxonomy' => 'product_cat',
'field' => 'slug',
'terms' => array( 'knives' ), // Don't display products in the knives category on the shop page
'operator' => 'NOT IN'
)));

}

remove_action( 'pre_get_posts', 'custom_pre_get_posts_query' );

}