Obtener el título de la categoría actual de taxonomía de producto en WooCommerce
Quiero mostrar el título de la categoría actual de taxonomía de producto en la página individual del producto.
El código siguiente funciona, pero devuelve todas las categorías de productos. Necesito ayuda para obtener solo la categoría actual.
<?php
global $post;
$args = array( 'taxonomy' => 'product_cat',);
$terms = wp_get_post_terms($post->ID,'product_cat', $args);
$count = count($terms);
if ($count > 0) {
foreach ($terms as $term) {
echo '<div style="direction:rtl;">';
echo 'Categoría: ' . $term->name;
echo '</div>';
}
}
?>
Después de varias horas de experimentar y buscar, ustedes son mi última esperanza para encontrar una solución. Gracias.

Podrías usar get_the_term_list
echo get_the_term_list( $post->ID, 'product_cat', '<div style="direction:rtl;">', '</div>', '' );
El sistema de mostrar 1 título de categoría en una página de producto individual falla si comienzas a agregar el ítem a múltiples categorías.
Una vez me volví loco en un proyecto donde un cliente estaba agregando elementos de portafolio a dos categorías y aún así quería que mostrara el título de la categoría "correcta" dependiendo del caso. Ese proyecto me llevó a crear el plugin Radio Buttons for Taxonomies para restringir a los usuarios a un solo término en ciertas taxonomías.

Como información adicional, usar get_the_term_list()
es exactamente lo que hace $product->get_categories()
.

@helgatheviking Gracias por tomarte el tiempo para ayudar. Ambas soluciones funcionan para una sola categoría.

En la mayoría de temas que conozco esto es estándar, pero el tuyo podría ser diferente. El siguiente código proviene del archivo meta.php
, que es responsable de mostrar los metadatos - categorías, etiquetas - en WooCommerce.
Código:
<?php
$size = sizeof( get_the_terms( $post->ID, 'product_cat' ) );
echo $product->get_categories( ', ', '<span class="posted_in">' . _n( 'Categoría:', 'Categorías:', $size, 'woocommerce' ) . ' ', '.</span>' );
?>
Edición:
Hace algún tiempo di una respuesta extendida a este problema:

Gracias, ialocin. Este código devuelve todas las categorías. No es lo que estoy buscando. Estoy buscando que se muestre la categoría única en la que te encuentras actualmente.

Tu solución muestra una sola categoría, pero aún no es la categoría actual. Abordaste el problema de tener múltiples categorías de nivel superior diciendo "no funcionará si un producto tiene múltiples categorías principales/de nivel superior, o al menos no las mostrará todas;"

Estás en una página de producto individual, si un producto tiene más de una categoría de nivel superior, ¿cómo puede haber una única categoría actual? @Kapitol

Buena pregunta. Podría ser que es imposible. Tal vez sea una solución tipo migas de pan. A continuación está lo que quería lograr.
En una página de categoría se muestra la categoría actual en la que estás. Al hacer clic en un producto dentro de esa categoría, te lleva al producto. Quiero un título que indique que vienes de la categoría anterior.

Lo sé, es imposible sin lógica adicional. Por cierto, las migas de pan tienen el mismo problema, ¿cómo deberían saber cuál es el camino correcto? Normalmente se elige uno, dependiendo de cómo la función detrás ordene los términos. Tu problema, por otro lado, puede resolverse pasando un valor a la página de producto individual desde la página de categoría de la que vienes, pero eso sería completamente diferente de la pregunta que hiciste. Deberías investigar eso y hacer una nueva pregunta. Esta en mi opinión está resuelta o es incontestable. @Kapitol
