我想知道处理AJAX调用的首选方法是什么。一个人应该使用相同的插件php文件来处理POST还是单独一个?哪个更清洁或更安全?

#1 楼

“更安全,更清洁”的方式是使用wordpress附带的admin-ajax.php和wp_ajax挂钩从插件文件中调用您的处理函数,并使用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中的操作值匹配。

然后在您的函数中只需确保请求来自有效来源

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


希望有帮助

评论


此实现仅对管理员方面有利吗?用户方面呢?我想隐藏/ wp-admin /并更改管理员URL,因此对隐藏URL的请求将不太好

– inferusvv
18-2-19在15:26