You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何去除WooCommerce后台订单列表自定义列的重复值

WooCommerce订单自定义列产品名重复修复方案

问题根因

  • 你调用$order->get_items()返回的是WC_Order_Item_Product对象数组,直接对该数组使用array_unique()无法按产品名去重,函数无法直接识别对象的内部属性
  • 重复值来自同一订单内的多份同产品订单项、或者同名称的不同变体产品订单项

修复代码

先遍历订单项把所有产品名存入字符串数组,再对字符串数组做去重,最后拼接输出即可,修改后的代码如下:

add_action( 'manage_shop_order_posts_custom_column', 'inforder_add_new_order_admin_list_column_content' );
 
function inforder_add_new_order_admin_list_column_content( $column ) {
   
    global $post;
 
    if ( 'product_order' === $column ) {
        $order = wc_get_order( $post->ID );
        $items = $order->get_items();
        $product_names = [];
        
        // 收集所有产品名到字符串数组
        foreach($items as $item) {
            $product_names[] = $item->get_name();
        }
        
        // 对字符串数组去重后拼接输出
        echo implode(', ', array_unique($product_names));
    }
}

如果你需要按产品ID去重(避免不同产品重名导致被误去重),可以改成用产品ID作为数组键实现去重,示例逻辑如下:

foreach($items as $item) {
    $product_id = $item->get_product_id();
    // 同ID的产品只会保留第一个的名称
    $product_names[$product_id] = $item->get_name();
}
echo implode(', ', $product_names);

内容的提问来源于stack exchange,提问作者Patricio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 23:15:04