it-swarm.com.de

Kategorie Thumbnail und Links in Woo Commerce anzeigen

Ich möchte meine Kategorien mit einem Thumbnail im Woocommerce anzeigen. Ich kann die untergeordneten Begriffe als Link auflisten, möchte jedoch zusätzlichen Inhalt hinzufügen. Ich habe den folgenden Code hinzugefügt, in dem ich die untergeordneten Begriffe für "product_cat" als Link auf meiner Vorlage "home-page.php" anzeige. Ich möchte aber auch das Kategoriebild hinzufügen. Ich würde mich sehr über die Hilfe freuen. DANKE.

<?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>';


?>
5
steamfunk

Habe einige Anpassungen vorgenommen. Auf diese Weise können Sie Bilder der übergeordneten und untergeordneten Kategorie anzeigen. Sie können diesen Code später gemäß Ihren Anforderungen anpassen.

    $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>';

Lassen Sie mich wissen, ob es Ihre Anforderung erfüllt.

2
WisdmLabs

Hallo @Wisdmlabs Vielen Dank für Ihre Hilfe. Ich habe festgestellt, dass dies sehr gut funktioniert, falls sich jemand fragt, wie das geht.

$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(); ?>
3
steamfunk

Ersetzen Sie diese Zeile, um die Antwort von @ Wisdmlabs weiter zu optimieren

$cat_thumb_url = wp_get_attachment_thumb_url( $cat_thumb_id );

mit

$cat_thumb_url = wp_get_attachment_image_src( $cat_thumb_id, 'thumbnail-size' )[0]; // Change to desired 'thumbnail-size'

Auf diese Weise werden die Bilder auf dem Server auf eine geeignete Größe zugeschnitten, um die Bandbreitenbelastung zu verringern.

0
jgangso