CF7 Split/Separate fields

时间:2019-05-16 作者:mad2kx

我似乎找不到解决方案,无论是在这里还是谷歌。客户要求在CF7表单中有一个名称字段,但一旦发送电子邮件,就需要包含两个字段。

示例:[你的名字]变成[名字][姓氏]隐藏在表单中的某个地方。

这怎么可能呢?

EDIT

我用webhooks构建了一些东西,但由于某些原因,它没有提交数据。

add_action( \'wpcf7_before_send_mail\', \'wpcf7_strip_name\', 10, 1 );
function wpcf7_strip_name($contact_form){

   $submission = WPCF7_Submission::get_instance();
   $posted_data = $submission->get_posted_data();
    if ($posted_data["your-name"]){
    $name = trim($posted_data["your-name"]);
    $last_name = (strpos($name, \' \') === false) ? \'\' : preg_replace(\'#.*\\s([\\w-]*)$#\', \'$1\', $name);
    $first_name = trim( preg_replace(\'#\'.$last_name.\'#\', \'\', $name ) );

  // Set default value for last name if none is provided   
      if ($last_name == NULL ){
      $last_name = "Not Provided";
      }
    }
}
在我的联系人表单中,我有以下隐藏字段

[hidden first_name]
[hidden last_name]
这两个字段在电子邮件中也声明为[名字][姓氏],但名称剥离无法完成

1 个回复
SO网友:Logicfire

可以使用jQuery。这个想法是添加一个隐藏字段并使用jquery为其设置值。

$("#name_field_id").focusout(function(){
     str = $(this).val();
     if(str){
      s = str.split(/(?<=^\\S+)\\s/); //split string in name field after first space found. 
      $("#hidden_field_id").val(s[1]); //s[1] value after the first space set to hidden field.
     }
  });
然后,您可以使用电子邮件中的隐藏字段。

相关推荐