Woocommerce 回调函数未被调用

Woocommerce callback function is not getting called

这是我的代码:

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

}

现在我的问题是我的回调函数没有被调用。 url 是 http://site_url/wc-api/MOJO_ABC .

相反,屏幕仅显示 1,调试日志中也没有任何内容表明代码存在任何问题。

如有任何帮助,我们将不胜感激。 谢谢

我能够通过禁用所有插件然后用我的插件一个一个地添加它们并检查 woocommerce 的调试日志来解决问题。

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

对于调试,你应该做一些帮助我找到问题的事情:

  1. 在wp-config.php文件中开启wordpress调试模式:
    `

    定义('WP_DEBUG',真); 定义('WP_DEBUG_LOG',真); // 禁止显示错误和警告 定义('WP_DEBUG_DISPLAY',假); @ini_set( 'display_errors', 0 );

`

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

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 bywrite.log("abc")orwrite.log($var)`.

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