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

在Twenty Twenty-Three主题中无法用WooCommerce钩子移除商品图片

WooCommerce商店页面图片无法通过传统钩子移除的原因及来源解析

一、带data-block-name="woocommerce/product-image"的图片来源

你看到的这个图片是**WooCommerce产品块(Product Block)**渲染输出的。因为你使用的Twenty Twenty-Three是WordPress官方块主题,新版WooCommerce已适配块主题体系:商店页面默认不再依赖传统PHP模板循环生成内容,而是通过块编辑器的「产品列表」块渲染商品项,这个图片就是该块内置的产品图片组件。

二、传统钩子失效的原因

你编写的代码调用的是WooCommerce经典商店循环的动作钩子(比如woocommerce_before_shop_loop_item_title这类),这类钩子仅对非块主题的经典商店模板生效。在块主题环境下,WooCommerce不会触发这些传统循环钩子,而是采用块渲染逻辑生成页面,所以你移除动作的代码根本不会被执行,自然无法移除图片。

三、解决方法

方法1:通过块编辑器直接修改

进入WordPress后台「页面」-「商店」页面编辑界面,找到产品列表块,进入商品项的编辑选项,直接移除图片块即可。

方法2:用CSS强制隐藏

如果不想修改编辑器,可以在主题自定义的额外CSS中添加:

.wp-block-woocommerce-product-image {
    display: none !important;
}

方法3:用WooCommerce块过滤器修改输出

如果需要更灵活的控制,可使用块相关的PHP过滤器修改产品网格项的HTML:

add_filter( 'woocommerce_blocks_product_grid_item_html', 'remove_product_image_from_block', 10, 3 );
function remove_product_image_from_block( $html, $data, $post ) {
    // 移除图片部分的HTML
    $html = preg_replace( '/<div class="wp-block-woocommerce-product-image.*?<\/div>/s', '', $html );
    return $html;
}

你之前尝试的仅对经典模板生效的代码:

add_action( 'woocommerce_init', 'wpv_woocommerce_init');

function wpv_woocommerce_init() {

remove_action( 'woocommerce_before_shop_loop_item', 'woocommerce_template_loop_product_link_open', 10 );
remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart' );

remove_action( 'woocommerce_before_shop_loop_item_title', 'woocommerce_template_loop_product_thumbnail', 10 );
remove_action( 'woocommerce_shop_loop_item_title', 'woocommerce_template_loop_product_title', 10 );
remove_action( 'woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_price', 10 );

}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 14:20:09