You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WooCommerce分类循环中缩略图显示为原图的问题排查

WooCommerce分类缩略图始终显示原图问题

我尝试创建自定义循环展示网站上所有WooCommerce分类,但获取分类缩略图时遇到问题——无论怎么设置,始终显示上传的原图。以下是我的代码:

$args = array(
 'taxonomy' => 'product_cat',
 'orderby' => 'name',
 'order' => 'ASC',
 'hide_empty' => false,
 'exclude' => '21'
);

echo '<ul>';
foreach( get_categories( $args ) as $category ) :
    $thumbnail_id = get_term_meta( $category->term_id,'thumbnail_id', true );
    $image = wp_get_attachment_url( $thumbnail_id );
    echo '<li><a href="'.$category->slug.'" class="label" title="' . $category->name . '">';
    if($image!=""):
        echo '<img src="' . $image . '">';
        endif;

    echo $category->cat_name.'</a></li>';
endforeach;

我已多方查找资料,其他开发者都能获取正确的缩略图,只有我显示原图。请问我是否遗漏了什么步骤?可能的原因是什么?是否与主题有关?


问题原因与解决方法

核心问题:你调用的是原图地址

wp_get_attachment_url()函数返回的本来就是上传图片的原始地址,不管后台设置了什么缩略图尺寸,用这个函数都只会拿到原图。要获取生成好的缩略图,得用指定尺寸的图像函数。

直接修复代码

把获取图像的部分替换成WooCommerce标准的缩略图调用方式:

// 替换原来的$image = wp_get_attachment_url( $thumbnail_id );
$image_data = wp_get_attachment_image_src( $thumbnail_id, 'woocommerce_thumbnail' );
$image = $image_data[0]; // 提取缩略图URL

这里的woocommerce_thumbnail是WooCommerce默认的产品缩略图尺寸,如果你的主题自定义了分类专用的缩略图尺寸,把这个参数换成对应的尺寸名称即可。

额外修复点

  1. 分类链接错误:代码里的'.$category->slug.'只会输出分类别名,不是完整的归档链接,应该换成:
get_term_link( $category->term_id, 'product_cat' )

这样才能生成正确的分类页面跳转链接。
2. 术语名称写法优化:$category->cat_name可以换成$category->name,后者是WordPress术语对象的标准属性,兼容性更好。

其他可能的排查方向

  • 缩略图未生成:如果是之前上传的图片,可能没生成你需要的尺寸,用Regenerate Thumbnails插件批量重新生成所有图像尺寸。
  • 主题/插件覆盖设置:去WooCommerce后台→产品→显示,检查“产品缩略图”的尺寸设置,确认这个尺寸是启用状态;部分主题会自定义图像尺寸,检查主题设置里的图像配置。
  • 缓存问题:如果刚修改了设置,清空网站缓存和浏览器缓存再测试。

内容的提问来源于stack exchange,提问作者scarrott

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 13:42:32