WooCommerce - come visualizzare la categoria del prodotto sopra l'immagine?

7 mar 2013, 15:33:55
Visualizzazioni: 94.4K
Voti: 4

Sono un principiante nel modificare WooCommerce. Spero che qualcuno possa aiutarmi con un problema che sto avendo mentre cerco di fare una piccola modifica al plugin per soddisfare una richiesta del mio cliente.

Sto cercando di modificare WooCommerce per visualizzare il nome della categoria per ogni prodotto. Voglio che il nome della categoria venga mostrato sopra l'immagine del prodotto nella pagina principale del negozio (la vista dove molti prodotti vengono mostrati contemporaneamente sullo schermo)

Ho cercato in giro, ma non riesco a trovare come richiamare product->category per ottenere il nome della categoria per ogni prodotto visualizzato.

Nei file di WooCommerce, ho trovato content-product.php
(in templates/content-product.php)

E vorrei inserire la categoria per ogni prodotto aggiungendo a questa azione: do_action( 'woocommerce_before_shop_loop_item_title' );

Capisco che posso aggiungere una funzione nel functions.php del mio tema per iniettare del nuovo codice in 'woocommerce_before_shop_loop_item_title'

Ma non riesco a capire come ottenere la categoria per ogni prodotto.

Qualcuno può aiutarmi? O dirmi dove potrei trovare la risposta?

Ogni aiuto sarà molto apprezzato, grazie!

1
Commenti

Perché questa domanda è fuori tema, XD.....

Brethlosze Brethlosze
7 giu 2016 06:47:47
Tutte le risposte alla domanda 2
5
15

Il titolo del prodotto viene aggiunto all'hook woocommerce_single_product_summary con priorità 5, quindi dovrai aggiungere lo stesso hook con una priorità più bassa (prima). Dovrai aggiungere questo codice al file functions.php del tuo tema. Presumo che quando dici "categoria" ti riferisci alla categoria del prodotto WooCommerce, quindi questo codice dovrebbe restituire la prima categoria e stamparla prima del titolo del prodotto:

function wpa89819_wc_single_product(){

    $product_cats = wp_get_post_terms( get_the_ID(), 'product_cat' );

    if ( $product_cats && ! is_wp_error ( $product_cats ) ){

        $single_cat = array_shift( $product_cats ); ?>

        <h2 itemprop="name" class="product_category_title"><span><?php echo $single_cat->name; ?></span></h2>

<?php }
}
add_action( 'woocommerce_single_product_summary', 'wpa89819_wc_single_product', 2 );
10 mar 2013 14:56:55
Commenti

Grazie mille! la tua soluzione ha funzionato alla perfezione e sì, hai indovinato che mi riferivo alla categoria di prodotto WooCommerce, non alla categoria di pagina WordPress.

user28546 user28546
19 mar 2013 00:48:45

Ottimo! Se ha funzionato e risolto la tua domanda, potresti selezionarla come risposta?

helgatheviking helgatheviking
19 mar 2013 01:09:38

Ciao helgatheviking, grazie ancora per il tuo aiuto. Scusa, sono un principiante e non riesco a capire come segnare questa come risposta?!?

user28546 user28546
26 mar 2013 21:21:35

Dovrebbe esserci un segno di spunta accanto a tutte le risposte. Quando clicchi su di esso diventerà verde per indicare che questa è la risposta corretta. Scegliere le risposte mantiene alta la tua percentuale in modo che le persone saranno più propense ad aiutarti in futuro. Per favore leggi la parte "come faccio a fare domande" delle FAQ

helgatheviking helgatheviking
27 mar 2013 10:52:56

Grazie per questa soluzione. Ma ho una categoria di prodotto e al suo interno una sottocategoria di prodotto. Quando aggiungo il codice sopra viene stampata solo la sottocategoria di prodotto. Come posso stampare il primo genitore di questo albero?

codajoao codajoao
20 giu 2015 06:26:11
2

hai bisogno della funzione get_categories, che accetta i seguenti argomenti:

get_categories( $separator, $before, $after )

quindi nella sua forma più semplice (assumendo solo una categoria per prodotto), basta aggiungere <?php echo $product->get_categories(); ?> al tuo content-product.php (riga 53). Se hai più categorie, puoi farlo come nella pagina del singolo prodotto:

<?php echo $product->get_categories( ', ', '<span class="posted_in">' . _n( 'Categoria:', 'Categorie:', sizeof( get_the_terms( $post->ID, 'product_cat' ) ), 'woocommerce' ) . ' ', '.</span>' ); ?>
10 mar 2013 14:29:41
Commenti

nota che se vuoi visualizzare il titolo sopra la miniatura, dovresti inserirlo alla riga 43, ma questo complica le cose poiché eventuali tag 'sale' ecc. potrebbero rimanere al loro posto (invece di spostarsi insieme alla miniatura).

Ewout Ewout
10 mar 2013 14:43:14

Ho dovuto usare $_product->get_categories (con l'underscore in $_product) e ha funzionato perfettamente. Grazie!

Peanuts Peanuts
9 feb 2017 15:19:17