Заказ 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 так себе:)