0

私は WordPress プラグインに取り組んでおり、小さな障害物に遭遇しました。PayPal の IPN と対話するスクリプトの一部に取り組んでいます。プラグイン ディレクトリに ipn.php ファイルがあります。このファイルは PayPal からの応答を収集し、すべてのトランザクションの詳細を検証します。その部分は問題なく動作しますが、2 番目の部分は、変数を 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
4

3 に答える 3

1

要求../../../wp-load.phpすると、WordPressコアが組み込まれ、$wpdbグローバルにアクセスできるようになります。これは通常、3つ上のディレクトリですが、スクリプトがさらにサブディレクトリにある場合はさらに多くなる可能性があります。

マルチサイトインストールを使用している場合は、wp-load.phpを要求する前に、$ _SERVER['HTTP_HOST']がアクセスするWordPressサイトのURLと一致することを確認してください。

于 2012-07-15T05:16:30.170 に答える
1

私自身のセットアップでは、すべての IPN 処理コードはプラグインにあります。必要なときに呼び出すショートコードがあります。

基本的な投稿ループ以外のほとんどすべてを取り除いたカスタム ページ テンプレートを作成しました。このページはユーザーには表示されないため、表示指向のものは重要ではありません。次に、そのテンプレートに基づいて「ipnhandler」というページを作成し、コンテンツとしてショートコードのみを使用しました。

このページを PayPal の IPN ハンドラーとして設定しました。通常のページなので、WordPress フォルダーへのリンクなどはありません。これだけ:

http://www.mysite.com/ipnhandler

PayPal がこのページを呼び出すと、Wordpress はショートコードを見て、必要な IPN 処理を行うプラグインを呼び出します。

于 2012-07-15T14:17:39.267 に答える
-3

ajaxリクエストをに送信するか、wp-admin/admin-ajax.php個人include 'wp-load.php';的に提案しadmin-ajax.phpます。プラグインのAJAXを参照してください。

于 2012-07-15T04:50:47.703 に答える