Ottenere l'URL della miniatura di una tassonomia
Ecco come sto provando attualmente:
$taxonomies = array(
'product_cat'
);
$args = array(
'orderby' => 'name', // ordina per nome
'order' => 'ASC',
'hide_empty' => false, // mostra categorie vuote
'exclude' => array(),
'exclude_tree' => array(),
'include' => array(),
'number' => '',
'fields' => 'all',
'slug' => '',
'parent' => '',
'hierarchical' => true, // mostra struttura gerarchica
'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); /* Restituisce sempre Bool(false) */
Quindi la domanda è,
Sapete cosa sto facendo di sbagliato?
Le tassonomie non hanno per impostazione predefinita immagini in miniatura. Senza sapere come queste sono impostate non posso dire esattamente come ottenere le miniature, ma per quanto riguarda "cosa sto sbagliando?" get_post_thumbnail_id
accetta un ID di un post o, in mancanza di quello, assume il post corrente nel Loop. Tu gli stai passando un term_id
, che non funzionerà. Puoi vederlo nel sorgente:
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 }
Suppongo che, se il term_id
corrisponde per caso a un ID di post, otterresti qualcosa, ma non sarà ciò che vuoi o ti aspetti.

La risposta accettata non è più valida poiché woocommerce_get_term_meta
è deprecato. Inoltre non esiste più un campo meta chiamato thumbnail_id
. Ecco la soluzione corretta per il 2021 se stai utilizzando WooCommerce:
$term_image_id = get_term_meta( $term->term_id, 'product_search_image_id', true ); $term_image = wp_get_attachment_url( $term_image_id );

Non è necessario WooCommerce per recuperare l'immagine di una categoria e il suo 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 è un array con la chiave 0 uguale all'URL, 1 = larghezza, e 2 = altezza.
Puoi anche utilizzare uno dei seguenti valori al posto di 'thumbnail' (featured, medium, large, o qualsiasi altra dimensione personalizzata dell'immagine del tuo tema). Tuttavia, 'thumbnail_id' deve rimanere così com'è.
Puoi anche recuperare metadati dell'immagine come "alt", "title" e altro utilizzando una funzione personalizzata e estendere ulteriormente questo esempio.
Quanto sopra presuppone che tu sappia come fornire argomenti a get_categories in un loop. Ma, in caso contrario, dai un'occhiata a get_categories su WP per maggiori dettagli.

<?php
$wcatTerms = get_terms('product_cat', array('hide_empty' => 0, 'parent' =>0));
foreach($wcatTerms as $wcatTerm) : ?>
<?php
$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">Sconto</div>
<!--<div class="icon-new-label new-right">Nuovo</div>-->
<div class="pr-img-area"> <img class="first-img" src="<?php echo $term_img;?>" alt="Miniatura categoria prodotto" title="Miniatura categoria prodotto"> <img class="hover-img" src="<?php echo $term_img;?>" alt="Miniatura categoria prodotto al passaggio del mouse" title="Miniatura categoria prodotto al passaggio del mouse"> </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; ?>
