Obținerea URL-ului pentru thumbnail-ul unei taxonomii
Iată cum încerc momentan:
$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); /* Întotdeauna returnează Bool(false) */
Așadar întrebarea este,
Știți ce fac greșit?

Taxonomiile nu au implicit imagini în miniatură. Fără a ști cum sunt acestea setate, nu pot spune exact cum să obții miniaturile, dar în ceea ce privește "ce greșesc?" get_post_thumbnail_id
acceptă un ID de post sau, în lipsa acestuia, presupune postul curent din Buclă. Tu îi transmiți un term_id
, ceea ce nu va funcționa. Poți vedea asta în sursă:
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 }
Presupun că, dacă term_id
se întâmplă să corespundă cu un ID de post, ai putea obține ceva, dar nu va fi ceea ce dorești sau te aștepți.

Răspunsul acceptat nu mai este valabil deoarece woocommerce_get_term_meta
este învechit. De asemenea, nu mai există un câmp meta pentru thumbnail_id
. Iată soluția corectă pentru anul 2021 dacă utilizați WooCommerce:
$term_image_id = get_term_meta( $term->term_id, 'product_search_image_id', true ); $term_image = wp_get_attachment_url( $term_image_id );

Nu este nevoie de WooCommerce pentru a prelua o imagine de categorie și URL-ul acesteia.
$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 este un array cu cheia 0 egală cu URL-ul, 1 = lățime, și 2 = înălțime.
De asemenea, puteți utiliza oricare dintre următoarele în loc de 'thumbnail' (featured, medium, large sau orice altă dimensiune personalizată a imaginii din tema dumneavoastră). Totuși, 'thumbnail_id' trebuie să rămână neschimbat.
De asemenea, puteți prelua metadatele imaginii, cum ar fi "alt", "title" și multe altele, utilizând o funcție personalizată și puteți extinde acest lucru și mai mult.
Exemplul de mai sus presupune că știți cum să furnizați argumente pentru get_categories într-o buclă. Dar, dacă nu, aruncați o privire la get_categories pe WP pentru mai multe detalii.

<?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">Reducere</div>
<!--<div class="icon-new-label new-right">Nou</div>-->
<div class="pr-img-area"> <img class="first-img" src="<?php echo $term_img;?>" alt="<?php echo esc_attr($wcatTerm->name); ?>" title="<?php echo esc_attr($wcatTerm->name); ?>"> <img class="hover-img" src="<?php echo $term_img;?>" alt="<?php echo esc_attr($wcatTerm->name); ?>" title="<?php echo esc_attr($wcatTerm->name); ?>"> </div>
</div>
<div class="item-info">
<div class="info-inner">
<div class="item-title"> <a title="<?php echo esc_attr($wcatTerm->name); ?>" href="<?php echo get_term_link( $wcatTerm->slug, $wcatTerm->taxonomy ); ?>"><?php echo $wcatTerm->name; ?></a> </div>
</div>
</div>
</div>
</div>
<?php endforeach; ?>
