AJAX 지원 플러그인을 작성하는 데 선호되는 방법은 무엇입니까?


49

AJAX 호출을 처리하기 위해 선호하는 방법이 무엇인지 궁금합니다. POST 또는 별도의 파일을 처리하기 위해 동일한 플러그인 PHP 파일을 사용해야합니까? 어느 것이 더 깨끗합니까?

답변:


47

"안전하고 깔끔한"방법은 워드 프레스와 함께 제공되는 admin-ajax.php를 사용 wp_ajax하여 플러그인 파일에서 처리 기능을 호출하고 wp-nonce를 사용하여 호출의 무결성을 확인하는 것입니다.

예를 들면 다음과 같습니다.

귀하의 아약스 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의 조치 값과 일치해야합니다.

그런 다음 함수에서 요청이 유효한 소스에서 온 것인지 확인하십시오.

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

도움이 되었기를 바랍니다


1
이 구현은 관리자 측에만 적합합니까? 사용자 쪽은 어떻습니까? 숨겨진 URL에 대한 요청이 좋지 않은 것, 그래서 나는, / WP-관리자를 숨기기 /과 관리자 URL을 변경하려면
inferusvv
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.