我已使用以下代码获取Woocommerce产品类别的缩略图URL,但仅输出带有<img>
的{{1}}标签。
src="unknown"
使其工作的最佳方法是什么?
修改
在第二个让牛仔类别的缩略图中,它仅输出$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" />
答案 0 :(得分:3)
函数get_woocommerce_term_meta()
需要术语ID而不是术语slug。因此,您可以使用get_term_by()
的Wordpress函数从术语条中获取术语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循环进行了一些其他更改,以优化代码并允许您添加所需数量的产品类别标签。
我还添加了术语链接,并做了一些小的更改。
<?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; ?>
答案 1 :(得分:2)
get_woocommerce_term_meta
具有term_id
作为第一个参数。请参阅Here
编写类似这样的代码
$termId = 1;
$thumbnail_id = get_woocommerce_term_meta( $termId, 'thumbnail_id', true );
OR
要从子弹名称获取缩略图,您必须使用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" />';