Woocommerce 订单/AFC get_sub_field / get_sub_field_object(数组)

Woocommerce Order / AFC get_sub_field / get_sub_field_object (array)

已设置 ACF 转发器字段,用于存储订单中各种数量的跟踪号。检索此信息的成功率为 0,因此需要一些建议。

我正在使用它在子字段中放置信息并且它完成了工作

foreach ($base->DocumentLines->DocumentLine as $item) {

    foreach ($item->MiscData as $misc) {

        foreach ($misc->PackageNo as $package) {

            $trackno = (string)$package->TrackingNo;

            update_post_meta("$order_id", $field_rep, $count);

            $sub = $count +1;

            update_sub_field(array($field_key_rep, $sub, $field_key_sub), $trackno, "$order_id");

            $count = $count + 1;

            update_field($field_key, $trackno, "$order_id");

        }
    }
}

这很好用,但我需要检索这些数字并将它们写出来。他们被包含在电子邮件中,因此需要在订单之外检索数据。

在重建能够处理多个数字的函数之前,我确实使用了一个字段并且可以使用

检索信息
get_post_meta($order_id, 'tracking', true);

感觉我现在什么都试过了,但一无所获。

来自其中一个订单的图片,在这个订单中有 10 个跟踪号码,但如果有帮助的话,它会从 1 到 20 不等。

当您在 10 小时后意识到您在子字段名称中漏掉了一个大写字母时的感觉。

只是想提交我的解决方案,希望它可以帮助其他遇到 ACF Repeater 字段 + Woocommerce

问题的人

对于我的具体情况,我确实做了一个函数,可以提取我上面的函数从 XML 文件中添加的所有跟踪号码。

$function trackingNo($postID) {

    $field_rep = 'trackingNo';
    $field_sub = 'no';

    if (have_rows($field_rep, $postID)) {

        $trackingNo = array();

    // loop through the rows of data
    while (have_rows($field_rep, $postID)):
        the_row();

        // Add to array
        $trackingNo[] = get_sub_field($field_sub);

    endwhile;

    $foo = implode('&consignmentId=', $trackingNo);
    $bar = 'urlzz/tracktrace/TrackConsignments_do.jsp?&consignmentId=';

    $value = $bar . $foo;

    return $value;
 }
}

随时欢迎任何改进建议,我的 PHP 很一般 :)