it-swarm.com.de

So fügen Sie eine einzelne Zeile in ein WP Datenbanktabelle?

Intro:

Ich habe eine Funktion, die die Variablen eines Kontaktformulars auf meiner Website verarbeitet.

  • benutzer gibt Name, E-Mail und Text ein.
  • function.php ruft Variablen mit Javascript ab.
  • Unterwegs erhalte ich weitere Informationen über den Benutzer - wie IP, Land, UTM-Tags, falls vorhanden, usw.

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.

hat diesen Codeteil in einer Funktion verwendet:

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 habe Folgendes versucht: https://codex.wordpress.org/Class_Reference/wpdb#INSERT_rows

ohne Erfolg.

datenbankstruktur: http://i.stack.imgur.com/kQ8oZ.png enter image description here 

Voller Funktionscode:

/**
    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 = "[email protected] example.pro";
        $utm_emails = array(
            '[email protected] example.pro',
            '[email protected] example.pro', 
            '[email protected] example.pro',
            '[email protected] example.pro',  
            '[email protected] example.pro',  
            '[email protected] example.pro'        
            );
        $fullname = $_POST['fullname'];
        $message = $_POST['text']; 
        $email_subject = " example Intro: $email";      
        $headers = array(
                'From: '. $fullname .' <'. $email .'>', 
                'BCC:  [email protected] example.pro', 
                'BCC:  [email protected] example.pro', 
                'BCC:  [email protected] example.pro', 
                'BCC:  [email protected] example.pro', 
                'BCC:  [email protected] example.pro', 
                'Content-type: text/html; charset=\"UTF-8\"; format=flowed \r\n'
            ); 
        $utm_headers = array(
            'From: '. $fullname .' <'. $email .'>'
            );


        // 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'
        ) 
    );







}
1
Kar19

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

Ihre $ wpdb-> insert-Anweisung wird immer nur dann erreicht, wenn keine E-Mail festgelegt wurde oder wenn "validation" falsch ist.

Möglicherweise möchten Sie den Aufruf von wp_die () ganz entfernen oder den Aufruf ganz am Ende Ihrer Funktion platzieren, je nach Ihren Anforderungen.

Versuchen Sie im Übrigen festzustellen, ob Ihre Funktion überhaupt aufgerufen wird (möglicherweise liegt ein Fehler beim AJAX -Aufruf selbst vor).

1
Phil R.