Hallo zusammen,
ich hoffe ihr könnt mir hier helfen :-)
Ich verwende ein Template (enfold) welches mir auf einfache Art und Weise ermöglicht ein Formular zu erstellen. Allerdings werden die Werte dieses Formulars standardmäßig via E-Mail versendet. Ich möchte allerdings, dass das Formular kein Kontaktformular, sondern eines zum Download einer pdf-Datei (inkl. eigegebener Werte) wird.
Die Stelle im Code, in der ich Änderungen vornehmen muss, ist mir bereits bekannt:
/**
* Send the form
*
* The send method tries to send the form. It builds the necessary email and submits it via wp_mail
*/
function send()
{
$new_post = array();
foreach ($_POST as $key => $post)
{
$new_post[str_replace('avia_','',$key)] = $post;
}
$mymail = empty($this->form_params['myemail']) ? $new_post['myemail'] : $this->form_params['myemail'];
$myblogname = empty($this->form_params['myblogname']) ? $new_post['myblogname'] : $this->form_params['myblogname'];
if(empty($new_post['subject_'.$this->formID]) && !empty($this->form_params['subject'])) $new_post['subject_'.$this->formID] = $this->form_params['subject'];
$subject = empty($new_post['subject_'.$this->formID]) ? __("New Message", 'avia_framework') . " (".__('sent by contact form at','avia_framework')." ".$myblogname.")" : $new_post['subject_'.$this->formID];
$default_from = parse_url(home_url());
//hook to stop execution here and do something different with the data
$proceed = apply_filters('avf_form_send', true, $new_post, $this->form_params);
if(!$proceed) return true;
//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 );
$delimiter = ",";
if(strpos($to, ',') === false && strpos($to, ' ') !== false) $delimiter = " ";
$to = array_filter(array_map('trim', explode($delimiter, $to)));
$to = apply_filters("avf_form_sendto", $to, $new_post, $this->form_params);
$from = urldecode( $from );
$from = apply_filters("avf_form_from", $from, $new_post, $this->form_params);
$subject = urldecode( $subject );
$subject = apply_filters("avf_form_subject", $subject, $new_post, $this->form_params);
$message = "";
$iterations = 0;
foreach($this->form_elements as $key => $element)
{
$key = avia_backend_safe_string($key, '_', true);
if(empty($key))
{
$iterations++;
$key = $iterations;
}
// substract 5 characters from the string length because we removed the avia_ prefix with 5 characters at the beginning of the send() function
$key = avia_backend_truncate($key, $this->length - 5, "_", "", false, '', false);
$key .= $this->id_sufix;
if(!empty($new_post[$key]))
{
if($element['type'] != 'hidden' && $element['type'] != 'decoy')
{
if($element['type'] == 'textarea') $message .= " <br/>";
$field_value = apply_filters("avf_form_mail_field_values", nl2br(urldecode($new_post[$key])), $new_post, $this->form_elements, $this->form_params);
$message .= $element['label'].": ".$field_value." <br/>";
if($element['type'] == 'textarea') $message .= " <br/>";
}
}
}
$use_wpmail = apply_filters("avf_form_use_wpmail", true, $new_post, $this->form_params);
//$header = 'MIME-Version: 1.0' . "\r\n";
$header = 'Content-type: text/html; charset=utf-8' . "\r\n";
$header = apply_filters("avf_form_mail_header", $header, $new_post, $this->form_params);
$copy = apply_filters("avf_form_copy", $to, $new_post, $this->form_params);
$message = stripslashes($message);
foreach($copy as $send_to_mail)
{
if($use_wpmail)
{
$header .= 'From: '. $from . " <".$from."> \r\n";
wp_mail($send_to_mail, $subject, $message, $header);
}
else
{
$header .= 'From:'. $from . " \r\n";
mail($send_to_mail, $subject, $message, $header);
}
}
//autoresponder?
if($usermail && !empty($this->form_params['autoresponder']))
{
//$header = 'MIME-Version: 1.0' . "\r\n";
$header = 'Content-type: text/html; charset=utf-8' . "\r\n";
$header = apply_filters("avf_form_mail_header", $header, $new_post, $this->form_params);
$message = nl2br($this->form_params['autoresponder'])."<br/><br/><br/><strong>".__('Your Message:','avia_framework')." </strong><br/><br/>".$message;
$message = apply_filters("avf_form_autorespondermessage", $message);
$from = apply_filters("avf_form_autoresponder_from", $from, $new_post, $this->form_params);
if($use_wpmail)
{
$header .= 'From:' . get_bloginfo('name') .' <'. urldecode( $this->form_params['autoresponder_email']) . "> \r\n";
wp_mail($from, $this->form_params['autoresponder_subject'], $message, $header);
}
else
{
$header .= 'From:'. urldecode( $this->form_params['autoresponder_email']) . " \r\n";
mail($from, $this->form_params['autoresponder_subject'], $message, $header);
}
}
unset($_POST);
return true;
//return wp_mail( $to, $subject, $message , $header);
}
Alles anzeigen
Und zwar genau an der Stelle
//hook to stop execution here and do something different with the data
$proceed = apply_filters('avf_form_send', true, $new_post, $this->form_params);
if(!$proceed) return true;
Allerdings weiß ich nicht genau wie ich von dort jetzt die Werte des Formulars bekomme und via POST an mein php-Skript versende um die Download-Datei zu erstellen. Ich weiß, dass ich mich irgendwie mit add_filter "daranhängen" muss, aber wie genau weiß ich leider nicht.
Ich hoffe ihr könnt mein Problem nachvollziehen. Ich wäre über jegliche Lösungen, aber auch Hinweise oder Tipps sehr dankbar.
Viele Grüße.