这是我的代码:
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,调试日志中没有任何内容也表明代码存在任何问题。
任何帮助将非常感激。谢谢
通过禁用所有插件,然后将它们与我的插件一一添加并检查 woocommerce 的调试日志,我能够解决该问题。
我发现其他插件之一有一些错误,这就是干扰我的钩子正确注册并因此不被调用的原因。我只禁用了那个插件,它开始像魅力一样工作。我现在已经将这个问题通知了插件开发者。
对于调试,您应该做一些帮助我找到问题的事情:
在 wp-config.php 文件中启用 wordpress 的调试模式:
`
定义('WP_DEBUG',真);定义('WP_DEBUG_LOG',真);// 禁用错误和警告的显示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)`。
通过这种方式,您可以排除工作流程中出现错误的可能性,并专注于可能导致问题的其他因素。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句