我正在使用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值的屏幕截图:
答案 0 :(得分:0)
此代码段(可作为插件安装)为每个字段添加一个选项,以允许您将其隐藏在WooCommerce购物车项目说明(screenshot)中。
答案 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;