在 WooCommerce 中添加唯一的订单项元数据作为订单元数据
Add unique line item meta as order meta data in WooCommerce
我有存储在订单项下的元数据,很多时候数据是相同的。我正在尝试将唯一的元值保存为订单元数据,用逗号分隔,如果可能的话,我会在此数据之前添加文本“这些是你的号码”。
到目前为止,我尝试了下面的代码,但没有任何反应。
add_action( 'woocommerce_update_order', 'add_unique_order_nummers_to_order', 10, 2 );
function add_unique_order_nummers_to_order( $order_id, $order ) {
$allenummers = array();
$items = $order->get_items();
foreach ( $order->get_items() as $item_id => $item ) {
$allenummers[] = $item->get_meta( '_org_ordernummer', true );
}
$ordernummers_array = array_unique($allenummers);
$ordernummers_unique = implode(',', $ordernummers_array);
update_post_meta( $order_id, '_Unieke_nummers', $ordernummers_unique );
}
希望有人能帮忙
更新: 当订单状态更改为“we-fact”自定义订单状态时,根据您的评论,使用以下带有不同钩子的简化代码:
add_action('woocommerce_order_status_we-fact', 'add_unique_order_nummers_to_order', 20, 2 );
function add_unique_order_nummers_to_order( $order_id, $order ) {
$allenummers = array(); // Initializing
// Loop through order
foreach ( $order->get_items() as $item ) {
$allenummers[] = $item->get_meta( '_org_ordernummer' );
}
if ( ! empty($allenummers) ) {
$order->update_meta_data('_Unieke_nummers', sprintf( __("These are your numbers: %s"), implode(', ', array_unique($allenummers) ) ) );
}
}
代码进入活动子主题(或活动主题)的 functions.php 文件。它应该有效。
我有存储在订单项下的元数据,很多时候数据是相同的。我正在尝试将唯一的元值保存为订单元数据,用逗号分隔,如果可能的话,我会在此数据之前添加文本“这些是你的号码”。
到目前为止,我尝试了下面的代码,但没有任何反应。
add_action( 'woocommerce_update_order', 'add_unique_order_nummers_to_order', 10, 2 );
function add_unique_order_nummers_to_order( $order_id, $order ) {
$allenummers = array();
$items = $order->get_items();
foreach ( $order->get_items() as $item_id => $item ) {
$allenummers[] = $item->get_meta( '_org_ordernummer', true );
}
$ordernummers_array = array_unique($allenummers);
$ordernummers_unique = implode(',', $ordernummers_array);
update_post_meta( $order_id, '_Unieke_nummers', $ordernummers_unique );
}
希望有人能帮忙
更新: 当订单状态更改为“we-fact”自定义订单状态时,根据您的评论,使用以下带有不同钩子的简化代码:
add_action('woocommerce_order_status_we-fact', 'add_unique_order_nummers_to_order', 20, 2 );
function add_unique_order_nummers_to_order( $order_id, $order ) {
$allenummers = array(); // Initializing
// Loop through order
foreach ( $order->get_items() as $item ) {
$allenummers[] = $item->get_meta( '_org_ordernummer' );
}
if ( ! empty($allenummers) ) {
$order->update_meta_data('_Unieke_nummers', sprintf( __("These are your numbers: %s"), implode(', ', array_unique($allenummers) ) ) );
}
}
代码进入活动子主题(或活动主题)的 functions.php 文件。它应该有效。