April
April

Reputation: 45

How to limit returned product categories with thumbnails (WooCommerce)

My goal here is to show only child categories under category ID 93 (vendors) with a thumbnail and URL so people can click on the vendor logo and see other products in that category. I have everything mostly working, but I'm not sure how to limit my request to show only one child from my parent. This is admittedly very amateur - I am not a backend developer nor do I really understand how to write PHP.

<?php
echo $wp_query;

$terms_post = get_the_terms($product->ID, 'product_cat');

foreach ($terms_post as $term_cat) { 
    $term_cat_id = $term_cat->term_id;
    $category_url = get_term_link( $term_cat_id, 'product_cat', true );
    $thumbnail_id = get_woocommerce_term_meta($term_cat_id, 'thumbnail_id', true );
    $image_url = wp_get_attachment_url( $thumbnail_id );
    echo '<a href="'. $category_url .'"><img src="' . $image_url . '" alt="" width="50" height="50"></a>'; 
} 
?>

Upvotes: 4

Views: 100

Answers (1)

Rajeev
Rajeev

Reputation: 1488

To show only 1 child from the parent, just use array_slice().

foreach(array_slice($terms_post, 0, 1) as $term_cat ) { 
    $term_cat_id = $term_cat->term_id;
    $category_url = get_term_link( $term_cat_id, 'product_cat', true );
    $thumbnail_id = get_woocommerce_term_meta($term_cat_id, 'thumbnail_id', true );
    $image_url = wp_get_attachment_url( $thumbnail_id );
    echo '<a href="'. $category_url .'"><img src="' . $image_url . '" alt="" width="50" height="50"></a>'; 
} 

Do let me know if it works.

EDITED:

Use the below code to get child categories using a parent category slug.

<?php
global $post;
$category_id = get_term_by('slug', 'PARENT-CAT-SLUG', 'product_cat');

$terms = get_the_terms($post->ID, 'product_cat');
foreach ($terms as $term) {
    if($term->parent === $category_id->term_id) { ?>
       <span class="product-sub-cats"><?php echo $term->name; ?></span>
      <?php  break;
    }
}
 ?>

Replace "PARENT-CAT-SLUG" with the slug of your Parent Category.

Upvotes: 3

Related Questions