Obtener la URL de la miniatura de una taxonomía
Así es como lo estoy intentando actualmente:
$taxonomies = array(
'product_cat'
);
$args = array(
'orderby' => 'name',
'order' => 'ASC',
'hide_empty' => false,
'exclude' => array(),
'exclude_tree' => array(),
'include' => array(),
'number' => '',
'fields' => 'all',
'slug' => '',
'parent' => '',
'hierarchical' => true,
'child_of' => 0,
'childless' => false,
'get' => '',
'name__like' => '',
'description__like' => '',
'pad_counts' => false,
'offset' => '',
'search' => '',
'cache_domain' => 'core'
);
$terms = get_terms($taxonomies, $args);
$print_terms = 0;
if ( ! empty( $terms ) && ! is_wp_error( $terms ) ){
foreach ( $terms as $term ) {
$term_img = wp_get_attachment_url( get_post_thumbnail_id($term->term_id) );
var_dump($term_img); /* Siempre devuelve Bool(false) */
Entonces la pregunta es,
¿Sabes qué estoy haciendo mal?
Por defecto, las taxonomías no tienen imágenes en miniatura. Sin saber cómo están configuradas, no puedo decir exactamente cómo obtener las miniaturas, pero en cuanto a "¿qué estoy haciendo mal?", get_post_thumbnail_id
acepta un ID de post o, si no se proporciona, asume el post actual dentro del Loop. Estás pasándole un term_id
, lo cual no va a funcionar. Puedes verlo en el código fuente:
32 function get_post_thumbnail_id( $post_id = null ) {
33 $post_id = ( null === $post_id ) ? get_the_ID() : $post_id;
34 return get_post_meta( $post_id, '_thumbnail_id', true );
35 }
Supongo que, si el term_id
coincide con un ID de post, obtendrías algo, pero no será lo que quieres o esperas.

La respuesta aceptada ya no es válida ya que woocommerce_get_term_meta
está obsoleto. Además, ya no existe un campo meta de thumbnail_id
. Aquí está la solución correcta para 2021 si estás usando WooCommerce:
$term_image_id = get_term_meta( $term->term_id, 'product_search_image_id', true );
$term_image = wp_get_attachment_url( $term_image_id );

No es necesario Woocommerce para obtener la imagen de una categoría y su URL.
$categories = get_categories();
foreach($categories as $cat) {
$image_id = get_term_meta( $cat->term_id, 'thumbnail_id', true );
$post_thumbnail_img = wp_get_attachment_image_src( $image_id, 'thumbnail' );
echo '<img src="' . $post_thumbnail_img[0] . '" alt="' . $cat->name . '" />';
}
$post_thumbnail_img es un array donde la clave 0 corresponde a la URL, 1 = ancho y 2 = altura.
También puedes usar cualquiera de los siguientes tamaños en lugar de 'thumbnail' (featured, medium, large, o cualquier otro tamaño personalizado de tu tema). Sin embargo, 'thumbnail_id' debe permanecer tal cual.
También puedes obtener metadatos de la imagen como "alt", "title" y más usando una función personalizada para extender esta funcionalidad.
Lo anterior asume que sabes cómo proporcionar argumentos a get_categories en un bucle. Pero si no es así, consulta get_categories en WP para más detalles.

<?php
// Obtener términos de categorías de productos principales
$wcatTerms = get_terms('product_cat', array('hide_empty' => 0, 'parent' =>0));
foreach($wcatTerms as $wcatTerm) : ?>
<?php
// Obtener la imagen destacada de la categoría
$thumb_id = get_woocommerce_term_meta( $wcatTerm->term_id, 'thumbnail_id', true );
$term_img = wp_get_attachment_url( $thumb_id );
?>
<div class="product-item">
<div class="item-inner fadeInUp">
<div class="product-thumbnail">
<div class="icon-sale-label sale-left">Oferta</div>
<!--<div class="icon-new-label new-right">Nuevo</div>-->
<div class="pr-img-area"> <img class="first-img" src="<?php echo $term_img;?>" alt="<?php echo $wcatTerm->name; ?>" title="<?php echo $wcatTerm->name; ?>"> <img class="hover-img" src="<?php echo $term_img;?>" alt="<?php echo $wcatTerm->name; ?>" title="<?php echo $wcatTerm->name; ?>"> </div>
</div>
<div class="item-info">
<div class="info-inner">
<div class="item-title"> <a title="<?php echo $wcatTerm->name; ?>" href="<?php echo get_term_link( $wcatTerm->slug, $wcatTerm->taxonomy ); ?>"><?php echo $wcatTerm->name; ?></a> </div>
</div>
</div>
</div>
</div>
<?php endforeach; ?>
