Warum ist meine Cookie-Einstellung nicht in meiner function?

Ich habe eine sehr einfache function, die einfach Mail sendet mit Werten aus dem Formular.

Alles funktioniert, die Werte werden an die wp_mail weitergeleitet und es wird kein Problem gesendet.

Aber aus irgendeinem Grund

setcookie('my_cookie', $usersemail, 1 * DAYS_IN_SECONDS, COOKIEPATH, COOKIE_DOMAIN ); 

Selbst wenn ich es tue

 function set_user_cookie() { $school = "Some Value"; setcookie('default_school', $school, time()+3600); } add_action( 'init', 'set_user_cookie'); 

Das scheint nicht zu funktionieren, die vollständige function ist unten:

 function deliver_mail() { // if the submit button is clicked, send the email if ( isset( $_POST['cookieformSubmit'] ) ) { // sanitize form values $name = sanitize_text_field( $_POST["cookieForm_name"] ); $email = sanitize_email( $_POST["cookieForm_email"] ); $number = sanitize_text_field( $_POST["cookieForm_number"] ); $downloadurl = sanitize_text_field( $_POST["cookie_download_url"] ); $message = ''; $message .= $name; $message .= $email; $message .= $number; $message .= $downloadurl; // get the blog administrator's email address $to = 'myemail@myemail.com'; $headers = "From: $name " . "\r\n"; // If email has been process for sending, display a success message if ( wp_mail( $to, $subject, $message, $headers ) ) { echo '
'; echo '

Thanks for contacting me, expect a response soon.

'; echo '
'; setcookie('hbp_cookie_doc_download', $email, 1 * DAYS_IN_SECONDS, COOKIEPATH, COOKIE_DOMAIN ); } else { echo 'An unexpected error occurred'; } } }

Ich bekomme den Text “Danke, dass du mich kontaktiert hast, erwarte bald eine Antwort.” wenn ich das Formular absende, weiß ich, dass es zu diesem Punkt kommt, aber aus irgendeinem Grund setzt es den Cookie einfach nicht. Ich benutze keinen ingonito Modus und ich habe keine Werbeblocker und ich akzeptiere Cookies.

Also ich bin mir nicht sicher, was ich falsch machen würde Ideen würden sehr geschätzt werden.

Prost

Josh

Solutions Collecting From Web of "Warum ist meine Cookie-Einstellung nicht in meiner function?"

Das Setzen von Cookies erfolgt über HTTP-Header. Dies bedeutet, dass Sie keine Cookies mehr über serverseitige Methoden (PHP-> WordPress) setzen können, nachdem der Inhalt an den Browser gesendet wurde.

Ein funktionierendes Beispiel zum Setzen von Cookies in WordPress (in einem meiner Plugins):

Cookie-Manager: https://github.com/download-monitor/download-monitor/blob/e26022f9a96abf174a874873b8cd35a0db98882b/includes/class-dlm-cookie-manager.php

Einstellen des eigentlichen Cookies: https://github.com/download-monitor/download-monitor/blob/e26022f9a96abf174a874873b8cd35a0db98882b/includes/class-dlm-download-handler.php#L416

Der Cookie wird auf den hook parse_request der nach init ausgetriggers wird. Dies ist wahrscheinlich nicht das Problem in Ihrem Fall. setcookie Sie sicher, dass vor dem setcookie Anruf kein Inhalt an den Browser setcookie .