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

如何在WooCommerce商品按钮链接后追加PHP变量及值?

修改WooCommerce店铺页面商品按钮链接的方案

1. 最优方案:使用WooCommerce内置过滤器钩子

WooCommerce提供了专门的过滤器woocommerce_loop_add_to_cart_link,用于修改店铺、产品分类等循环页面中的商品按钮链接,直接在主题的functions.php文件中添加以下代码即可:

add_filter( 'woocommerce_loop_add_to_cart_link', 'custom_modify_product_button_link', 10, 2 );
function custom_modify_product_button_link( $button_html, $product ) {
    // 定义要追加的变量和值
    $custom_param = 'var=value';
    
    // 获取产品的原始链接
    $original_link = get_permalink( $product->get_id() );
    
    // 拼接新链接:判断原始链接是否已有参数,决定用?还是&
    $new_link = $original_link . ( strpos( $original_link, '?' ) === false ? '?' : '&' ) . $custom_param;
    
    // 替换按钮HTML中的原始链接,保留其他属性不变
    $button_html = str_replace( $original_link, $new_link, $button_html );
    
    return $button_html;
}

代码说明:

  • 钩子优先级设为10(默认优先级),确保能正常触发
  • 函数接收两个参数:按钮的原始HTML代码和当前产品对象
  • 处理链接时会自动判断是否已有查询参数,避免出现??这类错误格式
  • 仅替换链接部分,按钮的class、data属性、文本内容等均保持原样

2. 备选方案:修改模板文件(不推荐)

如果过滤器因特殊场景无法生效,可直接修改模板文件,但需注意维护成本:

  • 将WooCommerce插件内的loop/add-to-cart.php文件,复制到当前主题的woocommerce/loop/目录下(切勿直接修改插件文件,否则插件更新后会被覆盖)
  • 在复制后的文件中,找到获取产品链接的代码get_permalink( $product ),替换为:
$product_link = add_query_arg( 'var', 'value', get_permalink( $product ) );
  • 用新的$product_link替换原文件中输出链接的部分

注意:

  • 修改模板属于硬编码操作,后续WooCommerce若更新模板结构,需同步更新主题内的模板文件,维护成本较高,因此优先使用过滤器方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 02:20:03