Woocommerce过滤器返回变量属性slug而不是value



我正在努力理解一个奇怪的事情在Woocommerce流。最近我已经安装了WPML和Woocommerce多语言插件到我的商店,从那时起,属性段塞被打印在新订单确认电子邮件和感谢页面(产品详细信息表)。

我在class-wc-order-item-meta.php的第142行发现了这个问题

文件源代码

return apply_filters( 'woocommerce_order_items_meta_get_formatted', $formatted_meta, $this );

在函数流之后,我已经看到$formatted_meta变量具有正确的格式化值,但是在应用过滤器之后,返回一个带有slug的数组,用于字段值而不是名称。

Filter On:

[20956]=>
array(3) {
["key"]=>
string(7) "pa_size"
["label"]=>
string(14) "Μέγεθος"
["value"]=>
    string(7) "onesize"
  }
}

滤出

  [20956]=>
  array(3) {
    ["key"]=>
    string(7) "pa_size"
    ["label"]=>
    string(14) "Μέγεθος"
    ["value"]=>
    string(8) "ONE SIZE"
  }

这个变化似乎并不影响任何过程,但我正在努力理解为什么会发生这种情况,我无法发现过滤器执行其操作的源代码。我的网站使用Wordpress 4.6和Woocoomerce 2.6.3

这个过滤器是在Woocommerce Multilingual的WCML_Emails::init中定义的。它返回翻译后的meta,所以如果你把这个ONE SIZE翻译成onesize,这可能是原因。

最新更新