justin k
Estoy buscando la URL de la categoría en la página de detalles del producto. Estoy usando el siguiente código para obtener el ID de la categoría, pero no estoy seguro de cómo obtener la URL de la categoría.
<?php
$terms = get_the_terms( $post->ID, 'product_cat' );
foreach ($terms as $term) {
echo $product_cat_id = $term->term_id;
break;
}
bas van stein
Si tienes la categoría de producto id
puedes usar
$link = get_term_link( $product_cat_id, 'product_cat' );
Para obtener la url de la categoría del producto.
editar asegúrese de que product_cat_id sea un número entero, use la siguiente línea para guardarlo por completo:
$link = get_term_link( (int)$product_cat_id, 'product_cat' );
-
si puedo poner esa línea en foreach no muestra nada.
– Justin K.
10 de diciembre de 2015 a las 15:42
-
@JustinK Mi error, olvidé el segundo parámetro,
get_term_link($term, $taxonomy)
–Bas van Stein
10 de diciembre de 2015 a las 15:59
-
está funcionando, pero si ese producto tiene dos categorías, se muestran ambas debido a foreach. puedo conseguir solo el primero?
– Justin K.
10 de diciembre de 2015 a las 16:10
-
seguro en lugar de
foreach
Solo usa$terms[0]
. Cuando funciona, puede marcar o votar la respuesta para mostrar a otros usuarios que ayudó.–Bas van Stein
10 de diciembre de 2015 a las 16:25
Puedes usar get_category_link(int|object $category)
https://developer.wordpress.org/reference/functions/get_category_link/
Y aquí cómo lo uso en ‘content-product_cat.php
‘
<a href="https://stackoverflow.com/questions/34205713/<?php esc_url_e( get_category_link( $category->term_id ) ); ?>">
<h5 class="product-name"><?php esc_attr_e( $category->name ); ?></h5>
<span class="dima-divider line-center line-hr small-line"></span>
<span class="count">
<?php if ( $category->count > 0 ) {
echo apply_filters( 'woocommerce_subcategory_count_html', $category->count . ' ' . ( $category->count > 1 ? __( 'Products', 'woocommerce' ) : __( 'Product', 'woocommerce' ) ), $category );
}?>
</span>
</a>
Si un producto pertenece a una o varias categorías, puede acceder directamente a la $terms[0]
ubicación y recuperar la URL
Aquí está el código:
global $post;
$link = '';
$terms = get_the_terms( $post->ID, 'product_cat' );
if(!empty($terms[0])){
$link = get_term_link( $terms[0]->term_id, 'product_cat' );
}
Ahora solo revisa $link
está vacío o no y haz lo que necesites.
El código está probado y funciona.
¡Espero que esto ayude!