php - 获取 Woocommerce 产品类别图片网址
问题描述
我已使用以下代码获取 Woocommerce 产品类别的缩略图 URL,但它仅输出<img>
带有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" />
.
<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_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。
我还添加了术语链接,并进行了一些小改动。
<?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; ?>
推荐阅读
- python - 获取与其他约束相结合的行中最小值的索引
- python-3.x - Python:文件中的反斜杠 (\u...)
- python - 将多个 CSV 文件导入 mysql 数据库并为其创建表
- github - 更改项目描述后 GitHub 拉取?
- mongodb - ValidationError: user: Cast to Embedded 值“[]”失败
- sql-server - 从 XML 变量中读取非拉丁字符并插入到表中
- reactjs - React:渲染多个用户输入
- python - 意外的 Python 行为 - 函数在 return 语句后无法终止
- javascript - 反应回调函数变量超出范围
- python - 如何根据 DataFrame 中的多个条件计算出现次数