Afișarea produselor dintr-o categorie specifică în pagina magazinului

28 apr. 2013, 13:47:19
Vizualizări: 33.2K
Voturi: 6

Știu că mulți oameni au pus această întrebare, dar nu am găsit o modalitate potrivită de a o face. Cum să adaug o meta_query simplă (product_cat) înainte de executarea query-ului din pagina magazinului.

Poate prin folosirea unui filtru?

Cu stimă,

Adrien

0
Toate răspunsurile la întrebare 3
0
19

Pagina de magazin este de fapt o pagină de arhivă pentru articolele de tip 'product'. Șablonul său se află în woocommerce/archive-product.php.

Trebuie să folosiți acțiunea pre_get_posts pentru a preprocesa interogarea înaintea buclei, conditional_tags pentru a recunoaște că vă aflați pe pagina de arhivă de produse și o interogare taxonomie pentru a filtra categoriile de produse, care aparțin taxonomiei 'product_cat'.

De exemplu, următorul cod (plasat în functions.php al temei sau într-un plugin) va afișa doar produsele din 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'
                                 )
                     )
       );   
    }
 }

De asemenea, puteți exclude categorii folosind 'operator' => 'NOT IN', iar 'terms' poate fi un array de slug-uri ale categoriilor de produse.

O introducere bună în personalizarea interogărilor este http://www.billerickson.net/customize-the-wordpress-query/

29 apr. 2013 03:26:54
0

Aceasta a funcționat pentru mine:

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

Dacă doriți să afișați produse dintr-o anumită categorie pe pagina magazinului, puteți insera codul de mai jos în fișierul function.php al temei.

// Execută înainte de începerea buclei
add_action( 'woocommerce_before_shop_loop', 'techlyse_before_action', 15 );
function techlyse_before_action() {
    //Pentru a verifica dacă este pagina magazinului
    if ( is_shop() ) {
        $query_args['tax_query'] =  array(
            array( 
                'taxonomy' => 'product_cat',   
                'field' => 'id',  //Dacă doriți slug-ul categoriei, treceți slug în loc de id și 1330 în loc de slug-ul categoriei. 
                'terms' => 1330 
            )
        );  
        //print_r($query_args);
        query_posts( $query_args );
    }
} 

// Execută după încheierea buclei
add_action( 'woocommerce_after_shop_loop', 'techlyse_after_action', 15 );
function techlyse_after_action() {
    //Pentru a verifica dacă este pagina magazinului
    if ( is_shop() ) {
        //Resetează interogarea după buclă
        wp_reset_query();
    }
}
4 apr. 2019 14:28:29
Comentarii

Nu este modul corect de a face acest lucru, dar am găsit acest lucru util pentru o altă situație, așa că îți mulțumesc.

MarcGuay MarcGuay
23 nov. 2021 21:52:00