Wie fügt man eine einzelne Zeile in die WP-databasetabelle ein?

Einleitung:

Ich habe eine function, die eine Kontaktformularvariablen auf meiner Website behandelt.

  • Benutzer gibt Name, E-Mail und Text ein.
  • function.php ruft Variablen mit Javascript ab.
  • Ich bekomme mehr Informationen über den Benutzer auf dem Weg – wie IP, Land, UTM-Tags, wenn überhaupt, ect.

Dann habe ich einen Codeteil hinzugefügt, der die Variablen jeweils in einer SQL-Tabelle speichert.

Ich habe die Tabelle ‘wp_contact_form’ mit phpMyAdmin erstellt.

nutzte diesen Codeteil in einer function:

global $wpdb; $wpdb->insert( 'wp_contact_form', array( 'con_ip' => $_COOKIE['ip'], 'con_name' => $fullname, 'con_email' => $email, 'con_text' => $message, 'con_country' => $_COOKIE['country'], 'con_reigon' => $_COOKIE['region'], 'con_city' => $_COOKIE['city'], 'con_utm_source' => $_COOKIE['utm_source'], 'con_utm_medium' => $_COOKIE['utm_medium'], 'con_utm_campain' => $_COOKIE['utm_campaign'], 'con_utm_term' => $_COOKIE['utm_term'], 'con_utm_content' => $_COOKIE['utm_content'] ), array( '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s' ) ); 

Und ich bekomme immer noch einen leeren Tisch. Ich versuchte folgendes: https://codex.wordpress.org/Class_Reference/wpdb#INSERT_rows

ohne Erfolg.

db-Struktur: http://i.stack.imgur.com/kQ8oZ.png Bildbeschreibung hier eingeben

Vollständiger functionscode:

 /** Contact form using Ajax **/ add_action('wp_ajax_nopriv_submit_contact_form', 'submit_contact_form'); // Send information from the contact form function submit_contact_form(){ // Get the UTM variables from the 'get_the_utm_vars()' function //$utm = get_the_utm_vars(); // If there is a $_POST['email']... if( isset($_POST['email']) && ($_POST['validation'] == true ) ) { // Get parameters $email = $_POST['email']; // Gets the email of the user.. $email_to = "arik@ example.pro"; $utm_emails = array( 'tova@ example.pro', 'yonatan@ example.pro', 'arik@ example.pro', 'gal@ example.pro', 'shai@ example.pro', 'walid@ example.pro' ); $fullname = $_POST['fullname']; $message = $_POST['text']; $email_subject = " example Intro: $email"; $headers = array( 'From: '. $fullname .' ', 'BCC: yonatan@ example.pro', 'BCC: gal@ example.pro', 'BCC: eran@ example.pro', 'BCC: tova@ example.pro', 'BCC: walid@ example.pro', 'Content-type: text/html; charset=\"UTF-8\"; format=flowed \r\n' ); $utm_headers = array( 'From: '. $fullname .' ' ); // Send email to YH, and if sent - do: if ( wp_mail($email_to,$email_subject,$message,$headers) ) { // Tells me that the mail has been sent echo json_encode( array("result"=>"complete") ); //Add the UTM variables to the emails text $message .= "\r\n \r\n \r\n IP: ". $_COOKIE['ip'] ."\r\n Country: ". $_COOKIE['country'] ."\r\n Region: ". $_COOKIE['region'] ."\r\n City: ". $_COOKIE['city'] ." \r\n UTM Source: ".$_COOKIE['utm_source']." \r\n UTM Medium: ".$_COOKIE['utm_medium']." \r\n UTM Campaign: ".$_COOKIE['utm_campaign']."\r\n UTM Term: ".$_COOKIE['utm_term']." \r\n UTM Content: ".$_COOKIE['utm_content']." "; // A mail for tova with the UTM paramseters wp_mail($utm_emails,$email_subject,$message,$utm_headers); } else { echo json_encode(array("result"=>"mail_error")); var_dump($GLOBALS['phpmailer']->ErrorInfo); } wp_die(); } global $wpdb; $wpdb->insert( 'wp_contact_form', array( 'con_ip' => $_COOKIE['ip'], 'con_name' => $fullname, 'con_email' => $email, 'con_text' => $message, 'con_country' => $_COOKIE['country'], 'con_reigon' => $_COOKIE['region'], 'con_city' => $_COOKIE['city'], 'con_utm_source' => $_COOKIE['utm_source'], 'con_utm_medium' => $_COOKIE['utm_medium'], 'con_utm_campain' => $_COOKIE['utm_campaign'], 'con_utm_term' => $_COOKIE['utm_term'], 'con_utm_content' => $_COOKIE['utm_content'] ), array( '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s' ) ); } 

Solutions Collecting From Web of "Wie fügt man eine einzelne Zeile in die WP-databasetabelle ein?"

Wenn in Ihrem Code eine E-Mail festgelegt und validiert wird (was vermutlich der Normalfall sein sollte), wird Ihr Code bei wp_die () beendet und erreicht niemals die $ wpdb-> -Einfügung.

Ihre $ wpdb-> insert-statement wird immer nur dann erreicht, wenn eine E-Mail nicht gesetzt ist oder wenn “validation” falsch ist.

Vielleicht möchten Sie den Aufruf von wp_die () ganz loswerden oder den Anruf ganz am Ende Ihrer function platzieren, je nach Ihren Bedürfnissen.

Ansonsten versuchen Sie festzustellen, ob Ihre function überhaupt aufgerufen wird (möglicherweise stimmt etwas mit dem AJAX-Aufruf selbst nicht).