【发布时间】:2012-07-14 08:56:31
【问题描述】:
我正在开发一个 WordPress 插件,但遇到了一个小障碍。我正在编写与 PayPal 的 IPN 交互的脚本的一部分。我在插件目录中有一个 ipn.php 文件,该文件收集来自 PayPal 的响应并验证所有交易细节。 这部分工作正常,但第二部分是我必须将变量插入 WordPress 数据库以标记成功购买。 由于ipn.php文件中没有$wpdb,所以我必须将数据传递给插件的核心进行处理。
我愿意接受其他解决方案,非常感谢您的帮助。谢谢!
这是一个例子,这个文件将用于 $.load() 来填充管理面板中的一个区域
<?php
global $wpdb;
$promos = $wpdb->get_results("SELECT * FROM ". $wpdb->prefix ."voltbam_promocodes");
foreach($promos as $promo){
?>
ID: <?php echo $promo->id ?><br />
Name: <?php echo $promo->name ?><br />
Value: <?php echo $promo->value ?><br />
Type: <?php echo $promo->type ?><br /><br />
<?
}
?>
这是输出
Fatal error: Call to a member function get_results() on a non-object in (filename) on line 3
【问题讨论】:
-
不确定,但听起来您做出了一些不正确的假设。 因为 $wpdb 在 ipn.php 文件中不可用,你是什么意思,... ?据我了解,
$wpdb在 wordpress 中是全局的,这意味着要在函数中使用它,您只需在函数顶部插入语句global $wpdb;。正确的?当然,您只需要在初始化后引用该 var,但这应该不是问题。这个问题的真正标题应该是:“如何在插件中修改 WP DB?”为此,请参考全局$wpdb。 -
这似乎不起作用。我将使用我正在使用的代码和输出更新我的帖子。
-
听起来他设置了 PayPal 来调用 'ipn.php' 进行 IPN 处理,所以它根本不通过 WordPress,即使文件在插件目录中。这就是 $wpdb 不可用的原因。
-
@Mike Fulton - 啊,如果是这样的话,我的建议就行不通了。
标签: php wordpress plugins paypal