WooCommerce技术求助:联盟商品图片及标题跳转至外链并新标签打开
实现WooCommerce外部/联盟商品标题跳转至联盟链接(新标签页)
嘿,很高兴你已经通过Sadoo的代码搞定了商品图片跳转的需求!要让商品标题也实现相同的逻辑——直接跳转到联盟链接且在新标签页打开,咱们可以用WooCommerce的钩子来修改标题的输出,具体操作如下:
代码实现
你可以把这段代码添加到主题的functions.php文件中,或者借助自定义代码插件(比如Code Snippets)来添加,避免主题更新丢失自定义内容:
add_filter( 'woocommerce_loop_product_title', 'custom_external_product_title_link', 10, 1 ); function custom_external_product_title_link( $title ) { global $product; // 仅对外部/联盟商品生效 if ( $product->is_type( 'external' ) ) { $external_url = $product->get_product_url(); $link_title = $product->get_button_text() ? $product->get_button_text() : __( 'Buy product', 'woocommerce' ); // 用联盟链接包裹原标题,添加新标签打开属性 $title = sprintf( '<a href="%s" target="_blank" rel="noopener noreferrer" title="%s">%s</a>', esc_url( $external_url ), esc_attr( $link_title ), $title ); } return $title; }
代码说明
- 我们用到了
woocommerce_loop_product_title过滤器,它专门负责修改商品列表里标题的输出结构。 - 先判断当前商品是否为外部/联盟类型,确保不会影响普通商品的标题跳转逻辑。
- 获取商品的联盟链接后,用这个链接包裹原标题,同时加上
target="_blank"实现新标签打开,rel="noopener noreferrer"是安全层面的最佳实践,防止新页面篡改原页面。 - 如果商品设置了自定义按钮文本,会自动把它作为链接的
title属性,让用户hover时能看到提示信息。
小提示
- 操作前记得备份主题文件,避免失误导致网站异常。
- 如果你用的是自定义主题,优先把代码加到子主题的
functions.php里,这样主题更新时自定义代码不会被覆盖。
内容的提问来源于stack exchange,提问作者Enric Serra Duran
相关产品推荐
相关产品推荐

