Заказ Woocommerce / AFC get_sub_field / get_sub_field_object (массив)

Настройте поле повторителя 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, если это поможет.

введите описание изображения здесь

1 ответ

Решение

Такое ощущение, что через 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 так себе:)

Другие вопросы по тегам