0
<?php

if (isset($_GET['confirm_code'])) {
    __construct();
}

function __construct() {
    global $wpdb;
    $table_one = $wpdb->prefix . "fantasticemailnewsletter_temp";

    $confirm = $_GET['confirm_code'];
    $mylink = $wpdb->get_results("SELECT * FROM $wpdb->$table_one WHERE confirm_code = $confirm");
    if ($mylink) {
        echo $mylink->confirm_code;
        echo "success";
        echo $wpdb->show_error();
    } else {
        echo "You Subscription is not process right now please try again later";
    }
}

?>

WordPress でニュースレターのプラグインを作成しようとしています。スパマーを防ぐために、対応するサブスクライバーの確認リンクを作成し、すべてのサブスクリプション電子メールに対してランダムなキーを作成します。次のように、クエリ文字列を含むランダムキーをメールで渡します。

http://www.example.com/wp-content/plugins/plugininname/includes/subscriber.php?confirm_code=%2248c9c7d48165379b49f58962c0092466%22

ただsubscriber.php、私は上記のコードを使用していますが、何らかの理由でエラーがありますget_results():

致命的なエラー: オブジェクト以外でのメンバー関数 get_results() の呼び出し この問題を解決するにはどうすればよいですか?

4

3 に答える 3

1

エラーは、wpdb のオブジェクトがインスタンス化されていないようです。

一般に、クラスのメソッドは、メソッドが静的でない場合、オブジェクトがインスタンス化された後に呼び出されます。そうしないと、このエラーが表示されます。

コードまたはファイルの他の部分をチェックして、WP コードの前に実行されているかどうかを確認します。

たとえば、ファイルがプラグインでもテーマでもなく (ファイルがスタンドアロンであることを意味します)、このファイルを実行する前に WP フレームワーク ヘッダー ファイルを適切に呼び出していない場合、$wpdb オブジェクトがインスタンス化されていない可能性があります。あなたの質問のコメントで@Rikeshのコードを試してみます。

于 2013-05-27T13:45:50.253 に答える