在WordPress中,所有AJAX请求都必须发送到以下URL:
http://www.example.com/wp-admin/admin-ajax.php
您不应该直接向插件或主题目录中的文件发出AJAX请求。
另外,请勿对上面的URL进行硬编码,而应使用以下函数来构造URL:
<script> ajax_url = "<?php echo admin_url('admin-ajax.php'); ?>";</script>
除了上述以外,您还可以使用
wp_localize_script(),但这不是必需的,以上也可以。
注意:不用担心“管理员”部分,此URL是适用于所有用户(包括非登录(来宾)用户)的正确URL。
告诉WordPress您的AJAX请求使用什么功能您需要让WordPress知道哪个函数应该处理您的AJAX请求。
为此,您将创建一个自定义函数,并使用
wp_ajax_*和
wp_ajax_nopriv_*钩子进行注册:
不要忘记在AJAX请求中也指定“ mycustomfunc”add_action('wp_ajax_mycustomfunc', 'mycustomfunc'); // Logged-in usersadd_action('wp_ajax_nopriv_mycustomfunc', 'mycustomfunc'); // Guest usersfunction mycustomfunc() { $whatever = esc_html($_POST['whatever']); echo 'It works: '.$whatever; exit; // This is required to end AJAX requests properly.}
最后,这是您如何发出适当的AJAX请求的方法:
(function ($) { $(document).ready(function () { var my_data = { action: 'mycustomfunc', // This is required so WordPress knows which func to use whatever: "yes it is" // Post any variables you want here }; jQuery.post(ajax_url, my_data, function(response) { alert('Got this from the server: ' + response); }); });})(jQuery);
结合所有
如果必须将所有内容放到一个文件中,请按以下步骤 *** 作:
// Register my custom function for AJAX processingadd_action('wp_ajax_mycustomfunc', 'mycustomfunc'); // Logged-in usersadd_action('wp_ajax_nopriv_mycustomfunc', 'mycustomfunc'); // Guest usersfunction mycustomfunc() { $whatever = esc_html($_POST['whatever']); echo 'It works: '.$whatever; exit; // This is required to end AJAX requests properly.}// Inline Javascriptadd_action('wp_footer', 'my_inline_js');function my_inline_js() { ?> <script> // Set the "ajax_url" variable available globally ajax_url = "<?php echo admin_url('admin-ajax.php'); ?>"; // Make your AJAX request on document ready: (function ($) { $(document).ready(function () { var my_data = { action: 'mycustomfunc', // This is required so WordPress knows which func to use whatever: "yes it is" // Post any variables you want here }; $.post(ajax_url, my_data, function(response) { // This will make an AJAX request upon page load alert('Got this from the server: ' + response); }); }); })(jQuery); </script> <?php}
注意:对于
ajax_url零件,您可以使用
wp_localize_script()而不是手动进行设置,但是灵活性较差,因为它需要指定可能没有的现有排队脚本。
注意:此外,为了将内联Javascript手动输出到页面中,此
wp_footer钩子是正确使用的钩子。如果使用
wp_localize_script(),则应改用
wp_enqueue_scripts钩子。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)