gform_pre_send_email函数中提交表单后获取Gravity表单入口ID
Get Gravity forms entry ID after submitting the form in the gform_pre_send_email function
在 'gform_pre_send_email' 函数中提交 for 后,我无法获取 Gravity Forms 条目 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' ) returns 和 var_dump( $entry ) 一样为空。 $form 数组也是如此。 $_POST 数组还不包含条目 ID。
还有 API returns 空: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?谢谢
我认为问题只是您尝试在字符串中包含 $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 个参数的函数:
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) {
在 'gform_pre_send_email' 函数中提交 for 后,我无法获取 Gravity Forms 条目 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' ) returns 和 var_dump( $entry ) 一样为空。 $form 数组也是如此。 $_POST 数组还不包含条目 ID。
还有 API returns 空: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?谢谢
我认为问题只是您尝试在字符串中包含 $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 个参数的函数:
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) {