我正在使用重力表单和Webhooks附加组件,但这些可能与我的问题相关,也可能与我的问题无关。
如果我在函数中定义了一个带有挂钩的动作。php文件,有没有一种简单的方法可以在不发生实际挂钩的情况下手动触发它(用于调试)?
详细说明:我有一个到第三方服务器的webhook设置,带有重力表单。然而,我有两个问题。首先,我得到了一个旋度错误60,我请求DreamHost解决这个错误。第二个问题是,Webhook不会在我想要的时候触发(当一个条带/贝宝支付的回调标记一个条目已完成时)。我已将此代码添加到我的函数中。php文件:
add_action( \'gform_post_payment_completed\', function ( $form, $entry_id ) {
if ( function_exists( \'gf_webhooks\' ) ) {
$entry = GFAPI::get_entry( $entry_id );
gf_webhooks()->maybe_process_feed( $entry, $form );
gf_feed_processor()->save()->dispatch();
}
}, 10, 2 );
因此,在尝试测试/调试此操作时,如何在不调用“gform\\u post\\u payment\\u completed”的情况下触发此操作?
SO网友:Himad
您当前正在使用匿名函数。第一步是将其更改为命名函数,以便可以从wp_filter
全局数组,其中包含所有已注册的操作和筛选器。您可以这样做:
function payment_test($form, $entry_id){
if ( function_exists( \'gf_webhooks\' ) ) {
$entry = GFAPI::get_entry( $entry_id );
gf_webhooks()->maybe_process_feed( $entry, $form );
gf_feed_processor()->save()->dispatch();
}
}
add_action( \'gform_post_payment_completed\', \'payment_test\', 10, 2 );
// Call it manually by getting the callable from the wp_filter global.
global $wp_filter;
call_user_func_array(
$wp_filter[\'gform_post_payment_completed\']->callbacks[10][\'payment_test\'][\'function\'],
$args // You have to manually provide the arguments as an array.
);