问题背景
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 返回前做条件判断的事,原理完全一致。
常见误区
移除图库特色图最关键的认知是:在 PHP 端用官方过滤器剔除,而不是用 jQuery 在渲染后隐藏。后者图片照样会被浏览器加载,只是看不见,白白浪费带宽、还可能闪一下。用 WooCommerce 过滤器在输出 $html 前就判断掉,干净又省流量。进阶定制(只移除某个特定 ID、移动端和桌面端区别处理)也都是在返回 $html 前加条件,原理一致。注意这会影响图库的图片顺序和数量,若某些逻辑依赖「第一张是特色图」要做相应调整。
常见问题(FAQ)
Q:为什么不用 jQuery 隐藏? A:jQuery 隐藏图片仍会被加载,浪费带宽还可能闪烁;用 PHP 过滤器在输出前剔除更干净。
Q:会影响图库顺序吗? A:会,特色图被移除后图库数量和顺序变化,依赖「首图是特色图」的逻辑要相应调整。
Q:只想移除某一张特定图?
A:在过滤器返回 $html 前按图片 ID 加条件判断即可,原理一样。
Q:桌面和移动端想区别处理? A:同样在过滤器里按条件判断,在输出前决定是否剔除。
延伸阅读
- 想要现成外贸独立站模板与建站实战?看 铲子铺 chanzipu 的外贸建站教程(同用 Bricks,从零搭出能收询盘的站)
- 相关阅读:Bricks Setup Guide
延伸阅读
用 Bricks 设计产品详情页:WooCommerce 还是 Meta Box?
拆解 Bricks 下产品详情页的两种做法:WooCommerce 现成小部件 vs Meta Box + MB CPT 自定义字段,并给出 B2B / B2C 的选型建议。
tutorial用 Bricks 做产品列表页:WooCommerce 与 Meta Box 两条路线怎么选
对比 Bricks 下做产品列表页的两种主流方案——WooCommerce 原生小部件与 Meta Box + MB CPT 自定义,并讲清 Products Filter 等核心小部件的用法与取舍。
tutorialBricks 制作 Single Product 产品详情模板——用模板系统搞定自定义内容类型的详情页
教程:WooCommerce 商品页或自定义文章类型的详情页没套用你的 Bricks 设计?用模板系统的 Single 条件精准绑定即可。
tutorialBricks 制作 Product Archive 产品列表模板(WooCommerce)
教程:用 WooCommerce 做电商时,商店页/分类页就是 Product Archive。Bricks 原生兼容,做出商品网格加加购按钮。
