从woocommerce页面上删除重力形式动作

时间:2019-02-25 09:15:55

标签: php wordpress hook gravity-forms-plugin

因此,我的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'挂钩,但是它也不起作用。

0 个答案:

没有答案