Je souhaite afficher mes catégories avec une vignette dans woocommerce. Je peux lister les termes enfants sous forme de lien, mais j'aimerais ajouter du contenu supplémentaire. J'ai ajouté le code ci-dessous dans lequel j'utilise pour afficher les termes enfants de "product_cat" en tant que lien sur mon modèle home-page.php. Mais je voudrais aussi ajouter l'image de la catégorie. J'apprécierais vraiment l'aide MERCI.
<?php
$taxonomyName = "product_cat";
//This gets top layer terms only. This is done by setting parent to 0.
$parent_terms = get_terms($taxonomyName, array('parent' => 0, 'orderby' => 'slug', 'hide_empty' => false));
echo '<ul>';
foreach ($parent_terms as $pterm) {
//Get the Child terms
$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>';
?>
Ont fait de la personnalisation. Cela vous aidera à montrer des images de catégories de parents et d’enfants. Vous pourrez ensuite personnaliser ce code selon vos besoins.
$taxonomyName = "product_cat";
//This gets top layer terms only. This is done by setting parent to 0.
$parent_terms = get_terms($taxonomyName, array('parent' => 0, 'orderby' => 'slug', 'hide_empty' => false));
echo '<ul>';
foreach ($parent_terms as $pterm) {
//show parent categories
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);
// get the image URL for parent category
$image = wp_get_attachment_url($thumbnail_id);
// print the IMG HTML for parent category
echo "<img src='{$image}' alt='' width='400' height='400' />";
//Get the Child terms
$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);
// get the image URL for child category
$image = wp_get_attachment_url($thumbnail_id);
// print the IMG HTML for child category
echo "<img src='{$image}' alt='' width='400' height='400' />";
}
}
echo '</ul>';
Faites-moi savoir si cela répond à vos besoins.
Bonjour @Wisdmlabs Merci pour votre aide. J'ai trouvé que cela fonctionnait très bien au cas où quelqu'un d'autre se demanderait comment le faire.
$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="" />
<a class="button" href="<?php echo $term_link; ?>"> <?php echo $prod_cat->name; ?> </a>
<?php endforeach;
wp_reset_query(); ?>
Pour optimiser davantage la réponse de @ Wisdmlabs ci-dessus, remplacez cette ligne
$cat_thumb_url = wp_get_attachment_thumb_url( $cat_thumb_id );
avec
$cat_thumb_url = wp_get_attachment_image_src( $cat_thumb_id, 'thumbnail-size' )[0]; // Change to desired 'thumbnail-size'
De cette façon, les images sont rognées à la taille appropriée sur le serveur pour réduire la charge de bande passante.