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

如何在WooCommerce的filter回调函数中访问$vars变量的值?

如何在回调函数中访问$vars->ID的值

嘿,别担心,新手遇到这类参数传递的问题太正常啦!咱们一步步来解决:

首先,你要知道apply_filters()在这里传递了3个参数:

  • 第一个是要过滤的$text
  • 第二个是$product_item->ID
  • 第三个是$vars->ID

但你的当前代码里,add_filter()默认只给回调函数传递1个参数,而且你的回调函数也没有声明要接收额外参数,所以没法拿到$vars->ID。

解决步骤:

  1. 修改回调函数,声明接收所有传递的参数
    调整custom_product_name()的参数列表,把apply_filters()传来的三个参数都加上,顺序要和原函数一致:

    function custom_product_name($text, $product_id, $var_id) {
        global $product;
        $product_name = $product->get_name();
        $sku = $product->get_sku();
        // 这里直接用$var_id就是原来的$vars->ID啦
        $text = 'Example.com ' . $sku . ' ' . $product_name . ' ' . $var_id;
        return $text;
    }
    
  2. 更新add_filter(),指定参数数量
    在add_filter()的第四个参数里设置为3,告诉WordPress要给回调函数传递3个参数:

    add_filter( 'prefix_xml_feeds_productname_variant', 'custom_product_name', 10, 3 );
    

    这里的10是优先级(默认值,你可以根据需要调整),3就是参数的个数。

这样修改之后,你的回调函数就能正常拿到$vars->ID的值(也就是代码里的$var_id)啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 11:52:50