2017-08-25 40 views
0

我試圖通過POST方法將數據發送到一個WooCommerce回調,但是當我測試用var_dump它返回一個空數組:array(0) { }WooCommerce回調不要再追POST數據

任何一個可以幫助我找到答案?

function check_ipn_response() 
    { 
     global $woocommerce; 
     var_dump($_POST); 


      if (isset($_POST["payment_status"]) && isset($_POST["hash"])) 
      { 
      } 
      else 
      { 
       wp_die(' Erreur de notification de paiement'); 
      } 

    } 
+0

你可能需要將功能添加到一個WordPress/woocommerce行動掛鉤:https://codex.wordpress.org/Plugin_API/Action_Reference/HTTPS: //docs.woocommerce.com/wc-apidocs/index.html $ _POST在某些時候被wp清除。 – sbrn

+0

已添加 add_action('woocommerce_api_wc_'。$ this-> id,array($ this,'check_ipn_response')); – Reda

+0

我假設WP已經清除了$ _POST。你可以嘗試並將其設置爲'init'?由於WP文檔聲明'使用init來執行$ _POST數據' – sbrn

回答

1

在完成處理請求後,Wordpress會清除$ _POST變量。所以我們需要使用的鉤子必須在此之前。 docs狀態:

init對於攔截$ _GET或$ _POST觸發器非常有用。

因此,我們需要的動作要

add_action('init', 'check_ipn_response'); 
+0

「在完成處理請求後,Wordpress會清除$ _POST變量。」 - 請爲此提供代碼或文檔的參考。我沒有意識到這一點,並想了解更多。 – user8262086

+0

我不確定wordpress是不是很清楚這件事,但我自己也碰到過幾次。 – sbrn

+0

你記得這種情況嗎?我經常在許多不同的動作和過濾器中使用$ _POST變量,並且它始終可用。我認爲WordPress會清除這個重要變量似乎是錯誤的 - 我不確定這是我問的原因。 – user8262086