簡體   English   中英

如何在 wordpress 插件中創建 foreach 循環?

[英]How do I make a foreach loop in a wordpress plugin?

我正在嘗試為 woocommerce 制作一個插件,在每個新訂單中,獲取我需要的所有數據,在 foreach 循環中按項目拆分,然后通過 cURL 將每個項目數據作為單獨的帖子發送。 但是我的代碼似乎沒有忽略 foreach 循環。 這是我的循環的代碼:

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);

    print_r(" Start ");
    if($order->get_items()>0)
    {
        print_r(" Item exist ");
        foreach($order->get_items() as $item_id => $item_data){
            print_r(" Foreach loop executing for item ID: $item_id ");
        }
    }
    else
    {
        print_r(" No Item ");
    }
    print_r(" End ");
 }

我的結果是:開始項目存在結束編輯:當我在 $order->get_items() 上使用 print_r 時,它打印為數組 ()

確定您是否能夠執行 foreach 循環的最快方法是通過以下方式去除與 foreach 循環無關的所有內容:

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 循環。 要調試這些類型的東西,您需要習慣於去除不必要的東西並建立一次您可以辨別的東西。

您可能遇到的一件事(但超出了您提出問題的方式的范圍)是 cURL 調用可能需要很長時間才能響應。 根據您的服務器的配置方式,如果 PHP 代碼在 X 秒后沒有完成執行,它可能會中止執行。 由於我不熟悉$order->get_items()命令或它可能返回的記錄數,我的猜測是您可能很容易花費一分鍾以上的時間來執行數百個或更多的 cURL 調用。

對於此類情況,請驗證整個過程中的每一步。

此外,如果您准確描述正在發生的事情而不是似乎沒有發生的事情,這將有所幫助。 這樣,答案會更有影響力。 當您不確定某事是否正在執行時,您始終可以添加 echo 語句來驗證是否已到達代碼。 希望這可以幫助!

我終於找到了我的問題:掛鈎 woocommerce_new_order 在項目添加到訂單之前被激活,而不是我使用 woocommerce_thankyou 並且它起作用了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM