【问题标题】:Contact form 7 select field value after post request联系表格 7 在发布请求后选择字段值
【发布时间】:2021-05-25 10:32:00
【问题描述】:

我正在尝试获取表单下拉字段值。所有其他类型的字段值都可以获取,但只能选择字段值创建问题。 这是我的形式,一个是文本,另一个是选择

<div class="col-lg-6 first"><label>Full Name
[text* FullName id:fullname]</label></div>
<div class="col-lg-6 last"><label>Business Type
[select* primarybusiness id:primarybusiness include_blank "Manufacturer" "Brand" "Retailer" "Wholesaler"]</label></div>

这就是我想要得到的

$mydb = new wpdb('user','password','database','localhost');
    $form_to_DB = WPCF7_Submission::get_instance();
    if ( $form_to_DB ) 
        $formData = $form_to_DB->get_posted_data();        
    $fullname = $formData['FullName'];
    $primarybusiness = $formData['primarybusiness'];

当我将它存储在数据库中时,只有 $fullname 输入但 $primarybusiness 什么都不提供。 这是我用来保存的。

$mydb->insert( 'mytable', array( 'fullname'=>$fullname,'primarybusiness'=>$primarybusiness), array( '%s' ) );

【问题讨论】:

  • 在某处添加var_dump( $formData );,看看primarybusiness是否真的存在并且不为空。另外,为什么要实例化wpdb 类的新实例?为什么不使用全局 $wpdb 变量?
  • 感谢回复,但未找到 var_dump 的空间。但是通过 $b = $formData['primarybusiness']; 改变它对我有用然后 $primarybusiness =$b[0];
  • 试试$primarybusiness = $formData['primarybusiness'][0];
  • 我试过了。但它不起作用,我不知道为什么它不起作用。这样我只需将它存储在一个变量中,然后获取索引 0 的值来保存它。
  • 你在勾搭wpcf7_before_send_mail 吗?

标签: wordpress contact-form-7


【解决方案1】:

这应该可行。获取管道没有简单的解决方案,这有点痛苦。管道存储为一个类,您可以推送到数组,其中pipe[0] 是值,pipe[1] 是选项描述。

add_action( 'wpcf7_before_send_mail', 'cf7_pipes_so_67686211');
function cf7_pipes_so_67686211( $contact_form ) {
    global $wpdb;
    $mydb = new wpdb('user','password','database','localhost');
    
    // Get Form Tags
    $tags = $contact_form->scan_form_tags();
    $pipe_array = array();
    // Find the Values of the Pipes
    foreach ($tags as $tag){
        if ($tag->name === 'primarybusiness'){
           $pipe_array = $tag->pipes->to_array();
        }
    }
    // Get the form data
    $form_to_DB = WPCF7_Submission::get_instance();
    if ( $form_to_DB ) {
        $formData = $form_to_DB->get_posted_data();
        $fullname = $formData['FullName'];
        foreach ($pipe_array as $value) {
            // Compare and find the pipe value
            if ( $posted_data['primarybusiness'][0] === $value[1] ){
                $primarybusiness = $value[0];
            }
        }
        $mydb->insert( 'mytable', array( 'fullname'=>$fullname,'primarybusiness'=>$primarybusiness), array( '%s' ) );
    }
}

【讨论】:

    猜你喜欢
    • 2020-10-15
    • 2014-07-26
    • 1970-01-01
    • 1970-01-01
    • 2011-10-29
    • 2021-04-23
    • 1970-01-01
    • 1970-01-01
    • 2018-06-09
    相关资源
    最近更新 更多