I am looking for category URL on the product detail page. I am using below code to get category ID but I am not sure how to get category URL.
<?php
$terms = get_the_terms( $post->ID, 'product_cat' );
foreach ($terms as $term) {
echo $product_cat_id = $term->term_id;
break;
}
If you have the product category id
you can use
$link = get_term_link( $product_cat_id, 'product_cat' );
To get the url of the product category.
edit be sure that the product_cat_id is an integer, use the following line to be completely save:
$link = get_term_link( (int)$product_cat_id, 'product_cat' );
You can use get_category_link(int|object $category)
https://developer.wordpress.org/reference/functions/get_category_link/
And here how I use it on 'content-product_cat.php
'
<a href="<?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>
If a product belongs to one or many category then you can directly access the $terms[0]
location and retrieve the URL
Here is the code:
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' );
}
Now just check $link
is empty or not and do your required stuff.
Code is tested and works.
Hope this helps!
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With