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
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
.