Ajax处理程序在wp-admin/
目录,但是的,您也可以并且应该将其用于非管理员请求。然后为wp_ajax_nopriv_[action]
钩子,而不是普通的wp_ajax_[action]
. 在这种情况下,您只需遵循the first lines of admin-ajax.php
, 因为未登录的用户所做的请求将在第50行左右离开页面。
因此,为挂钩注册一个函数wp_ajax_nopriv_get_custom_post_data
, 如果你要求admin-ajax.php
使用action
参数设置为get_custom_post_data
. 一定要打电话die()
在处理程序末尾,否则默认die(-1)
将返回。并注册登录版本,wp_ajax_get_custom_post_data
(对于相同的处理程序函数,没有问题),因为如果您登录到您的站点,您将不会点击nopriv
钩
服务器端配置到Javascript发送服务器端配置数据的技巧(如admin-ajax.php
url),是wp_localize_script()
. 您向它传递一个键和值数组,这些键和值将包含在页面顶部。这可能最初只是为可本地化的字符串创建的,但您也可以使用它来传递配置数据。
wp_localize_script(\'storm_json_config\', \'storm_config\', array(
\'ajaxurl\' => admin_url(\'admin-ajax.php\'),
));
storm_json_config
是句柄名称(如果以后要将其出列),
storm_config
将包含数据的Javascript对象的名称。因此,静态Javascript文件可以包含一行
jQuery.post(storm_config.ajaxurl, ...)
.
另请参见bueltge\'s answer to a similar question.
插件目录中的静态Javascript要从自己的插件目录中加载静态Javascript文件,请使用wp_enqueue_script()
. 看起来像这样:
wp_enqueue_script(\'storm_json\', plugin_dir_url(__FILE__) . \'js/json.js\', array(\'jquery\'), \'20101105\');
在哪里
storm_json
再次是句柄名称,然后提供指向文件的链接,然后提供依赖项(可以是
null
), 然后是一个版本号,该版本号将在请求更新时击败浏览器缓存后添加。