17

I have a custom template for a woocommerce category page to only display the categories. I have got the system to get a list of the child categories (by using get_term_children($id, 'product_cat') and get_term_by(...)), but it only returns objects containing all the required information, except the thumbnail data. Does anyone know how I can get the thumbnail for the term?

topherg
  • 4,203
  • 4
  • 37
  • 72

5 Answers5

32

Sorted it, here's the code I used:

$thumbnail_id = get_woocommerce_term_meta( $cat->term_id, 'thumbnail_id', true );
$image = wp_get_attachment_url( $thumbnail_id );
topherg
  • 4,203
  • 4
  • 37
  • 72
  • But that's the full-size image. Does WooCommerce not provide all image sizes like a normal post attachment does? What if I want to get the actual thumbnail size, or large size, etc.? – Joel Worsham Apr 22 '15 at 14:19
  • 1
    Nevermind, got it. `$image = wp_get_attachment_image_src( $thumbnail_id, $size )`. Then `$image[0]` – Joel Worsham Apr 22 '15 at 14:21
  • 3
    get_woocommerce_term_meta is depricated now (since wc 3.6.0). Use get_term_meta instead. – Nikolay Sergeevich Sep 19 '20 at 10:17
11

If the get_woocommerce_term_meta() function does not work for you then you can try the get_term_meta()function instead.

You can get the WooCommerce product category thumbnail with the following code-

<?php
$thumbnail_id = get_term_meta( $cat->term_id, 'thumbnail_id', true );
$image_url = wp_get_attachment_url( $thumbnail_id ); // This variable is returing the product category thumbnail image URL.
Eh Jewel
  • 619
  • 8
  • 14
11
<?php
$thumbnail_id = get_term_meta( $cat->term_id, 'thumbnail_id', true );
$image_url    = wp_get_attachment_url( $thumbnail_id ); // This variable is returing the product category thumbnail image URL.

Notice: get_woocommerce_term_meta is deprecated

Omid Ahmadyani
  • 1,430
  • 13
  • 15
3

Had a similar setup but when I used what you did I didnt actually get the thumbnail file I got the full image file so instead I used this: wp_get_attachment_thumb_url so that my output url would be "../my-images"/image-150x150.jpg" and actually got it to pull the thumbnail image, just incase anyone runs into a similar situation..

Derek
  • 4,747
  • 7
  • 44
  • 79
0

try this one

<?php 
    get_term_meta($term->term_id,'thumbnail_id',true);
?>
JON
  • 965
  • 2
  • 10
  • 28
  • term_id,'thumbnail_id',true);?> – mohamad mehdi hajati Sep 01 '22 at 07:04
  • Remember that Stack Overflow isn't just intended to solve the immediate problem, but also to help future readers find solutions to similar problems, which requires understanding the underlying code. This is especially important for members of our community who are beginners, and not familiar with the syntax. Given that, **can you [edit] your answer to include an explanation of what you're doing** and why you believe it is the best approach? – Jeremy Caney Sep 22 '22 at 00:28