使用Gravity Forms“gform_after_submission”过滤器钩子

时间:2013-04-07 09:08:50

标签: php wordpress wordpress-plugin

我希望在gform_after_submission挂钩创建条目后更新帖子并使用序列号编辑现有字段的值。

要求是更新同一帖子中的单个字段值,然后更新帖子。我发现this documentation但没有帮助。

尝试了以下内容,但它正在更新所有字段:

add_filter( "gform_save_field_value", "set_field_value", 10, 4 ); 

function set_field_value( $value, $lead, $field, $form ){ 
    if( $form['id'] != 1 || $field['id'] != 19 ) 
        return; 

    $value = "xxx"; 
    return $value; 
}

2 个答案:

答案 0 :(得分:2)

我认为你的逻辑有点偏离我会检查它是否是正确的字段而不是它不是并且做这样的事情:

    add_filter( "gform_save_field_value", "nifty_set_field_value", 10, 4 ); 

    function nifty_set_field_value( $value, $lead, $field, $form ){ 
    //make sure we are on form 1 AND field 19
    if( $form['id'] == 1 &&  $field['id'] == 19 ){
        //set value
        $value = "xxx";
        //return
        return $value; 
    } 
   //not our field, that's okay just return the normal value
   else {return $value;  }

您可以在没有else的情况下执行此操作,只返回一次值,但如果我记得正确(并且文档显示),则两者都需要。

或者您可以使用当前代码执行此操作:

    add_filter( "gform_save_field_value", "nifty_set_field_value", 10, 4 ); 

function nifty_set_field_value( $value, $lead, $field, $form ){ 
    if( $form['id'] != 1 || $field['id'] != 19 ) {
        return $value; 
}
$value = "xxx"; 
return $value; 

}

确保返回值而不仅仅是返回函数

以下是指向the correct docs page的链接此外,Gravity Forms还为已支付该产品的用户提供了support form。最后,查看他们的example pastie

答案 1 :(得分:0)

我使用以下代码解决了这个问题:

add_filter("gform_get_input_value", "update_field", 10, 4);

    function update_field($value, $lead, $field, $input_id){
        if($lead["form_id"] == 1 && $field["id"] == 19)
            return 'xxx';
        else
            return $value;
    }

    add_filter("gform_save_field_value", "save_field_value", 10, 4);

    function save_field_value($value, $lead, $field, $form){
        if($lead["form_id"] == 1 && $field["id"] == 19)
            return 'xxx';
        else
            return $value;
    }