WooCommerce - cum să afișez categoria produsului deasupra acestuia?
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!

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 );

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.

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

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?!?

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)

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>' ); ?>

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ă).
