2016-05-27 3 views
0

Nachdem ein Kontaktformular zu senden bekam ich folgende Fehlermeldung:WP: Kopf Warnung nach E-Mail zu senden

Warning: Cannot modify header information - headers already sent by (output started at /home/clientsc/public_html/mypage/wp-includes/general-template.php:2680) in /home/client/public_html/mypage/wp-includes/pluggable.php on line 1171 

ich diesen Fehler habe, wenn ich die Funktion unten in der Datei functions.php

function send_my_awesome_form(){ 

if (!isset($_POST['submit'])) { 

    // get the info from the from the form 
    $form = array(); 
    $form['fullname'] = $_POST['fullname']; 
    $form['company'] = $_POST['company']; 
    $form['email'] = $_POST['email']; 
} 

// Build the message 
$message = "Name :" . $form['fullname'] ."\n"; 
$message .= "Company :" . $form['company'] ."\n"; 
$message .= "Email :" . $form['email']  ."\n"; 

//set the form headers 
$headers = 'From: Contact form <[email protected]>'; 

// The email subject 
$subject = 'you got mail'; 

// Who are we going to send this form too 
$send_to = '[email protected]'; 

if (wp_mail($send_to, $subject, $message, $headers)) { 
    wp_redirect(home_url()); exit; 
} 

} 

add_action('wp_head', 'send_my_awesome_form'); 
benannt setzen

Wie kann ich dieses Problem lösen?

+0

Mögliche Duplikat von [Wie beheben "Header bereits gesendet" Fehler in PHP] (http://stackoverflow.com/questions/8028957/how-to-fix-headers-already-sent-error-in-php) – Qirel

Antwort

0

wp_head hook wird in der Kopfzeile Ihres Themas verwendet, daher ist es zu spät und der HTML-Code wird bereits teilweise angezeigt.

Sie haben stattdessen den init Haken verwenden:

add_action('init', 'send_my_awesome_form');

EDIT:

function send_my_awesome_form(){ 
    if(isset($_POST['fullname']) && isset($_POST['company']) && isset($_POST['email'])){ 
     // your form treatment 
     // your redirect 
    } 
} 
+0

Hallo, ich habe es nach Ihrem Vorschlag geändert. Jetzt habe ich einen weiteren Fehler: Dich zu oft umgeleitet. Website funktioniert nicht. – Daniel

+0

Es ist, dass Ihr Code bei jedem Laden der Seite abgespielt wird. Sie müssen den ganzen Code Ihrer Funktion in das 'if' setzen, das das Formular überprüft, ou wollen wird gepostet – Pierre

+0

Ich habe nicht ganz verstanden, was genau du meinst ... – Daniel