使用 woocommerce_order_get_items 过滤器钩子操作项目名称
With woocommerce_order_get_items filter hook manipulate items name
在 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;
}
所以,长话短说:
$order->get_items()
调用时可以准备数据吗?
谢谢
您使用正确的过滤器挂钩的方向是正确的,但实际上您的自定义挂钩函数不起作用,因为缺少某些东西。
要使其正常工作,您需要在 $items
数组中用新值替换旧值,然后再返回它。因此,您的代码中缺少的元素是 $item_id
key.
我对你的代码做了一些小改动:
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_id => $item_values){
$search = array('å','ä','ö','(', ')');
$replace = array('a','a','o', '', '');
$items[$item_id]['name'] = str_replace($search, $replace, $item_values['name']);
}
return $items;
}
代码进入您的活动子主题(或主题)的 function.php 文件或任何插件文件。
代码已经过测试并且有效。
在 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;
}
所以,长话短说:
$order->get_items()
调用时可以准备数据吗?
谢谢
您使用正确的过滤器挂钩的方向是正确的,但实际上您的自定义挂钩函数不起作用,因为缺少某些东西。
要使其正常工作,您需要在 $items
数组中用新值替换旧值,然后再返回它。因此,您的代码中缺少的元素是 $item_id
key.
我对你的代码做了一些小改动:
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_id => $item_values){
$search = array('å','ä','ö','(', ')');
$replace = array('a','a','o', '', '');
$items[$item_id]['name'] = str_replace($search, $replace, $item_values['name']);
}
return $items;
}
代码进入您的活动子主题(或主题)的 function.php 文件或任何插件文件。
代码已经过测试并且有效。