我有一个用于wordpress/gravityforms的PHP过滤器,它最近刚刚停止工作,我不知道为什么。有人能帮我吗?
代码如下:
add_filter(\'gform_pre_submission_2\', \'create_company_full_name\', 10, 2, \'input_7\', \'input_6\', \'input_1\');
add_filter(\'gform_pre_submission_1\', \'create_company_full_name\', 10, 1, \'input_3\', \'input_4\', \'input_77\');
add_filter(\'gform_pre_submission_26\', \'create_company_full_name\', 10, 26, \'input_7\', \'input_6\', \'input_9\');
function create_company_full_name($entry, $form, $first, $last, $company){
$field_we_are_checking = $company;
$name = $_POST[$first].\' \'.$_POST[$last];
if(empty($_POST[$field_we_are_checking])){
$_POST[$field_we_are_checking] = $name;
}
return;
}
它所做的是检查该人员是否将“公司”字段留空,如果留空,则在提交前在“公司”字段中输入名字和姓氏。对于3种不同的形式,它都是这样做的。
如果我知道如何调试PHP,我会亲自尝试。但没有什么比msgboxes或任何其他方法更适合测试。有人能给我指出正确的方向吗?
非常感谢!
更新的代码:
add_filter(\'gform_pre_submission_1\', \'create_company_full_name\', 10, 2);
//
function create_company_full_name($entry, $form){
switch($form){
case 1:
$field_we_are_checking = $_POST[\'input_77\'];
$name = $_POST[\'input_3\'].\' \'.$_POST[\'input_4\'];
break;
case 2:
$field_we_are_checking = $_POST[\'input_1\'];
$name = $_POST[\'input_7\'].\' \'.$_POST[\'input_6\'];
break;
case 26:
$field_we_are_checking = $_POST[\'input_9\'];
$name = $_POST[\'input_7\'].\' \'.$_POST[\'input_6\'];
break;
}
if(empty($_POST[$field_we_are_checking])){
$_POST[$field_we_are_checking] = $name;
}
return;
}
SO网友:Milo
如果您查看codex条目add_filter
, 您将看到函数有4个参数,最后一个是$accepted_args
, 它应该是一个整数。你的add_filter
电话不正确,所以我不确定他们一开始是如何工作的。
在挂钩函数中似乎有5个参数,所以我假定add_filter
s应为:
add_filter(\'gform_pre_submission_2\', \'create_company_full_name\', 10, 5);
add_filter(\'gform_pre_submission_1\', \'create_company_full_name\', 10, 5);
add_filter(\'gform_pre_submission_26\', \'create_company_full_name\', 10, 5);
也就是说,过滤器通常
return
一个值,你没有,所以我也不能说这是正确的,因为我根本不知道重力的形式。
另请参见Debugging in WordPress.