重力表格 - 忽略条目

时间:2018-02-12 20:41:36

标签: php wordpress gravity-forms-plugin gravityforms

我正在使用Gravity Forms和WooCommerce以及WooCommerce Gravity Forms Addons插件。我有一个附在产品上的表格,需要做一些计算以确定产品的最终价格。

为了做到这一点,我在表格中有一些中间计算字段,我不想在购物车中或订单条目中显示。

我已经审核并尝试过gform_pre_submission,我可以成功删除所需的字段。问题是Gravity Forms显然在提交时重新计算表单,因此取消设置gform_pre_submission中的字段会中断计算并导致添加到购物车的项目具有不正确的值。

显然,我可以使用CSS隐藏购物车中的字段,但这并不会保留条目中的必要字段,因此也不会保留WooCommerce订单信息。

那么,如何在不破坏计算的情况下省略条目中不需要的字段?

谢谢!

PS - 这是我试过的预先提交的代码,以防我的测试出现问题

add_action( 'gform_pre_submission_5', 'pre_submission_handler' );
function pre_submission_handler( $form ) {
    //remove some fields which we don't need to save
    unset($_POST['input_23']);  //remove base price

}

编辑:请参阅下面的David代码。我对它进行了一次修改以处理古怪的产品:

        for( $i = count( $other_data ) - 1; $i >= 0; $i-- ) {
            if (isset($other_data[$i]['name'])){        //if not, must be a WC variation,  not GF so ignore
                if( $other_data[$i]['name'] == GFCommon::get_label( $field ) )
                    unset( $other_data[$i] );
            }
        }

具有BOTH WooCommerce变体和重力形式插件变体的产品的$ other_data值的屏幕截图:

$other_data var dump

2 个答案:

答案 0 :(得分:0)

此代码段(可作为插件安装)为每个字段添加一个选项,以允许您将其隐藏在WooCommerce购物车项目说明(screenshot)中。

https://gist.github.com/spivurno/6951662

答案 1 :(得分:0)

为了方便以后发现这个,这里是@ David的方便代码,我修改了支持WooCommerce变体和Gravity Forms Addons变体的产品。

data ln;
    input dor 8.;
    qt=quantile("normal", dor, 0, 1);   
    datalines;
0.10
0.20
0.15
0.22
0.15
0.10
0.08
0.09
0.12
;
run;

/* obtain number accounts */
%let dsn = ln;
%let dsnid = %sysfunc(open(&dsn));
%let nobs=%sysfunc(attrn(&dsnid,nlobs));
%let rc  =%sysfunc(close(&dsnid));

proc sql noprint;
    select count(*), mean(qt), std(qt) into :nobs, :mean, :std
    from ln;
quit;

%put &nobs.;
%put &mean.;
%put &std.;

proc nlmixed data=LN;
parms mu &mean. sigma &std.;                 * initial values of parameters;
bounds 0 < sigma;                   * bounds on parameters;
LL = logpdf("normal", qt, mu, sigma) - &nobs.*logcdf("normal",qt, mu, sigma);
model qt ~ general(LL);
run;