这是我的代码:
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 :(得分:0)
我能够通过禁用所有插件,然后使用我的插件逐个添加它们并检查woocommerce的调试日志来解决问题。
我发现其中一个插件有一些错误,这就是干扰我的钩子以正确注册并因此没有被调用。我只禁用了该插件,它开始像魅力一样工作。我现在已经通知了插件开发者这个问题。
对于调试,你应该做一些帮助我找到问题的事情:
在wp-config.php文件中启用wordpress的调试模式:
`
define('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($变种)`。
通过这种方式,您可以排除工作流程中出错的可能性,并专注于可能导致问题的其他因素。