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默认的产品缩略图尺寸,如果你的主题自定义了分类专用的缩略图尺寸,把这个参数换成对应的尺寸名称即可。
额外修复点
- 分类链接错误:代码里的
'.$category->slug.'只会输出分类别名,不是完整的归档链接,应该换成:
get_term_link( $category->term_id, 'product_cat' )
这样才能生成正确的分类页面跳转链接。
2. 术语名称写法优化:$category->cat_name可以换成$category->name,后者是WordPress术语对象的标准属性,兼容性更好。
其他可能的排查方向
- 缩略图未生成:如果是之前上传的图片,可能没生成你需要的尺寸,用Regenerate Thumbnails插件批量重新生成所有图像尺寸。
- 主题/插件覆盖设置:去WooCommerce后台→产品→显示,检查“产品缩略图”的尺寸设置,确认这个尺寸是启用状态;部分主题会自定义图像尺寸,检查主题设置里的图像配置。
- 缓存问题:如果刚修改了设置,清空网站缓存和浏览器缓存再测试。
内容的提问来源于stack exchange,提问作者scarrott
相关产品推荐
相关产品推荐

