Primeiro: padronização. Se você planeja usar plug-ins da comunidade, é provável que eles não se importem com o arquivo /ajax.php
na raiz do documento. Então eles não vão usá-lo.
Se você for rolar tudo sozinho, isso não é um problema.
Segundo: e se o núcleo for atualizado? Você irá monitorar e alterar seu arquivo ajax?
Terceiro : apesar de admin-ajax.php
residir em wp-admin
, ele não carrega nenhum material da área administrativa (por exemplo, tabelas de listas, etc). Nem verifica a autenticação ou exponha qualquer coisa sensível a usuários não logados. É como um arquivo front-end, em outras palavras. Nada para se preocupar.
Quarto: Relacionado ao primeiro problema, alguns plugins serão verificados antes de carregar cegamente a funcionalidade relacionada ao ajax. Um exemplo está abaixo. Seu ajax.php modificado provavelmente não causará o carregamento.
<?php
if (is_admin() && defined('DOING_AJAX') && DOING_AJAX) {
// load ajax stuff
}
Finalmente: O que você reclama, usando a localização para obter o Ajax URL é uma boa coisa a fazer. Por quê? Porque seus arquivos JS não estão cientes de nenhuma das coisas do lado do servidor. Você está indo duro uma URL em que vai quebrar se / quando o site se move? Parece uma má escolha.
Se você realmente não quiser localizar todos os scripts que usam o Ajax, conecte-se com wp_head
no início e cuspa a URL do administrador ajax. Problema resolvido (isto é exatamente como a área de administração faz, a propósito).
<?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
}