2017-05-30 56 views
0

這裏是我的代碼:Woocommerce回調函數是沒有得到所謂的

add_action('plugins_loaded', 'mojo_abc_init', 0); 
function mojo_abc_init() { 
... 

include_once('woocommerce-abc.php'); 

... 
add_filter('woocommerce_payment_gateways', 'mojo_add_abc_gateway'); 
function mojo_add_abc_gateway($methods) { 
    $methods[] = 'MOJO_ABC'; 
    return $methods; 
} 
... 
} 

我woocommerce-abc.php文件:

class MOJO_ABC extends WC_Payment_Gateway{ 
    function __construct() { 

     ... 

     add_action('woocommerce_api_mojo_abc', array($this, 'check_abc_response')); 

     ... 
    } 

    /* callback function */ 
    function check_abc_response(){ 

    /* code */ 
    wp_die(); 
    } 

} 

現在我的問題是我的回調函數不獲取調用。網址是http://site_url/wc-api/MOJO_ABC

取而代之,屏幕只顯示1,調試日誌中沒有任何內容也指示代碼的任何問題。

任何幫助將不勝感激。 謝謝

+0

我會嘗試在'woocommerce_loaded'鉤子上初始化你的插件。但是,您是否通過'woocommerce_available_payment_gateways'過濾器添加網關?你沒有顯示你的代碼的一部分。 – helgatheviking

+0

@helgatheviking我正在通過'woocomerce_available_payment_gateways'過濾器添加我的網關。我編輯了代碼。無論如何,我能夠解決這個問題。 –

+0

你可以發佈你的解決方案作爲答案嗎? – helgatheviking

回答

0

我能夠通過禁用所有插件,然後逐個將它們與我的插件一起添加並檢查woocommerce的調試日誌來解決此問題。

我發現其他插件之一有一些錯誤,這就是干擾我的鉤子,以正確註冊,因此不被調用。我只是禁用了該插件,並開始像魅力一樣工作。現在我已經通知了插件開發者這個問題。

對於調試,你應該做一些事情,幫助我找到了問題:

  1. 啓用的WordPress的在wp-config.php文件調試模式:
    `

    定義(」 WP_DEBUG',true); define('WP_DEBUG_LOG',true); //禁止顯示錯誤和警告 define('WP_DEBUG_DISPLAY',false); @ini_set('display_errors',0);

`

在插件

2.添加日誌功能來寫調試文件日誌來檢查你的代碼和其他東西的流程: 在你的構造在開始添加以下代碼: - `

if (!function_exists('write_log')) { 
     function write_log ($log) { 
      if (true === WP_DEBUG) { 
      if (is_array($log) || is_object($log)) { 
       error_log(print_r($log, true)); 
      } else { 
       error_log($log); 
      } 
      } 
     } 
     } 

<br> And write logs by write.log( 「ABC」)or write.log($ VAR)`。

這樣就可以排除工作流程中出現錯誤的可能性,並專注於可能導致問題的其他事情。