在gform_pre_send_email函数中提交表单后,获取Gravity表单条目ID

时间:2018-09-24 20:11:18

标签: wordpress gravity-forms-plugin gravityforms

在“ gform_pre_send_email”函数中提交for后,我无法获取重力表单条目ID。

在GF日志中,可以看到条目ID:

DEBUG --> GFFormsModel::save_entry(): Saving entry. 
DEBUG --> GFFormsModel::save_entry(): **Entry record created in the database. ID: 95.** 
DEBUG --> GFFormsModel::save_entry(): Saving entry fields. 

在函数中将$ entry设置为全局后,rgar($ entry,'id')与var_dump($ entry)一样返回空值。 $ form数组也是如此。 $ _POST数组尚未包含条目ID。

同样,API返回空:GFAPI :: get_entry($ entry_id)。

$ wpdb-> insert_id确实提供了一个数字,但它不是该条目的正确ID。

我尝试了很多选择,读了很多帖子,完成了Google。看来这是一个简单的任务,但是我却错过了如何处理的方法。

使用的代码:

add_filter( 'gform_pre_send_email', 'before_email' );
function before_email( $email ) {

    global $entry;
    $entryid = rgar( $entry, 'id' );

    //DEBUGGING
    echo '<br><br>POST:<br>';
    var_dump( $_POST );
    echo '<br><br>Entry:<br>';      
    var_dump( $entry );
    echo '<br><br>';

    $pattern = "PAYMENTLINK";
    $replacement = "<a href='https://******.***/checkout/?add-to-cart=44&entryid=$entryid' target='_blank'>https://******.***/pay</a>";
    $email['message'] = str_replace($pattern, $replacement, $email['message']);

    return $email;
}

如何获取刚提交的表单的条目ID?谢谢

2 个答案:

答案 0 :(得分:0)

我认为问题只是您试图在字符串中包含$entryid var的方式。您需要从字符串中删除var,然后将其串联:

$replacement = "<a href='https://******.***/checkout/?add-to-cart=44&entryid=".$entryid."' target='_blank'>https://******.***/pay</a>";

http://php.net/manual/en/language.operators.string.php

编辑

此外,您将需要将$ entry对象传递给函数。您目前仅传递$ email变量:

function before_email( $email, $message_format, $notification, $entry ) {

答案 1 :(得分:0)

好吧,花了很多时间,找到了解决方案。愚蠢地看到了这个。.

带有1个参数的函数:

add_filter( 'gform_pre_send_email', 'before_email' );
function before_email( $email ) {

具有4个参数的函数(请注意add_filter中的,10,4 ):

add_filter( 'gform_pre_send_email', 'before_email' , 10, 4 );
function before_email( $email, $message_format, $notification, $entry) {