2017-05-30 58 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)`。

这样就可以排除工作流程中出现错误的可能性,并专注于可能导致问题的其他事情。