1

好的,我希望这很简单。但我对此表示怀疑。

我目前有一个 Gravity Forms 表单,它已成功发送到外部 API。使用 PUT 方法。这可以。但是现在我的客户想要添加一些额外的功能来检查 API 中的重复项,然后再提交。基本上确保用户尚未注册。我在我的functions.php中使用了这个方法,但这只会发送给第三方,它不会对重复项进行任何检查:

add_action( 'gform_after_submission_1', 'post_to_third_party', 10, 2 ); 
function post_to_third_party( $entry, $form ) {

$post_url = '#URL#';
$body = array(
    'name' => rgar( $entry, '1' ),
    'email' => rgar( $entry, '2' ),
    'password' => rgar( $entry, '3' ),
    );
GFCommon::log_debug( 'gform_after_submission: body => ' . print_r( $body, true 
) );

$request = new WP_Http();
$response = $request->post( $post_url, array( 'body' => $body ) );
GFCommon::log_debug( 'gform_after_submission: response => ' . print_r( 
$response, true ) );
}

我需要能够获取表单以检查系统上是否使用了电子邮件地址,如果是,则不发送表单并显示错误。

请帮忙....我真的被卡住了:(

4

1 回答 1

0

使用 post_to_third_party 您只能将其发送到第三方可以比较值的地方。

如果我理解得很好,您需要的是:

- 从表单中获取电子邮件字段,

- 获取注册电子邮件列表,

- 比较一下,

-提交或不提交表格。

看看https://docs.gravityforms.com/gform_pre_submission/

我将从这一点开始:

//MySQL
$servername = "localhost";
$username = "root";
$password = "password.";
$dbname = "wordpress";
//Create connection
$wpdb2 = new wpdb($username,$password,$dbname,$servername);

要获取提交表单的用户的电子邮件:

$user = wp_get_current_user();
$user_email =  $user->email;

或者您可以从您将使用的钩子内的表单字段中获取用户电子邮件

add_action( 'gform_pre_submission', 'pre_submission_handler' );
function pre_submission_handler( $form ) {
 $user_email = $entry["1"];
}

要获取注册用户的电子邮件,您可以使用

$wpdb->get_results( 'SELECT * FROM `users` WHERE `email` = '.$user_email , ARRAY_A);

我希望这些提示能让你再次上路。如果您需要更多帮助 - 我会尽力而为。

于 2018-07-18T12:40:00.757 回答