web-dev-qa-db-ja.com

AJAX対応のプラグインを書くための好ましい方法は何ですか?

AJAX呼び出しを処理するための推奨される方法は何だろうか。 POSTを処理するために同じプラグインphpファイルを使うべきですか、それとも別のものを使うべきですか?どちらがきれいか、安全か?

49
James

「より安全でクリーンな」方法は、ワードプレスとwp_ajaxフックに付属のadmin-ajax.phpを使用してプラグインファイルから処理関数を呼び出し、呼び出しの整合性を確認するにはwp-nonceを使用することです。

例えば:

あなたのajax JQuery呼び出しは

<script type="text/javascript" >
jQuery(document).ready(function($) {

    var data = {
        action: 'ACTION_NAME',
            Whatever: '1234',
            _ajax_nonce: '<?php echo wp_create_nonce( 'my_ajax_nonce' ); ?>'

    };

    // since 2.8 ajaxurl is always defined in the admin header and points to admin-ajax.php
    // If you need it on a public facing page, uncomment the following line:
    // var ajaxurl = '<?php echo admin_url('admin-ajax.php'); ?>';
    jQuery.post(ajaxurl, data, function(response) {
        alert('Got this from the server: ' + response);
    });
});
</script>

プラグインファイルに追加

//if you want only logged in users to access this function use this hook
add_action('wp_ajax_ACTION_NAME', 'my_AJAX_processing_function');

//if you want none logged in users to access this function use this hook
add_action('wp_ajax_nopriv_ACTION_NAME', 'my_AJAX_processing_function');

*ログインしているユーザーとゲストがajaxで自分の機能にアクセスするようにしたい場合は、両方のフックを追加してください。 * ACTION_NAME はajax POSTのaction値と一致する必要があります。

それからあなたの関数で要求が有効なソースから来たことを確認してください

function my_AJAX_processing_function(){
   check_ajax_referer('my_ajax_nonce');
   //do stuff here
}

お役に立てれば

48
Bainternet