WooCommerce - cum să afișez categoria produsului deasupra acestuia?

7 mar. 2013, 15:33:55
Vizualizări: 94.4K
Voturi: 4

Sunt începător în modificarea WooCommerce. Sper că cineva mă poate ajuta cu o problemă pe care o am în timp ce încerc să fac o mică modificare la plugin pentru a răspunde unei cerințe de la clientul meu.

Încerc să modific WooCommerce pentru a afișa numele categoriei pentru fiecare produs. Doresc ca numele categoriei să fie afișat deasupra imaginii produsului pe pagina principală a magazinului. (vederea în care sunt afișate mai multe produse simultan pe ecran)

Am căutat peste tot și nu reușesc să găsesc cum să apelez product->category pentru a obține numele categoriei pentru fiecare produs afișat.

În fișierele WooCommerce, am găsit content-product.php
(în templates/content-product.php)

și aș dori să injectez categoria pentru fiecare produs adăugând la această acțiune: do_action( 'woocommerce_before_shop_loop_item_title' );

Înțeleg că pot adăuga o funcție în functions.php al temei mele pentru a injecta niște cod nou în ''woocommerce_before_shop_loop_item_title'

dar nu reușesc să înțeleg cum să obțin categoria pentru fiecare produs.

Poate cineva să mă ajute? Sau să-mi spună unde aș putea găsi răspunsul?

Orice ajutor ar fi foarte apreciat, vă mulțumesc!

1
Comentarii

De ce această întrebare este off topic, XD.....

Brethlosze Brethlosze
7 iun. 2016 06:47:47
Toate răspunsurile la întrebare 2
5
15

Titlul produsului este adăugat la hook-ul woocommerce_single_product_summary cu prioritatea 5, așa că va trebui să adăugați același hook cu o prioritate mai mică (mai devreme). Aceasta se adaugă în fișierul functions.php al temei. Presupun că atunci când spuneți "categorie" vă referiți la categoria de produse WooCommerce, deci acest cod va returna prima categorie și o va afișa înaintea titlului produsului:

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
Comentarii

Mulțumesc mult! Soluția ta a funcționat perfect și da, ai ghicit corect că mă refeream la categoria de produse WooCommerce, nu la categoria de pagini WordPress.

user28546 user28546
19 mar. 2013 00:48:45

Super! Dacă a funcționat și ți-a rezolvat întrebarea, poți să o marchezi ca răspuns?

helgatheviking helgatheviking
19 mar. 2013 01:09:38

Bună helgatheviking, Îți mulțumesc din nou pentru ajutor. Îmi pare rău, sunt începător și nu văd cum să marchez asta ca răspuns?!?

user28546 user28546
26 mar. 2013 21:21:35

Ar trebui să existe o bifă lângă toate răspunsurile. Când dai clic pe ea, aceasta va deveni verde pentru a indica că acesta este răspunsul corect. Alegerea răspunsurilor menține procentajul tău ridicat, astfel încât oamenii vor fi mai înclinați să te ajute în viitor. Te rugăm să citești secțiunea "cum să pun întrebări" din Întrebări frecvente (FAQ)

helgatheviking helgatheviking
27 mar. 2013 10:52:56

Mulțumesc pentru această soluție. Dar am o categorie de produse și în interior o subcategorie de produse. Când adaug codul de mai sus, doar subcategoria de produse este afișată. Cum pot afișa primul părinte din acest arbore?

codajoao codajoao
20 iun. 2015 06:26:11
2

ai nevoie de funcția get_categories, care acceptă următorii parametri:

get_categories( $separator, $before, $after )

deci în cea mai simplă formă (presupunând un singur categorie per produs), adaugă <?php echo $product->get_categories(); ?> în fișierul content-product.php (linia 53). Dacă ai mai multe categorii, poți face ca pe pagina de produs individual:

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

rețineți că dacă doriți să afișați titlul deasupra imaginii în miniatură, ar trebui să-l plasați la linia 43, dar asta complică lucrurile deoarece orice etichete de 'reducere' etc. ar putea rămâne pe loc (în loc să se miște împreună cu imaginea în miniatură).

Ewout Ewout
10 mar. 2013 14:43:14

A trebuit să folosesc $_product->get_categories (cu underscore în $_product) și a funcționat perfect. Mulțumesc!

Peanuts Peanuts
9 feb. 2017 15:19:17