4

WordpressプラグインでjQueryのFormプラグインを使用しようとしています。私はこのに従っています。スクリプトをキューに入れ、フォームを作成しました。例のjson-echo.phpに相当するcsf_form_handler.phpで、フォームで選択したアイテムにアクセスできます(ラジオボタングループがあります)。

私の目標は、SELECTステートメントのフォームで選択された値を使用して、カスタムのWordPressデータベーステーブルからデータを返すことです。

$csf_selected_sport = $_POST['csf_radiobutton_group_sport'];

global $wpdb;

$csf_db_table = $wpdb->prefix . "activity";


$csf_data = $wpdb->get_results($wpdb->prepare("
            SELECT *
            FROM " .$csf_db_table. "
            WHERE  " . $csf_selected_sport ." ")); 

残念ながら、私は次のようになっています。

注意:非オブジェクトのプロパティを取得しようとしています($ wpdb-> prefix行)

致命的なエラー:非オブジェクト($ csf_data行)でメンバー関数get_results()を呼び出す

上記のコード csf_form_handler.phpは関数内にありません。それが違いを生むかどうかはわかりません。

$ wpdbを使用できるようにコードを変更するにはどうすればよいですか?

ありがとうございました。

4

4 に答える 4

17

wp-config.php同じ問題が発生しましたが、WordPressフォルダーのルートから次のようにファイルを含めることで解決しました。

require_once('../../../wp-config.php');
global $wpdb;

これがお役に立てば幸いです。

于 2012-11-21T18:28:36.323 に答える
6

プラグインを作成するときは、データ処理をプラグインのメインファイル内に保持し(つまり、別のファイルに送信しない)、それに応じて処理する関数をアクティブ化することをお勧めします。基本的に、プラグインのファイルまたはフォームを含むページのいずれかを指すようにフォームのアクションを設定できます。

作業中のこのフォームがサイトのフロントエンドのサイドバーに表示されていると仮定します。ユーザーが「送信」をクリックしたときにそのフォームからのデータを処理するために、プラグインのファイルに次のような関数を作成できます。

function $csf_get_data(){

global $wpdb; //since your this function is in your plugin’s file, $wpdb should be available, so no errors here! =)

$csf_selected_sport = $_POST['csf_radiobutton_group_sport'];

$csf_db_table = $wpdb->prefix . "activity";

$csf_data = $wpdb->get_results($wpdb->prepare("
            SELECT *
            FROM " .$csf_db_table. "
            WHERE  " . $csf_selected_sport ." ")); 

    //do your stuff with $csf_data
}

//now run it everytime the plugin is run
if(isset($_POST[‘submit’])){
    $csf_get_data();
}

これで、フォームアクションのプロパティを設定して、データを同じページに送信できます。これにより、上記の関数を使用してデータを処理できるようになります。次のいずれかを使用できます。

    action=””

また

    action="<?php the_permalink()?>"

注意:データがサイト(特にパブリックフォーム)からのものであることを確認するには、wp_nonce_field()を使用して、wp_nonce()を介してwordpressで検証できるナンスフィールドを作成することを忘れないでください:http://codex.wordpress.org / Function_Reference / wp_nonce_field

お役に立てば幸いです。

Vq。

于 2011-09-23T19:24:55.367 に答える
2

このコードはどこで実行していますか?$ wpdbインスタンスが作成される前に(またはスコープ外に)実行しているようです。

csf_form_handler.phpファイルをどのようにロードしていますか?Wordpress内のスクリプトの一部として含めていますか、それとも独自のプラグインですか?後者の場合は、最初にアクティブ化する必要があることを忘れないでください。これにより、WPはロードシーケンスに含めることができます(すでにアクティブ化されていると思いますが、JIC)

$ wpdbオブジェクトがすでに作成されているかどうかを確認するには、実行<?php print_r($wpdb);?>してオブジェクトの内容を印刷します。

私にもっと知らせてください、そしてうまくいけば私はあなたを助けることができるでしょう。

于 2011-09-22T21:12:02.013 に答える
1

置くのを忘れたので、この致命的なエラーが発生しました

global $wpdb;

$ wpdb-> get_results()関数を配置したファイル内。

于 2019-01-27T00:41:30.340 に答える