Итак, у меня есть скрытая гравитационная форма (запускает гравитационный поток) на моей странице WooCommerce.Это срабатывает, когда товар добавляется в корзину, но это не то, что я хочу.
Я могу удалить это поведение, удалив действие init.Ниже приведены действия, которые мне не нужны.
add_action( 'init', 'remove_gravityflow_after_submit' );
function remove_gravityflow_after_submit(){
remove_action( 'gform_entry_pre_handle_confirmation', array( gravity_flow(), 'after_submission' ), 9 );
remove_action( 'gform_pre_handle_confirmation', array( gravity_flow(), 'after_submission' ), 9 );
remove_action( 'gform_after_submission', array( gravity_flow(), 'after_submission' ), 9 );
remove_action( 'gform_post_add_entry', array( gravity_flow(), 'action_gform_post_add_entry' ), 10 );
}
это работает нормально, поэтому я могу вручную отправить форму куда-нибудь позже.
Проблема этого подхода заключается в том, что он отключаетвсе мои другие формы гравитации.Так что это заставило меня задуматься ... решение будет удалить это поведение, только если я нахожусь на странице WooCommerce.Что бы сработало, если бы я смог заставить его работать, чего у меня пока нет
мое решение -
add_action( 'init', 'remove_gravityflow_after_submit' );
function remove_gravityflow_after_submit(){
if ( is_woocommerce() || is_product() ){
remove_action( 'gform_entry_pre_handle_confirmation', array( gravity_flow(), 'after_submission' ), 9 );
remove_action( 'gform_pre_handle_confirmation', array( gravity_flow(), 'after_submission' ), 9 );
remove_action( 'gform_after_submission', array( gravity_flow(), 'after_submission' ), 9 );
remove_action( 'gform_post_add_entry', array( gravity_flow(), 'action_gform_post_add_entry' ), 10 );
}
}
, но это не работает в основном потому, что я думаю, что WooCommerce не загруженв этот момент условия не работают.Другой альтернативой будет добавление удаленных действий обратно
if ( is_woocommerce() ) { ... remove action } else { add_action }
, но так как я не могу использовать условные выражения в 'init', я также не могу заставить этот подход работать.Каков будет лучший способ сделать что-то подобное?Я также попытался удалить ловушку 'template_redirect', но она тоже не работает.