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

如何拆分WooCommerce订单项单独存储到ACF自定义字段

你遇到的订单项合并问题根源是遍历订单商品时使用了.=字符串拼接操作,所有商品的名称、数量都被合并到了同一个字符串变量中,自然无法拆分对应到重复器的每一行。

以下是修正后的完整代码:

function create_post_after_order( $order_id ) {
    if ( $order_id instanceof WC_Order ){
        return;
    }
    
    $order = wc_get_order( $order_id );
    // 修复原代码未定义变量的问题
    $user_ID = $order->get_user_id();
    $content = '';
    $repeater_data = [];
    // 重复器字段KEY、子字段KEY(可根据你实际的字段配置修改)
    $repeater_key = 'field_61645b866cbd6';
    $subfield_name_key = 'field_6163f2e1542e1'; // 存储产品名称的子字段KEY
    $subfield_qty_key = 'field_61640103002c9'; // 存储购买数量的子字段KEY

    $order_items = $order->get_items(); 
    
    foreach ( $order_items as $item_id => $item_data ) {
        $product = $item_data->get_product();
        $qty = $item_data->get_quantity();
        $name = $product->get_name();
        // 原拼接逻辑保留,用于填充文章内容
        $content.= $qty . ' ' . $name . '<br>';
        // 每个订单项单独组装成重复器的一行数据
        $repeater_data[] = [
            $subfield_name_key => $name,
            $subfield_qty_key => $qty
        ];
    }
    
    $new_post = array(
        'post_title'   => "Order {$order_id}",
        'post_content' => $content,
        'post_date' => date('Y-m-d H:i:s'),
        'post_author' => $user_ID,
        'post_type' => 'groeiproces',
        'post_status'   => 'publish',
    );    
    $post_id = wp_insert_post($new_post);
    
    // 组装完所有数据后仅调用一次update_field存储重复器,减少数据库操作
    if ( $post_id && !is_wp_error($post_id) ) {
        update_field($repeater_key, $repeater_data, $post_id);
    }
}
add_action( 'woocommerce_thankyou', 'create_post_after_order', 10, 1 );

核心改动说明

  • 移除了$qty .=、$name .=的字符串拼接逻辑,每个订单项单独获取数量和名称
  • 遍历订单项时直接组装ACF重复器要求的数组结构,每个订单项对应数组中的一个子元素
  • 修复了原代码中$user_ID、$content变量未定义的问题
  • 避免循环调用update_field,全部数据组装完成后仅调用一次,性能更优
  • 增加了文章插入成功的判断,避免插入失败时报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 19:57:01