Admin-Ajax.php vs modelo de página personalizada para solicitações de Ajax
-
-
BTW: Se você quiserfazer uma APIno seu site do WordPresse quer um URL quefaça sentido como solicitação de API URL.Então vocêpodefazer algummod rewriteentão `http://site site.com/api/`mapspara `http://site.com/wp-admin/admin-ajax.php`BTW: if you want to make a api on your wordpress site and want a url that make sense as api request url. Then you can do some mod rewrite so `http://site.com/api/` maps to `http://site.com/wp-admin/admin-ajax.php`
- 0
- 2012-07-22
- Sisir
-
2 respostas
- votos
-
- 2012-07-22
Primeiro,a desvantagem óbviapara oprimeirométodo é que depende de suaestruturaespecífica depágina,modeloe permalinkparatodosfuncionar corretamente.Usando
admin-ajax.php
funcionará corretamenteem qualquer contexto,tema ouplugin,onde asmelhorespráticas de WordPress adequadas são seguidas.A desvantagemmenos óbviapara oprimeirométodo é queele usamaismemória do quefazer chamadas AJAX ativadaspelo WordPress,uma vez quetodo o ambiente WordPress é carregado,como sepresume que umapáginafrontal ou administrador seráemitida.
.A adição denonces com
admin-ajax.php
fornece segurançafácile incorporada.First, the obvious drawback to the first method is that it depends on your specific page, template, and permalink structure to all work correctly. Using
admin-ajax.php
will work correctly in any context, theme or plugin, where proper WordPress best practices are followed.The less obvious drawback to the first method is that it uses more memory than doing WordPress-enabled AJAX calls, since the whole WordPress environment is loaded, as it's presumed that a front-end or admin page will be output.
The addition of NONCEs with
admin-ajax.php
provides easy, built-in security.-
Para serjusto,todo o ambiente WordPress + a área de administrador é carregadapara "admin-Ajax.php"também.A única coisa que éignorada é o carregador demodelo.`Admin-Ajax.php 'ainda é amaneira correta,é claro.:)To be fair, the entire WordPress environment + the admin area is loaded for `admin-ajax.php` as well. The only thing that gets skipped is the template loader. `admin-ajax.php` is still the correct way, of course. :)
- 1
- 2012-07-22
- chrisguitarguy
-
- 2013-12-04
admin-ajax.php
nem sempre é amaneira correta deir. Se vocêestáprocurandobuscar umpost,porexemplo,vocêpodemelhorarmelhor usando algo comotemplate_redirect ()
para carregar ummodelopersonalizado que retorna JSON (ou o que vocêprecisar devolvido).Por quê? Cache. Quando você usa
admin-ajax.php
vocêestábasicamenteeliminando a oportunidadepara alguns sistemas de cachepara salvar a saída da resposta do servidor (geralmente URLs de administradore especificamente admin-ajax.php,não deve serem cache). UsandoTemplate_Redirect () Por outro ladopermitemanter URLs separados quemuitosplugins de cachee aceleradores HTTPprovavelmente usariamparamanter os dados. Mesmo alguns sistemas de cache deback-endpodemnão seenvolverem Admin-Ajax.php
seestiverem configuradosparaevitar o cache quandois_admin ()
.Claro,se vocênãoestá recebendo algobastanteestático como umpost,o cachepoderia realmente ser uma coisamuito ruim ...em que
admin-ajax.php
é umaescolhamuitomelhor .admin-ajax.php
isn't always the right way to go. If you're looking to fetch a post, for example, you may actually better off using something liketemplate_redirect()
to load a custom template that returns JSON (or whatever you need returned).Why? Caching. When you use
admin-ajax.php
you're basically eliminating the opportunity for some cache systems to save the output of the server response (generally admin URLs, and specifically admin-ajax.php, should not be cached). Usingtemplate_redirect()
on the other hand allows for maintaining separate URLs that many cache plugins and HTTP accelerators would be likely to use to keep the data. Even some back-end caching systems may not involve themselves inadmin-ajax.php
if they're configured to avoid caching whenis_admin()
.Of course, if you're not getting something fairly static like a post, caching could actually be a really bad thing... in which case
admin-ajax.php
is a far better choice.-
Vocêpodeexpandirisso?Não vejo razão que vocênãopode cache uma chamada Ajax usando `admin-ajax.php`.Can you expand upon this? I see no reason you can't cache an AJAX call using `admin-ajax.php`.
- 0
- 2013-12-04
- s_ha_dum
-
Certo.Pode serperfeitamentepossível cache a consulta DB,objetos,etcenvolvidosem uma chamada de "admin-Ajax.php",na verdadenãotenho certeza sobre os detalhes disso.Mas se vocêestiver usando algo quefaz cachebaseadoem URL,"Admin-Ajax.php"não vaiestarenvolvido -já quetodas as suas solicitações Ajax são aquelas URL com apenas diferentesparâmetrospassados. Noentanto,se vocêfor a rota `'Template_Redirect ()',suas chamadas Ajaxparaposts diferentes serão realmente solicita a URLs diferentes,permitindo que um sistema de cachebaseadoem URLfuncione suamagia.Sure. It may be perfectly possible to cache the DB query, objects, etc involved in an `admin-ajax.php` call, I'm actually not too sure about the details of that. But if you're using something that does URL-based caching, `admin-ajax.php` isn't going to be involved — since all your AJAX requests are to that one URL with just different parameters passed in. However, if you go the `template_redirect()` route, your AJAX calls for different posts will actually be requests to different URLs, allowing a URL-based caching system to work its magic.
- 0
- 2013-12-04
- Drywall
-
Então,o que vocêestáfalando éestritamente cachebaseadoem URL,mas vocêmencionouganchos.Há umnúmero deganchos que devempermitir o armazenamentoem cache de solicitaçõespara "admin-adjax.php",mais,se o OPpuderescrever o armazenamentoem cache de objetosnos chullbacks.Eu sugiro que vocêedite a respostaparaesclarecer/ressaltar umpouco.So what you are talking about is strictly URL-based caching, but you mentioned hooks. There are a number of hooks that should allow caching of requests to `admin-adjax.php`, plus, if the OP can write object caching into the callbacks. I would suggest you edit the answer to clarify/caveat it a bit.
- 0
- 2013-12-04
- s_ha_dum
-
Obrigado.Eu altereiparaeliminar a referência aosganchose esclarecer.O armazenamentoem cachebaseadoem URL é a situaçãomais clara,mas comominha declaração alteradamenciona,se qualquer sistema de armazenamentoem cacheestiverno lugar recuar dentro da área de administração (que é umapossibilidade,emboranãopossa dizer definitivamentenenhumplugins do/nãoTisso)então você aindaestáperdendo.Melhor?Thanks. I have amended to eliminate the reference to hooks and to clarify. URL-based caching is the most clear-cut situation, but as my amended statement mentions, if whatever caching system is in place backs off within the admin area (which is a possibility though I can't definititely say any plugins do/don't do that) then you're still missing out. Better?
- 0
- 2013-12-04
- Drywall
Existe algummotivopara usar Admin-Ajax.phppara solicitações AJAX versus ummodelo depáginapersonalizado?
Eunão sabia sobre Admin-Ajax.php até recentemente,então o queeuestavafazendo é criar ummodelo depáginapersonalizado comoeste:
e a chamada Ajax seriapara o URL http://mysite.com/api/,que é ondeeutenho Publicado umapáginaem branco usandomeumodelo depágina de API. Issopareceme dar acesso atodas asminhasfunções do WordPresse cuspir dados.
Noentanto,recentemente,eu liem Admin-Ajax.phpe entendi outramaneira de se conectar aobanco de dados WordPress é chamar o URL http://mysite.com/wp-admin/admin-ajax.php e temfunções comoesta:
Éerrado conectar aprimeiramaneira? O admin-ajax.phpfornece segurançaextra ou algo assim? Obrigado qualquerentrada!