如何通过Contact Form 7获取最后插入的id,然后将其分配给全局变量

时间:2018-01-30 12:35:54

标签: php wordpress contact-form-7

我试图通过Contact Form 7获取最后一个插入的id值,然后将其分配给一个全局变量,以便在另一个PHP文件的函数中使用它。

这是我的代码:

$lastid = 0;

function user_data_form( $wpcf7 ) {

global $wpdb;

$wpcf7 = WPCF7_ContactForm::get_current();
$form = WPCF7_Submission::get_instance();

  if ($form) {
     $data = $form->get_posted_data();

     if ( $wpcf7->id == 5285 ) {

        $name = $data['name'];
        $email = $data['email'];
        $bio = $data['bio'];
        $url = $data['url'];            

        $wpdb->insert( $wpdb->prefix . 'user_data', 
        array( 
            'name'  => $name,
            'email' => $email,
            'bio' => $bio,
            'url' => $url
            ), array( '%s', '%s', '%s', '%s' )
        );
        $lastid = $wpdb->insert_id;
      }
   }
}
add_action( 'wpcf7_before_send_mail', 'user_data_form' );

表单提交成功后,它将重定向到另一个页面。现在要测试它,我创建这个函数来回显最后插入的ID:

function echo_last_id() {
   global $wpdb;
   global $lastid;
      echo $lastid;
      var_dump($lastid);
}
add_shortcode( 'get-id', 'echo_last_id' );

我不知道为什么,但它一直回到0.这是一个月,我无法解决这个问题。如果有人可以帮助我,我将永远感激。

1 个答案:

答案 0 :(得分:0)

据我所知,CF7没有将表单提交到任何数据库表中。所以你不能得到最后一个插入的ID,因为它不存在。

您可以使用CF7操作保存数据,例如" wpcf7_before_send_mail",抓取数据并将其插入某个自定义表格,或者您可以使用插件,如 - > https://wordpress.org/plugins/flamingo/