使用woocommerce_order_get_items过滤器钩子操纵项目名称

时间:2017-02-27 10:08:38

标签: php arrays wordpress woocommerce orders

在WooCommerce中,如果订单行项目名称具有这些括号,我试图找出如何删除()

以下是一些代码:

$order = wc_get_order($order_id)
foreach ( $order->get_items() as $order_item ){
   //...enter code here
}

但是我想使用过滤器挂钩,因为我无法访问上面的foreach循环。我尝试添加到functions.php,所以当get_items()调用时,过滤器将准备数据数组。

以下是代码:

add_filter( 'woocommerce_order_get_items', 'filter_woocommerce_order_get_items', 10, 2 ); 
function filter_woocommerce_order_get_items($items, $instance){
    foreach ($items as $item){
        $search = array('å','ä','ö','(', ')');
        $replace = array('a','a','o', '', '');
        $item['name'] = str_replace($search, $replace, $item['name']);
    }

    return $items;
}

所以,TL; DR:
我可以在$order->get_items()来电时准备数据吗?

由于

1 个答案:

答案 0 :(得分:1)

使用正确的过滤器钩子你是正确的方向,但实际上你的自定义钩子功能不起作用。

要使其正常工作,您需要在返回之前用 lazy var emailUnderline: UIView = { let view = UIView() view.backgroundColor = self.darkColor view.translatesAutoresizingMaskIntoConstraints = false return view }() 数组中的新值替换旧值。因此,代码中缺少的元素是 $items

我在代码中做了一些小改动:

$item_id

代码放在活动子主题(或主题)的function.php文件中,或者放在任何插件文件中。

代码经过测试并有效。