如何在WooCommerce的filter回调函数中访问$vars变量的值?
如何在回调函数中访问$vars->ID的值
嘿,别担心,新手遇到这类参数传递的问题太正常啦!咱们一步步来解决:
首先,你要知道apply_filters()在这里传递了3个参数:
- 第一个是要过滤的
$text - 第二个是
$product_item->ID - 第三个是
$vars->ID
但你的当前代码里,add_filter()默认只给回调函数传递1个参数,而且你的回调函数也没有声明要接收额外参数,所以没法拿到$vars->ID。
解决步骤:
修改回调函数,声明接收所有传递的参数
调整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; }更新
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
相关产品推荐
相关产品推荐

