首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >联系表格7,将所选选项(下拉菜单)保存到数据库中

联系表格7,将所选选项(下拉菜单)保存到数据库中
EN

Stack Overflow用户
提问于 2022-04-25 14:54:59
回答 1查看 371关注 0票数 1

我试图保存到我的数据库,从我的联系表格7表格提交的意见。我发现了一些函数(不知道作者)可以这么做。它可以工作,但是它不会将从下拉菜单中选择的选项保存到数据库中。我不知道我错过了什么。我试过这个:

代码语言:javascript
复制
add_action("wpcf7_submit", "SE_379325_forward_cf7", 10, 2);

function SE_379325_forward_cf7($form, $result) {
 if( !class_exists('WPCF7_Submission') )
  return;
 $submission = WPCF7_Submission::get_instance();
 if ($result["status"] == "mail_sent") { // proceed only if email has been sent 
  $posted_data = $submission->get_posted_data();
  save_posted_data($posted_data);
 }
};


// your insert function:
function save_posted_data($posted_data){
$form_id = $posted_data["_wpcf7"]; // this is the post->ID of the submitted form so if you have more than one you can decide whether or not to save this form fields
if($form_id == 403)
 return;
 global $wpdb;

$wpdb->insert( 
  $wpdb->prefix.'tabletest',
  array(
    'lastname'=>$posted_data['lastName'],
    'name'=>$posted_data['firstName'],
    'email'=>$posted_data['email'],
    'phone'=>$posted_data['tel-3'],
    'subject'=>$posted_data['menu-338'],
    'role'=>$posted_data['menu-761'],
    'message'=>$posted_data['your-message'],
    'thedate'=>$posted_data['date-288']
  ),
  array('%s')
 );
} 

我不能保存的字段是“subject”和“role”。它们在我的桌子栏上是空的。

这是我联系表格7的表格。

我很感谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-26 09:54:12

两个潜在的问题。

  1. 表单ID可能是不可见的,您试图获取它的方式。您可以通过在第一个$contact_form->id函数中获取submit来将其传递给您的函数。
  2. 从下拉列表中得到的数据作为一个数组(总是这样)传递,就像几个版本之前在CF7中那样。

我也增加了消毒处理,你可以根据需要进行修改。默认情况下,CF7不会清理数据,因为它只是输入/输入输出,而不是存储在任何地方。

代码语言:javascript
复制
add_action( 'wpcf7_submit', 'SE_379325_forward_cf7', 10, 2 );
function SE_379325_forward_cf7( $form, $result ) {
    if ( ! class_exists( 'WPCF7_Submission' ) ) {
        return;
    }
    $submission = WPCF7_Submission::get_instance();
    if ( 'mail_sent' === $result['status'] ) { // proceed only if email has been sent.
        $posted_data = $submission->get_posted_data();
        save_posted_data( $posted_data, $form->id );
    }
}
// your insert function.
function save_posted_data( $posted_data, $form_id ) {
    if ( 403 !== $form_id ) {
        global $wpdb;
        $wpdb->insert(
            $wpdb->prefix . 'tabletest',
            array(
                'lastname' => sanitize_text_field( wp_unslash( $posted_data['lastName'] ) ),
                'name'     => sanitize_text_field( wp_unslash( $posted_data['firstName'] ) ),
                'email'    => sanitize_text_field( wp_unslash( $posted_data['email'] ) ),
                'phone'    => sanitize_email( wp_unslash( $posted_data['tel-3'] ) ),
                'subject'  => sanitize_text_field( wp_unslash( $posted_data['menu-338'][0] ) ),
                'role'     => sanitize_text_field( wp_unslash( $posted_data['menu-761'][0] ) ),
                'message'  => sanitize_textarea_field( wp_unslash( $posted_data['your-message'] ) ),
                'thedate'  => sanitize_text_field( wp_unslash( $posted_data['date-288'] ) ),
            ),
            array( '%s' )
        );
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72001531

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档