WooCommerce - ¿cómo mostrar la categoría del producto encima del producto?

7 mar 2013, 15:33:55
Vistas: 94.4K
Votos: 4

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!

1
Comentarios

¿Por qué esta pregunta está fuera de tema, XD.....

Brethlosze Brethlosze
7 jun 2016 06:47:47
Todas las respuestas a la pregunta 2
5
15

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 );
10 mar 2013 14:56:55
Comentarios

¡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.

user28546 user28546
19 mar 2013 00:48:45

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

helgatheviking helgatheviking
19 mar 2013 01:09:38

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

user28546 user28546
26 mar 2013 21:21:35

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)

helgatheviking helgatheviking
27 mar 2013 10:52:56

Gracias por esta solución. Pero tengo una categoría de producto y dentro una subcategoría de producto. Cuando añado el código anterior solo se muestra la subcategoría de producto. ¿Cómo puedo mostrar el primer padre de este árbol?

codajoao codajoao
20 jun 2015 06:26:11
2

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>' ); ?>
10 mar 2013 14:29:41
Comentarios

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

Ewout Ewout
10 mar 2013 14:43:14

Tuve que usar $_product->get_categories (con el guión bajo en $_product) y funcionó perfectamente. ¡Gracias!

Peanuts Peanuts
9 feb 2017 15:19:17