it-swarm.com.de

Wie man darauf zugreift WP Datenbank in ipn.php?

Dies ist meine ipn.php, die dem Benutzer eine E-Mail sendet, wenn die Paypal-Transaktion abgeschlossen ist.

Das Problem ist, dass ich auch den Status der Bestellung in der Datenbank WP ändern und nicht nur die E-Mail senden muss.

Ich kenne die eindeutige $code-Variable (Ganzzahl) dieser Transaktion (ich habe sie gespeichert, als das Formular gesendet und der Benutzer umgeleitet wurde, um den Vorgang auf der Paypal-Seite abzuschließen) und Paypal sendet sie zurück zur ipn.php-Datei im benutzerdefinierten Feld $_POST['custom'].

Der Code in ipn.php (wird von Paypal als notify_url aufgerufen, wenn die Transaktion erfolgreich war) sieht folgendermaßen aus:

<?php

$req = 'cmd=_notify-validate';

foreach ($_POST as $key => $value) {
    $value = urlencode(stripslashes($value));
    $req .= "&$key=$value";
}

// post back to Paypal system to validate
$header .= "POST /cgi-bin/webscr HTTP/1.0\r\n";
$header .= "Content-Type: application/x-www-form-urlencoded\r\n";
$header .= "Content-Length: " . strlen($req) . "\r\n\r\n";
$fp = fsockopen ('ssl://www.sandbox.Paypal.com', 443, $errno, $errstr, 30);

// CUSTOM VARIABLE
$code = $_POST['custom'];

if (!$fp) {
    // ERROR
} else {

    $email = "[email protected]" ;
    $subject = "Test" ;
    $message = "Your code is {$code}" ;
    mail($email, $subject, $message, "From:" . $email);

    fclose ($fp);
}

Die E-Mail wird also mit dem erwarteten Codewert in Ordnung gesendet.

Ich muss jedoch auch die Benutzer-E-Mail aus der Datenbank WP abrufen, die auf dem für jeden Benutzer eindeutigen $ -Code basiert (Beitragstyp), und dann den Status der Bestellung in der Datenbank ändern.

Ich weiß, wie das geht, aber das Problem ist, dass WP nicht geladen ist und ich nicht auf die Datenbank zugreifen kann, um diese Aktionen auszuführen.

Wie geht das?

Ich meine, wie kann ich hier auf WP db zugreifen ?:

} else {

        // BEFORE SENDING I NEED TO ACCESS WP DB HERE...


        // AND THEN SEND THE EMAIL
        $email = "[email protected]" ;
        $subject = "Test" ;
        $message = "Your code is {$code}" ;
        mail($email, $subject, $message, "From:" . $email);

        fclose ($fp);
    }
1
Derfder

Fügen Sie dies oben in Ihr Skript ein:

require('/path/to/httpdocs/wp-blog-header.php'); 
global $wpdb;

Dann können Sie Abfragen ausführen mit:

$sql = "Your SQL Query Here";
$wpdb->get_results($sql)
1
TomC