如何在ipn.php中访问WP数据库?

时间:2013-11-07 作者:Derfder

这是我的ipn。当PayPal交易完成时向用户发送邮件的php。

问题是,我还需要更改WP数据库中订单的状态,而不仅仅是发送电子邮件。

我知道独一无二的$code 该事务的变量(整数)(我在发送表单时保存了它,并且用户重定向以在PayPal页面上完成该过程),PayPal正在将其发送回ipn。自定义字段内的php文件$_POST[\'custom\'].

那么ipn.php (交易成功时,PayPal以notify\\u url访问)如下所示:

<?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);
}
因此,电子邮件发送正常,代码值与预期一致。

但是,我还需要根据每个用户(post类型)唯一的$代码从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 个回复
SO网友:TomC

尝试将此添加到脚本的顶部:

require(\'/path/to/httpdocs/wp-blog-header.php\'); 
global $wpdb;
然后,可以使用以下命令运行查询:

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

结束

相关推荐

以编程方式添加Paypal按钮

我已经使用包含价格和其他属性的自定义字段设置了一个post类型产品。我现在正在阅读Paypal文档,到目前为止我读到的是“HTML按钮”可以从Paypal粘贴,但我不能告诉我的客户在每次创建新产品时都从Paypal复制并粘贴“添加到购物车”按钮。即使是标有“Paypal”的插件也似乎是手动的。我想从自定义字段中以编程方式获取price和其他属性<我不希望我的客户对贝宝做任何事情。So my question:我应该放弃我几乎完整的主题,用Woocommerce从头开始构建一切吗?还是有办法将贝宝整合