web-dev-qa-db-ja.com

アクセス方法 WP ipn.php内のデータベース?

これは私のipn.phpで、Paypalの取引が完了したときにユーザーにメールを送信しています。

問題は、私はWPデータベースで注文の状態を変更する必要があり、電子メールを送信するだけではないことです。

私はそのトランザクションのユニークな$code変数(整数)を知っていて(フォームが送られユーザーがPaypalページでプロセスを終了するようにリダイレクトした)そしてPaypalはそれをカスタムフィールド$_POST['custom']内のipn.phpファイルに送り返しています。

したがって、ipn.php(トランザクションが成功したときにnotify_urlとしてPaypalからアクセスされる)のコードは次のようになります。

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

そのため、Eメールは想定どおりのコード値で「OK」で送信されます。

ただし、すべてのユーザー(投稿の種類)に固有の$ codeに基づいてWPデータベースからユーザーの電子メールを取得し、dbの注文の状態を変更する必要もあります。

その方法は知っていますが、問題はWPがロードされていないため、データベースにアクセスしてこれらの操作を実行できないことです。

どうやってするか?

つまり、WP dbにアクセスするにはどうすればいいですか?

} 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

これをスクリプトの先頭に追加してみてください。

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

その後、次のようにしてクエリを実行できます。

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