获取 Woocommerce 产品类别图片 url

Get Woocommerce product category image url

我使用以下代码获取了 Woocommerce 产品类别的缩略图 URL,但它仅输出带有 src="unknown".

<img> 标签
$cat_slug = t-shirts;
$thumbnail_id = get_woocommerce_term_meta( $cat_slug, 'thumbnail_id', true );
$image = wp_get_attachment_url( $thumbnail_id );
echo '<img src="'.$image.'" alt="" width="50" height="50" />'; 

使其发挥作用的最佳方法是什么?

编辑

在第二次调用牛仔裤类别的缩略图时,它只输出 <img src(unknown) alt="" width="50" height="50" />

<div class="list-item">
    <div class="item-img">

        <?php

        $term_slug    = 't-shirts';
        $taxonomy     = "product_cat";
        $term_id      = get_term_by( 'slug', $term_slug, $taxonomy )->term_id;
        $thumbnail_id = get_woocommerce_term_meta( $term_id, 'thumbnail_id', true );
        $image        = wp_get_attachment_url( $thumbnail_id );

        echo '<img src="'.$image.'" alt="" width="50" height="50" />';

        ?>

</div>

<a href="#">
    <div class="item-name">
        <?php if( $term = get_term_by('slug', 't-shirts', 'product_cat') ) echo $term->name;?>
    </div>
</a>

</div>

<div class="list-item">
    <div class="item-img">

        <?php

        $term_slug    = 'jeans';
        $taxonomy     = "product_cat";
        $term_id      = get_term_by( 'slug', $term_slug, $taxonomy )->term_id;
        $thumbnail_id = get_woocommerce_term_meta( $term_id, 'thumbnail_id', true );
        $image        = wp_get_attachment_url( $thumbnail_id );

        echo '<img src="'.$image.'" alt="" width="50" height="50" />';

        ?>

</div>

<a href="#">
    <div class="item-name">
    <?php if( $term = get_term_by('slug', 'jeans', 'product_cat') ) echo $term->name;?>
    </div>
</a>

</div>

get_woocommerce_term_metaterm_id 作为第一个参数。参考 Here

像这样编写代码

$termId = 1;
$thumbnail_id = get_woocommerce_term_meta( $termId, 'thumbnail_id', true );

要从 slug 名称获取缩略图,您必须使用 get_term_by 获取术语 ID。可以参考here

$termName = 't-shirts';
$category = get_term_by('name', $termName, 'product_cat');

$termId = $category->term_id;
$thumbnail_id = get_woocommerce_term_meta( $termId, 'thumbnail_id', true );
$image = wp_get_attachment_url( $thumbnail_id );
echo '<img src="'.$image.'" alt="" width="50" height="50" />';

函数 get_woocommerce_term_meta() 需要术语 ID 而不是术语 slug。因此,您可以使用 get_term_by() Wordpress 函数从术语 slug 中获取术语 ID。

因此您的代码将是:

$term_slug    = 't-shirts';
$taxonomy     = 'product_cat';
$term_id      = get_term_by( 'slug', $term_slug, $taxonomy )->term_id;
$thumbnail_id = get_woocommerce_term_meta( $term_id, 'thumbnail_id', true );
$image        = wp_get_attachment_url( $thumbnail_id );

// Output
echo '<img src="'.$image.'" alt="" width="50" height="50" />';

已测试并有效


添加版本 3(与您的评论相关)

我使用 foreach 循环优化了代码并允许您添加任意数量的产品类别 slug

我还添加了术语link,并做了一些小改动。

<?php
$term_slugs   = array('jeans', 't-shirts');
$taxonomy     = "product_cat";

// Loop though the term slugs array
foreach ( $term_slugs as $term_slug ):
    $term        = get_term_by( 'slug', $term_slug, $taxonomy );
    if( $term ):
        $term_link   = get_term_link( $term, $taxonomy );

        $thumb_id    = get_woocommerce_term_meta( $term->term_id, 'thumbnail_id', true );
        $img_src     = wp_get_attachment_url( $thumb_id );
        ?>
        <div class="list-item">
            <div class="item-image">
                <img src="<?php echo $img_src; ?>" alt="" width="50" height="50" />
            </div>
            <div class="item-name">
                <a href="<?php echo $term_link; ?>"><?php echo $term->name; ?></a>
            </div>
        </div>
    <?php endif;
endforeach; ?>