Visualizzare prodotti di una categoria specifica nella pagina del negozio

28 apr 2013, 13:47:19
Visualizzazioni: 33.2K
Voti: 6

So che molte persone hanno fatto questa domanda ma non ho trovato un modo appropriato per farlo. Come aggiungere una semplice meta_query (product_cat) prima dell'esecuzione della query della pagina del negozio.

Forse utilizzando un filtro?

Cordiali saluti,

Adrien

0
Tutte le risposte alla domanda 3
0
19

La pagina del negozio è in realtà una pagina di archivio per i post di tipo 'product'. Il suo template si trova in woocommerce/archive-product.php.

È necessario utilizzare l'azione pre_get_posts per preprocessare la query prima del loop, i conditional_tags per riconoscere che ci si trova nella pagina di archivio dei prodotti, e una taxonomy query per filtrare le categorie di prodotti, che appartengono alla tassonomia 'product_cat'.

Ad esempio, il seguente codice (posizionato nel functions.php del tuo tema o in un plugin) mostrerà solo i prodotti con la categoria 'type-1':

 add_action('pre_get_posts','shop_filter_cat');

 function shop_filter_cat($query) {
    if (!is_admin() && is_post_type_archive( 'product' ) && $query->is_main_query()) {
       $query->set('tax_query', array(
                    array ('taxonomy' => 'product_cat',
                                       'field' => 'slug',
                                        'terms' => 'type-1'
                                 )
                     )
       );   
    }
 }

Puoi anche escludere le categorie utilizzando 'operator' => NOT IN, e 'terms' può essere un array di slug di categorie di prodotti.

Una buona introduzione alla personalizzazione delle query è http://www.billerickson.net/customize-the-wordpress-query/

29 apr 2013 03:26:54
0

Questo ha funzionato per me:

[product_category category="LA TUA CATEGORIA" per_page="8" columns="3" orderby="date" order="desc"]
23 mag 2015 19:12:27
1

Se vuoi mostrare prodotti da una specifica categoria nella tua pagina del negozio, puoi inserire il seguente codice nel file function.php del tuo tema.

// Esegui prima che inizi il loop
add_action( 'woocommerce_before_shop_loop', 'techlyse_before_action', 15 );
function techlyse_before_action() {
    // Per assicurarsi che sia la pagina del negozio
    if ( is_shop() ) {
        $query_args['tax_query'] =  array(
            array( 
                'taxonomy' => 'product_cat',   
                'field' => 'id',  // Se vuoi lo slug della categoria, passa slug invece di id e 1330 invece dello slug della categoria. 
                'terms' => 1330 
            )
        );  
        //print_r($query_args);
        query_posts( $query_args );
    }
} 

// Esegui dopo che il loop termina
add_action( 'woocommerce_after_shop_loop', 'techlyse_after_action', 15 );
function techlyse_after_action() {
    // Per assicurarsi che sia la pagina del negozio
    if ( is_shop() ) {
        // Resetta la query dopo il loop
        wp_reset_query();
    }
}
4 apr 2019 14:28:29
Commenti

Non è il modo giusto per farlo, ma ho trovato questo utile per un'altra situazione, quindi grazie.

MarcGuay MarcGuay
23 nov 2021 21:52:00