Woocommerce 未调用该回调函数

Woocommerce 未调用该回调函数,woocommerce,hook-woocommerce,woocommerce-rest-api,Woocommerce,Hook Woocommerce,Woocommerce Rest Api,这是我的密码: 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 ) {

这是我的密码:

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

}
现在我的问题是我的回调函数没有被调用。网址是

相反,屏幕上只显示1,调试日志中也没有显示代码有任何问题

任何帮助都将不胜感激。
谢谢

我能够通过禁用所有插件,然后用我的插件逐个添加插件并检查woocommerce的调试日志来解决这个问题

我发现另一个插件有一些bug,这就是干扰我的钩子正确注册的原因,因此没有被调用。我只禁用了那个插件,它开始像一个魔咒一样工作。我已经通知了插件开发者这个问题

对于调试,您应该做一些事情来帮助我发现问题:

  • 在wp-config.php文件中启用wordpress的调试模式:
    `

    定义('WP_DEBUG',true); 定义('WP\u DEBUG\u LOG',true); //禁用错误和警告的显示 定义('WP_DEBUG_DISPLAY',false); @ini_集('display_errors',0)

  • `

    2.在插件中添加日志功能,在调试文件中写入日志,以检查代码流和其他事项: 在开始时将此代码添加到构造函数中:- `

    
    
    并通过
    write.log(“abc”)
    write.log($var)`写入日志


    通过这种方式,您可以排除工作流程中可能出现的错误,并关注可能导致问题的其他因素。

    我会尝试在加载的
    woocommerce\u
    hook上初始化您的插件。但是,您是否通过
    woocmerce\u available\u payment\u gateways
    过滤器添加网关?您没有显示代码的该部分。@helgatheviking我正在通过
    Woocomece\u available\u payment\u gateways
    过滤器添加网关。我已经编辑了代码。不管怎样,我能解决这个问题。你能把你的解决方案作为答案吗?
    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 );
                }
              }
            }
          }