Удалить действие гравитационной формы со страницы woocommerce - PullRequest
0 голосов
/ 25 февраля 2019

Итак, у меня есть скрытая гравитационная форма (запускает гравитационный поток) на моей странице 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', но она тоже не работает.

...