Quiero mostrar etiquetas meta debajo de cada título de categoría. Puedo ver que hay este código para mostrar listas de etiquetas de productos para cada producto, pero lo que realmente quiero son etiquetas de productos para cada categoría y luego mostrarlas bajo el título de la categoría en la página.
<?php global $product; ?> <div class="product-tags"> <?php echo wc_get_product_tag_list( $product->get_id(), ', ' ); ?> </div>Captura de pantalla de ejemplo:
Bueno, ya conoce/tiene el nombre de la categoría (es decir, 'Equipo de café'), por lo que podría usarlo para obtener las etiquetas relevantes, pero para hacerlo, crearemos una función en el functions.php de su activo. tema, así:
El siguiente código va a su archivo functions.php de su tema activo:
function your_theme_get_tags_based_on_cat($cat_name) { $cat_id = get_cat_ID($cat_name); $tag_query = new WP_Query(array( 'post_type' => 'product', 'posts_per_page' => -1, 'post_status' => 'publish', 'tax_query' => array( array( 'taxonomy' => 'product_cat', 'field' => 'term_id', 'terms' => $cat_id, 'operator' => 'IN' ) ) )); $all_tags = array(); while ($tag_query->have_posts()) { $tag_query->the_post(); $producttags = get_the_tags(); if ($producttags) { foreach ((array)$producttags as $tag_obj) { $all_tags[] = $tag_obj->term_id . '-' . $tag_obj->name; } } }; $tags_array = array_unique($all_tags); $new_array = array_map(function ($val) { return explode("-", $val); }, $tags_array); return new_array; } La función anterior devolverá una matriz asociativa que contiene tag id de la tag name de la etiqueta de las etiquetas correspondientes de su categoría de PRODUCTO .
Nota al margen:
si necesita usarlo para las publicaciones de blog de su sitio de wordpress, puede cambiar/modificar la consulta intercambiando'post_type' => 'product'con'post_type' => 'posts'. Entonces, su consulta para publicaciones de blog sería algo como esto:
$blog_tag_query = new WP_Query(array('post_type'=>'post','post_status' =>'publish','cat'=>$cat_id,'posts_per_page'=>-1));Si decide usarlo para las publicaciones de su blog, también recuerde cambiar
get_term_link((int)$tag[0], 'product_tag')conget_term_link((int)$tag[0], 'post_tag')en su plantilla .
¡Ahora tiene una función mágica :) que puede usar en cualquier lugar donde necesite una lista de etiquetas para una categoría específica!
Entonces, usemos nuestra función en la plantilla de su página para completar las etiquetas correspondientes para la categoría actual, así:
$cat_name = 'Coffee Equipment'; $tags_array = your_theme_get_tags_based_on_cat($cat_name); foreach ($tags_array as $tag) { echo '<a class="item" href="' . get_term_link((int)$tag[0], 'product_tag') . '">' . $tag[1] . '</a>'; }; ¡Acabo de probar y funciona perfectamente bien! Siéntase libre de personalizarlo según sea necesario en su html template/markup .