WooCommerce - ¿cómo mostrar la categoría del producto encima del producto?
Soy principiante en la modificación de WooCommerce. Espero que alguien pueda ayudarme con un problema que tengo mientras intento hacer un cambio menor en el plugin para adaptarlo a una solicitud de mi cliente.
Estoy tratando de modificar WooCommerce para mostrar el nombre de la categoría de cada producto. Quiero que el nombre de la categoría se muestre encima de la imagen del producto en la página principal de la tienda. (la vista donde se muestran muchos productos en la pantalla a la vez)
He estado buscando, y no logro encontrar cómo llamar al product->category para obtener el nombre de la categoría de cada producto que se muestra.
En los archivos de WooCommerce, he encontrado content-product.php
(en templates/content-product.php)
y me gustaría inyectar la categoría para cada producto añadiendo a esta acción:
do_action( 'woocommerce_before_shop_loop_item_title' );
Entiendo que puedo agregar una función en el functions.php de mi tema para inyectar código nuevo en el 'woocommerce_before_shop_loop_item_title'
pero no logro descubrir cómo obtener la categoría de cada producto.
¿puede alguien ayudar? ¿o decirme dónde podría encontrar la respuesta?
¡cualquier ayuda será muy apreciada, gracias!

El título del producto se añade al hook woocommerce_single_product_summary
con prioridad 5, por lo que deberás añadir al mismo hook con una prioridad menor (anterior). Añadirías esto al archivo functions.php de tu tema. Presumo que cuando dices "categoría" te refieres a la categoría de producto de WooCommerce, así que esto debería devolver la primera e imprimirla antes del título del producto:
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 );

¡Muchas gracias! Tu solución funcionó perfectamente y sí, adivinaste correctamente que me refería a la categoría de producto de WooCommerce, no a la categoría de página de WordPress.

¡Genial! Si funcionó y resolvió tu pregunta, ¿podrías seleccionarla como la respuesta?

Hola helgatheviking, gracias nuevamente por tu ayuda. Lo siento, soy principiante y no veo cómo marcar esto como respondido?!?

Debe haber una marca de verificación junto a todas las respuestas. Cuando haces clic en ella, se pondrá verde para indicar que es la respuesta correcta. Seleccionar respuestas mantiene tu porcentaje alto, por lo que es más probable que la gente te ayude en el futuro. Por favor, lee la sección "cómo hacer preguntas" en las Preguntas Frecuentes (FAQ)

Necesitas la función get_categories, que toma los siguientes argumentos:
get_categories( $separator, $before, $after )
Así que en su forma más simple (asumiendo solo una categoría por producto), solo agrega <?php echo $product->get_categories(); ?>
a tu archivo content-product.php (línea 53).
Si tienes más categorías, puedes hacerlo como en la página de producto individual:
<?php echo $product->get_categories( ', ', '<span class="posted_in">' . _n( 'Categoría:', 'Categorías:', sizeof( get_the_terms( $post->ID, 'product_cat' ) ), 'woocommerce' ) . ' ', '.</span>' ); ?>

ten en cuenta que si deseas mostrar el título encima de la miniatura, deberás colocarlo en la línea 43, pero esto complica las cosas ya que cualquier etiqueta de 'oferta', etc. podría permanecer en su lugar (en lugar de moverse junto con la miniatura).
