First: 标准化。如果你计划使用社区插件,很可能他们不会关心你的/ajax.php
文档根目录中的文件。所以他们不会使用它。
如果你想自己完成所有的事情,这不是问题。
Second: 如果核心更新了怎么办?您会监视并更改ajax文件吗?
Third: 即使admin-ajax.php
居住在wp-admin
, 它不加载任何管理区域的内容(例如列表等)。它也不会检查身份验证或公开任何对未登录用户敏感的内容。换句话说,它就像一个前端文件。没什么好担心的。
Fourth: 与第一个问题相关,一些插件会在盲目加载ajax相关功能之前进行检查。下面是一个示例。修改后的ajax。php可能不会导致加载。
<?php
if (is_admin() && defined(\'DOING_AJAX\') && DOING_AJAX) {
// load ajax stuff
}
Finally: 您所抱怨的是,使用本地化来获取Ajax URL是一件好事。为什么?因为您的JS文件不知道服务器端的任何内容。你要硬插入一个URL,如果/当网站移动时,该URL会中断?看起来是个糟糕的选择。
如果您真的不想本地化每个使用Ajax的脚本,只需将wp_head
很早就发布了管理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
}