Afișează Miniaturile și Link-urile Categoriilor în WooCommerce
Aș dori să afișez categoriile mele cu o miniatură în WooCommerce. Pot să listez termenii copil ca link-uri, dar aș dori să adaug conținut suplimentar. Am adăugat codul de mai jos pe care îl folosesc pentru a afișa termenii copil pentru "product_cat" ca link în șablonul meu home-page.php. Dar aș dori să adaug și imaginea categoriei. Aș aprecia foarte mult ajutorul. MULȚUMESC.
<?php
$taxonomyName = "product_cat";
//Aceasta obține doar termenii din primul nivel. Acest lucru se face prin setarea parent la 0.
$parent_terms = get_terms($taxonomyName, array('parent' => 0, 'orderby' => 'slug', 'hide_empty' => false));
echo '<ul>';
foreach ($parent_terms as $pterm) {
//Obține termenii copil
$terms = get_terms($taxonomyName, array('parent' => $pterm->term_id, 'orderby' => 'slug', 'hide_empty' => false));
foreach ($terms as $term) {
echo '<li><a href="' . get_term_link( $term->name, $taxonomyName ) . '">' . $term->name . '</a></li>';
}
}
echo '</ul>';
?>

Am făcut câteva personalizări. Acest cod vă va ajuta să afișați imaginile pentru categoriile părinte și copil. Puteți personaliza ulterior acest cod în funcție de cerințele dumneavoastră.
$taxonomyName = "product_cat";
//Aceasta obține doar termenii de nivel superior. Acest lucru se face prin setarea părintelui la 0.
$parent_terms = get_terms($taxonomyName, array('parent' => 0, 'orderby' => 'slug', 'hide_empty' => false));
echo '<ul>';
foreach ($parent_terms as $pterm) {
//afișează categoriile părinte
echo '<li><a href="' . get_term_link($pterm->name, $taxonomyName) . '">' . $pterm->name . '</a></li>';
$thumbnail_id = get_woocommerce_term_meta($pterm->term_id, 'thumbnail_id', true);
// obține URL-ul imaginii pentru categoria părinte
$image = wp_get_attachment_url($thumbnail_id);
// afișează HTML-ul IMG pentru categoria părinte
echo "<img src='{$image}' alt='Imagine categorie părinte {$pterm->name}' title='{$pterm->name}' width='400' height='400' />";
//Obține termenii copil
$terms = get_terms($taxonomyName, array('parent' => $pterm->term_id, 'orderby' => 'slug', 'hide_empty' => false));
foreach ($terms as $term) {
echo '<li><a href="' . get_term_link($term->name, $taxonomyName) . '">' . $term->name . '</a></li>';
$thumbnail_id = get_woocommerce_term_meta($pterm->term_id, 'thumbnail_id', true);
// obține URL-ul imaginii pentru categoria copil
$image = wp_get_attachment_url($thumbnail_id);
// afișează HTML-ul IMG pentru categoria copil
echo "<img src='{$image}' alt='Imagine categorie copil {$term->name}' title='{$term->name}' width='400' height='400' />";
}
}
echo '</ul>';
Spuneți-mi dacă îndeplinește cerința dumneavoastră.

Salut @Wisdmlabs Mulțumesc pentru ajutor. Am descoperit că această soluție funcționează foarte bine, în caz că altcineva se întreabă cum se poate face acest lucru.
$taxonomyName = "product_cat";
$prod_categories = get_terms($taxonomyName, array(
'orderby'=> 'name',
'order' => 'ASC',
'hide_empty' => 1
));
foreach( $prod_categories as $prod_cat ) :
if ( $prod_cat->parent != 0 )
continue;
$cat_thumb_id = get_woocommerce_term_meta( $prod_cat->term_id, 'thumbnail_id', true );
$cat_thumb_url = wp_get_attachment_thumb_url( $cat_thumb_id );
$term_link = get_term_link( $prod_cat, 'product_cat' );
?>
<img src="<?php echo $cat_thumb_url; ?>" alt="Miniatură categorie <?php echo $prod_cat->name; ?>" title="Miniatură categorie <?php echo $prod_cat->name; ?>" />
<a class="button" href="<?php echo $term_link; ?>"> <?php echo $prod_cat->name; ?> </a>
<?php endforeach;
wp_reset_query(); ?>

Pentru a optimiza și mai mult răspunsul @Wisdmlabs de mai sus, înlocuiți această linie
$cat_thumb_url = wp_get_attachment_thumb_url( $cat_thumb_id );
cu
$cat_thumb_url = wp_get_attachment_image_src( $cat_thumb_id, 'thumbnail-size' )[0]; // Schimbați 'thumbnail-size' cu dimensiunea dorită
În acest fel, imaginile vor fi tăiate la dimensiunea potrivită pe server pentru a reduce încărcarea lățimii de bandă.
