第一:标准化。如果您打算使用社区插件,那么它们很可能不会在意/ajax.php
文档根目录中的文件。因此他们不会使用它。
如果您要自己滚动所有内容,这不是问题。
第二:如果核心更新了怎么办?您将监视并更改您的ajax文件吗?
第三:尽管admin-ajax.php
驻留在中wp-admin
,但它不会加载任何管理区内容(例如列表表等)。它也不会检查身份验证或公开任何对未登录用户敏感的内容。换句话说,它就像一个前端文件。完全不用担心。
第四:与第一个问题相关,某些插件会在盲目加载ajax相关功能之前进行检查。下面是一个示例。您修改后的ajax.php可能不会导致加载。
<?php
if (is_admin() && defined('DOING_AJAX') && DOING_AJAX) {
// load ajax stuff
}
最后:您抱怨的事情是,使用本地化获取Ajax URL是一件好事。为什么?因为您的JS文件不知道任何服务器端内容。如果网站移动,您将很难使用其中的URL?似乎是一个错误的选择。
如果您真的不想本地化所有使用Ajax的脚本,则可以wp_head
很早就插入钩子并吐出admin ajax URL。解决的问题(顺便说一句,这正是管理区域的工作方式)。
<?php
add_action('wp_head', 'wpse83650_lazy_ajax', 0, 0);
function wpse83650_lazy_ajax()
{
?>
<script type="text/javascript">
/* <![CDATA[ */
var ajax_url = "<?php echo esc_js(admin_url('admin-ajax.php')); ?>";
/* ]]> */
</script>
<?php
}