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 4 anni 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 anni 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 anni 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' );

    }

    Comments are closed.