Самый быстрый способ узнать, можете ли вы выполнить foreach l oop, - это удалить все, что не связано с foreach l oop, с помощью:
add_action('woocommerce_new_order', 'wdm_send_order_to_ext');
function wdm_send_order_to_ext( $order_id ){
// get order object and order details
$order = wc_get_order($order_id);
$endpoint = "https://enwlq927zckka.x.pipedream.net";
foreach($order->get_items() as $item_id => $item_data){
echo "Foreach loop executing for item ID: $item_id.";
}
}
Если вы видите вывод, то вы знаете, что выполняете foreach l oop. Чтобы отлаживать подобные вещи, вам нужно уметь избавляться от ненужного и строить из того, что вы можете различить по одной части за раз.
Одна вещь, с которой вы можете столкнуться (но она выходит за рамки способ, которым вы сформулировали свой вопрос) заключается в том, что на вызовы cURL может уйти очень много времени. В зависимости от того, как настроен ваш сервер, он может прервать выполнение кода PHP, если он не завершает выполнение sh через X секунд. Поскольку я не знаком с командой $order->get_items()
или с тем, сколько записей она может вернуть, я предполагаю, что вы могли бы легко потратить больше минуты, выполняя сотни или более вызовов cURL.
Для например, проверяйте каждый шаг на этом пути.
Кроме того, было бы полезно, если бы вы точно описали, что происходит, а не то, что, кажется, не происходит. Таким образом, ответы могут быть более эффективными. Если вы не уверены, что что-то выполняется, вы всегда можете добавить оператор echo, чтобы проверить, достигнут ли код. Надеюсь это поможет!