将PHP变量从一个插件文件传递到另一个WordPress


Pass PHP Variables from one plugin file to another WordPress

我正在开发一个WordPress插件,遇到了一个小障碍。我正在编写一部分与PayPal的IPN交互的脚本。我在插件目录中有一个ipn.php文件,该文件收集PayPal的响应并验证所有交易细节。这一部分很好,但第二部分是我必须将变量插入WordPress数据库,以标记成功购买。由于$wpdb在ipn.php文件中不可用,我必须将数据传递到插件的核心进行处理。

我对这方面的其他解决方案持开放态度,非常感谢您的帮助。谢谢

这里有一个例子,这个文件将用于$.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

需要../../../wp-load.php将引入WordPress核心,并允许您访问$wpdb全局。这通常是您上面的三个目录,但如果您的脚本在另一个子目录中,则可能会更多。

如果您在多站点安装,请确保$_SERVER['HTTP_HOST']与您想要访问的WordPress网站的URL匹配,然后再要求wp-load.php。

在我自己的设置中,所有IPN处理代码都在我的插件中。我有一个短代码,在需要时调用它。

我创建了一个自定义页面模板,除了基本的帖子循环之外,它几乎没有任何内容。这个页面永远不会显示给用户,所以面向显示的东西都不重要。然后,我基于该模板创建了一个名为"ipnhandler"的页面,内容仅为短代码。

我已经将此页面设置为PayPal的IPN处理程序。因为这是一个常规页面,所以没有指向WordPress文件夹或类似内容的链接。只是这个:

http://www.mysite.com/ipnhandler

当PayPal调用此页面时,Wordpress会看到短代码并调用我的插件,该插件会进行所需的IPN处理。

将您的ajax请求提交给wp-admin/admin-ajax.phpinclude 'wp-load.php';我个人建议admin-ajax.php。请参阅插件中的AJAX。