web-dev-qa-db-fra.com

Comment accéder WP base de données à l'intérieur ipn.php?

Ceci est mon ipn.php qui envoie un courrier à l'utilisateur lorsque la transaction Paypal est terminée.

Le problème est que je dois également modifier l'état de la commande dans la base de données WP et ne pas simplement envoyer le courrier électronique.

Je connais la variable $code unique (entier) de cette transaction (je l'ai sauvegardée lorsque le formulaire a été envoyé et l'utilisateur redirigé pour terminer le processus sur la page Paypal) et Paypal la renvoie au fichier ipn.php dans le champ personnalisé $_POST['custom'].

Ainsi, le code dans ipn.php (consulté par Paypal sous le nom notify_url lorsque la transaction aboutit) ressemble à ceci:

<?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);
}

Donc, l'email est envoyé OK avec la valeur de code telle qu'elle est supposée être.

Cependant, je dois également extraire le courrier électronique de l'utilisateur de la base de données WP en fonction du code $ unique de chaque utilisateur (type de publication), puis modifier l'état de la commande dans la base de données.

Je sais comment faire cela, mais le problème est que WP n'est pas chargé et que je ne peux pas accéder à la base de données pour effectuer ces actes.

Comment faire ça?

Je veux dire, comment accéder à WP db ici?

} 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

Essayez d'ajouter ceci en haut de votre script:

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

Ensuite, vous pouvez exécuter des requêtes en utilisant:

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