如何调整WooCommerce商品归档页的商品跳转链接范围?
调整WooCommerce店铺页面商品链接的包裹范围
嘿,这个需求其实很容易实现,核心思路就是移除默认的全局商品链接钩子,然后手动把链接精准放在图片和标题的前后。咱们一步步来:
步骤1:移除默认的链接动作
WooCommerce默认通过两个钩子控制商品链接的打开和关闭:
woocommerce_before_shop_loop_item钩子上的woocommerce_template_loop_product_link_open(优先级10)负责打开链接woocommerce_after_shop_loop_item钩子上的woocommerce_template_loop_product_link_close(优先级5)负责关闭链接
这两个钩子默认把整个商品区块(图、名称、SKU、价格)都包在了链接里,所以我们先把它们移除。把下面的代码添加到你的子主题functions.php里(或者用自定义代码插件,别直接改父主题,避免更新丢失):
// 移除默认的商品链接打开/关闭钩子 remove_action( 'woocommerce_before_shop_loop_item', 'woocommerce_template_loop_product_link_open', 10 ); remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_product_link_close', 5 );
步骤2:手动添加链接到指定位置
接下来,我们要把链接只包裹图片和商品名称:
- 在商品图片之前打开链接
- 在商品名称之后关闭链接
添加下面的代码到同一个functions.php文件里:
// 自定义商品链接打开函数,放在图片之前 function custom_woocommerce_loop_product_link_open() { global $product; $product_link = apply_filters( 'woocommerce_loop_product_link', get_the_permalink(), $product ); echo '<a href="' . esc_url( $product_link ) . '" class="woocommerce-LoopProduct-link woocommerce-loop-product__link">'; } // 优先级设为5,确保在图片(优先级10)之前执行 add_action( 'woocommerce_before_shop_loop_item_title', 'custom_woocommerce_loop_product_link_open', 5 ); // 自定义商品链接关闭函数,放在标题之后 function custom_woocommerce_loop_product_link_close() { echo '</a>'; } // 优先级设为15,确保在标题(优先级10)之后执行 add_action( 'woocommerce_shop_loop_item_title', 'custom_woocommerce_loop_product_link_close', 15 );
为什么这样有效?
- 我们把链接打开动作放在了
woocommerce_before_shop_loop_item_title钩子(负责输出商品图片和售罄标签)的最前面,所以链接会包裹住图片 - 链接关闭动作放在了
woocommerce_shop_loop_item_title钩子(输出商品名称)的后面,这样标题也被包裹在链接里 - 而SKU、价格、评分这些内容都在
woocommerce_after_shop_loop_item_title钩子里,完全在链接范围之外,点击它们就不会跳转到商品详情页了
这样调整后,就完美实现了你要的效果:只有商品图片和名称可以点击跳转,SKU和价格不会触发跳转。
内容的提问来源于stack exchange,提问作者Reece
相关产品推荐
相关产品推荐

