Php Wordpress主题联系人表单不工作
我最近主动提出帮助一位朋友建立一个正在开发的网站,但我在联系方式上遇到了麻烦。虽然表单通过了验证(理论上),但表单不会发出。 现在,我已经把它缩小到以下函数,特别是第二个foreach循环。。。看起来字段值显示为空。。。 这是函数,完成…:Php Wordpress主题联系人表单不工作,php,wordpress,forms,contact-form,Php,Wordpress,Forms,Contact Form,我最近主动提出帮助一位朋友建立一个正在开发的网站,但我在联系方式上遇到了麻烦。虽然表单通过了验证(理论上),但表单不会发出。 现在,我已经把它缩小到以下函数,特别是第二个foreach循环。。。看起来字段值显示为空。。。 这是函数,完成…: function send() { $new_post = array(); foreach ($_POST as $key => $post) {
function send()
{
$new_post = array();
foreach ($_POST as $key => $post)
{
$new_post[str_replace('form_','',$key)] = $post;
}
$mymail = empty($this->form_parameters['myemail']) ? $new_post['myemail'] : $this->form_parameters['myemail'];
$myblogname = empty($this->form_parameters['myblogname']) ? $new_post['myblogname'] : $this->form_parameters['myblogname'];
$subject = empty($new_post['subject']) ? "New Message" : $new_post['subject'];
$default_from = parse_url(home_url());
//set the email adress
$from = "no-reply@wp-message.com";
$usermail = false;
//if(!empty($default_from['host'])) $from = "no-reply@".$default_from['host'];
if(!empty($this->autoresponder[0]))
{
$from = $_POST[$this->autoresponder[0]];
$usermail = true;
}
else
{
$email_variations = array( 'e-mail', 'email', 'mail' );
foreach($email_variations as $key)
{
foreach ($new_post as $current_key => $current_post)
{
if( strpos($current_key, $key) !== false)
{
$from = $new_post[$current_key];
$usermail = true;
break;
}
}
if($usermail == true) break;
}
}
$to = urldecode( $mymail );
$from = urldecode( $from );
$subject = urldecode( $subject );
$message = "";
foreach($this->form_elements as $key => $element)
{
if(!empty($new_post[str_replace(" ", "_", preg_replace("[^A-Za-z]", "" ,$key))]))
{
if($element['type'] == 'textarea') $message .= "<br/>";
$message .= $element['label'].": ".nl2br(urldecode($new_post[str_replace(" ", "_", preg_replace("[^A-Za-z]", "" ,$key))]))."<br/>";
if($element['type'] == 'textarea') $message .= "<br/>";
}
else { $message .= "error..."; }
}
$header = 'MIME-Version: 1.0' . "\r\n";
$header .= 'Content-type: text/html; charset=utf-8' . "\r\n";
$header .= 'From:'. $from . " \r\n";
//wp_mail('gnikolopoulos@gmail.com', $subject, $message, $header);
if(!wp_mail($to, $subject, $message, $header)){
$this->errors = true;
return false;
}
if($usermail && !empty($this->form_parameters['autoresponder']))
{
$header = 'MIME-Version: 1.0' . "\r\n";
$header .= 'Content-type: text/html; charset=utf-8' . "\r\n";
$header .= 'From:'. urldecode( $this->form_parameters['autoresponder_email']) . " \r\n";
$message = nl2br($this->form_parameters['autoresponder'])."<br/><br/><br/><strong>Your Message:</strong><br/><br/>".$message;
if(!wp_mail($from, $this->form_parameters['autoresponder_subject'], $message, $header)){
$this->errors = true;
return false;
}
}
return true;
}
函数send()
{
$new_post=array();
foreach($\发布为$key=>$POST)
{
$new_post[str_replace('form_',''.$key)]=$post;
}
$mymail=empty($this->form_参数['myemail'])?$new_post['myemail']:$this->form_参数['myemail'];
$myblogname=empty($this->form_参数['myblogname'])?$new_post['myblogname']:$this->form_参数['myblogname'];
$subject=empty($new_post['subject'])?“新消息”:$new_post['subject'];
$default_from=parse_url(home_url());
//设置电子邮件地址
$from=“否-reply@wp-message.com“;
$usermail=false;
//如果(!empty($default_from['host']))$from=“no reply@”。$default_from['host'];
如果(!empty($this->autoresponder[0]))
{
$from=$\u POST[$this->autoresponder[0]];
$usermail=true;
}
其他的
{
$email_variations=数组('e-mail','email','mail');
foreach($email\u变体为$key)
{
foreach($current\u key=>$current\u post的新职位)
{
if(strpos($current_key,$key)!==false)
{
$from=$new_post[$current_key];
$usermail=true;
打破
}
}
如果($usermail==true)中断;
}
}
$to=urldecode($mymail);
$from=urldecode$from;
$subject=urldecode($subject);
$message=“”;
foreach($this->form_元素为$key=>$element)
{
如果(!empty($new_post[str_replace(“,”,preg_replace(“[^A-Za-z],”,“,$key))]))
{
如果($element['type']=='textarea')$message.=“
”;
$message.=$element['label'].:“.nl2br(urldecode($new_post[str_replace(“,”,preg_replace(“[^A-Za-z],”,“,$key))))。”
;
如果($element['type']=='textarea')$message.=“
”;
}
else{$message.=“错误…”;}
}
$header='MIME版本:1.0'。“\r\n”;
$header.='内容类型:text/html;字符集=utf-8'。“\r\n”;
$header.='From:'.$From.\r\n;
//wp_邮件('gnikolopoulos@gmail.com“,$subject,$message,$header);
如果(!wp_mail($to,$subject,$message,$header)){
$this->errors=true;
返回false;
}
if($usermail&&!empty($this->form_参数['autoresponder']))
{
$header='MIME版本:1.0'。“\r\n”;
$header.='内容类型:text/html;字符集=utf-8'。“\r\n”;
$header.='From:'.urldecode($this->form\u parameters['autoresponder\u email'])。“\r\n”;
$message=nl2br($this->form_parameters['autoresponder'])。“
您的消息:
。”;
如果(!wp_mail($from,$this->form_参数['autoresponder_subject',$message,$header)){
$this->errors=true;
返回false;
}
}
返回true;
}
任何帮助都将不胜感激。。。。
仅供参考,我想他是从另一个主题得到这个表单的,而不是他正在使用的主题…看起来像
$new_post[str_replace('form_','',$key)] = $post;
线路是问题的根源!代码没有给表单字段的名称添加前缀,因此str_replace函数失败。。。。当我修改代码以实际包含所需的前缀时,一切都很正常。。。真不敢相信我没看到那个