5

テンプレートにいくつかのコメント関数を追加する wordpress プラグイン ウィッチを作成しました。ajax を介して、すべてのものを wordpress データベースに送信する必要があります。

問題は - ajax ハンドラーには、クエリをキャプチャする php ファイルが必要です。

if(isset($_POST['name'], $_POST['title'], $_POST['description'])) { 

 // do something with wordpress actions, e.g. get_current_user, $wpdb

}

ユーザーがクエリを送信すると、ajax ハンドラーは次のように php ファイルを呼び出します。

$('#ajax_form').bind('submit', function() {
    var form = $('#ajax_form');
    var data = form.serialize();
    $.post('../wp-content/plugins/test/getvars.php', data, function(response) {
        alert(response);           
    });
    return false; 

getvars.phpは、ユーザーの送信から直接呼び出されるため、wordpress 環境を認識していません。wordpress 環境のクラスとインクルードを追加するのは適切なスタイルではないと思います。

他に方法はありますか?ご支援ありがとうございます。

4

1 に答える 1

9

はい、組み込みの wordpress ajax アクションを使用します。

jquery は次のようになります。

$('#ajax_form').bind('submit', function() {
    var form = $('#ajax_form');
    var data = form.serialize();
    data.action = 'MyPlugin_GetVars'
    $.post('/wp-admin/admin-ajax.php', data, function(response) {
        alert(response);           
    });
return false; 

プラグイン コードは次のようになります。

add_action("wp_ajax_MyPlugin_GetVars", "MyPlugin_GetVars");
add_action("wp_ajax_nopriv_MyPlugin_GetVars", "MyPlugin_GetVars");

function MyPlugin_GetVars(){
    global $wpdb;
    // use $wpdb to do your inserting

    //Do your ajax stuff here
    // You could do include('/wp-content/plugins/test/getvars.php') but you should
    // just avoid that and move the code into this function
}
于 2013-03-27T21:50:07.207 に答える