首页 / 中文教程 / 教程

Bricks 移除 WooCommerce 产品图库中的特色图片

WooCommerce 单产品页图库默认把特色图也算进去。用 woocommerce_single_product_image_thumbnail_html 过滤器把特色图从图库中剔除,只显示附加图库图片。

Ray Chan·2026-08-11·约 1 分钟

问题背景

WooCommerce 的单产品页上有一个产品图库(Product Gallery),默认情况下它会把产品的特色图片(Featured Image)也渲染进图库,作为第一张图。

这在大多数场景下是合理的,但有些站点希望图库只展示附加图库图片——比如特色图已经在页面其他地方(Breadcrumb 上方的大图、自定义 Hero 区)单独展示过了,图库里再出现一张一模一样的就重复了。

Bricks 的产品图库元素底层渲染逻辑,对应文件是 /wp-content/themes/bricks/includes/woocommerce/elements/product-gallery.php,它复用了 WooCommerce 的标准图库输出。所以我们可以用 WooCommerce 官方的过滤器来干预。

解决方案:一个过滤器

在子主题的 functions.php 或代码片段插件中加入:

add_filter( 'woocommerce_single_product_image_thumbnail_html', function ( $html, $post_thumbnail_id ) {
	global $product;

	if ( $post_thumbnail_id === $product->get_image_id() )
		$html = '';

	return $html;
}, 10, 2 );

保存后刷新产品页,图库中的特色图就消失了,只剩附加图库图片。

原理说明

woocommerce_single_product_image_thumbnail_html 是 WooCommerce 渲染单产品页图库每一张缩略图时都会触发的过滤器,带两个参数:

  • $html:当前缩略图的 HTML 输出;
  • $post_thumbnail_id:当前这张图片的附件 ID。

我们拿它和 $product->get_image_id()(当前产品的特色图 ID)对比:如果一致,说明这张图就是特色图,直接把 $html 置空字符串丢弃;否则原样放行。这样其他附加图库图片完全不受影响。

小结

这个需求本质上是“过滤掉图库里的特定图片”,用 WooCommerce 官方过滤器一行判断就能完成,不需要动 Bricks 模板结构,也不需要 jQuery 在渲染后隐藏元素(那样图片还是会被加载,浪费带宽)。

如果你还想做更细的定制——比如只移除某个特定 ID 的图片、或者对移动端和桌面端区别处理——都是在 $html 返回前做条件判断的事,原理完全一致。

需要帮忙?

用 Bricks 建站?我接客户项目。

从快速营销站到完整的 Bricks 建站,再到从 Elementor 迁移——我都做过。本站每篇教程都来自真实项目经验。告诉我你的需求,一个工作日内回复。

  • Bricks 建站与改版
  • Elementor / Divi → Bricks 迁移
  • Bricks → Astro / headless 性能升级
  • 速度优化,PageSpeed 95+ 目标