Usar wp_die()
é a melhor dessas opções.
Como outros já observaram, há muitas razões para preferir uma função específica do WordPress sobre a planície die
ou exit
:
- Permite que outros plugins se conectem às ações chamadas por
wp_die()
. - Permite que um manipulador especial para sair seja usado com base no contexto (o comportamento de
wp_die()
é personalizado com base no fato de a solicitação ser ou não uma solicitação Ajax). - Torna possível testar seu código.
O último é mais importante, e é por isso que adicionei essa nota a o Codex . Se você quiser criar testes de unidade / integração para o seu código, você não poderá testar um função que chama exit
ou die
diretamente. Ele irá terminar o script, como é suposto. A maneira como os próprios testes do WordPress são configurados para evitar isso (para os retornos de chamada do Ajax para os quais ele tem testes) é ligar as ações acionadas por wp_die()
e lançar uma exceção. Isso permite que a exceção seja capturada dentro do teste e a saída do retorno de chamada (se houver) seja analisada.
A única vez que você usaria die
ou exit
é se você quiser ignorar qualquer manipulação especial de wp_die()
e anular a execução imediatamente. Existem alguns lugares onde o WordPress faz isso (e outros lugares onde ele pode usar die
diretamente apenas porque a manipulação de wp_die()
não é importante, ou ninguém tentou criar testes para um pedaço de código ainda, então foi ignorado ). Lembre-se de que isso também torna seu código mais difícil de testar, de modo que geralmente seria usado apenas em código que não está em um corpo de função (como o WordPress faz em admin-ajax.php
). Portanto, se a manipulação de wp_die()
não for especificamente desejada, ou se você estiver matando o script em um determinado ponto como precaução (como admin-ajax.php
, esperando que normalmente um retorno de chamada do Ajax já tenha saído corretamente), é possível considerar usando die
diretamente.
Em termos de wp_die()
vs wp_die( 0 )
, o que você deve usar depende do que está lidando com a resposta da solicitação do Ajax no front end. Se estiver esperando um corpo de resposta específico, você precisará passar essa mensagem (ou inteiro, nesse caso) para wp_die()
. Se tudo o que estiver ouvindo for a resposta ser bem-sucedida ( 200
response code ou qualquer outra coisa), não será necessário passar nada para wp_die()
. Gostaria de observar, porém, que terminar com wp_die( 0 )
tornaria a resposta indistinguível da resposta admin-ajax.php
padrão. Então, terminar com 0
não informa se o seu retorno de chamada foi conectado corretamente e, na verdade, foi executado. Uma mensagem diferente seria melhor.
Como apontado em outras respostas, você encontrará frequentemente wp_send_json()
et al. para ser útil se você estiver enviando uma resposta JSON de volta, o que geralmente é uma boa ideia. Isso também é superior a apenas chamar wp_die()
com um código, porque você pode passar muito mais informações em um objeto JSON, se necessário. Usar wp_send_json_success()
e wp_send_json_error()
também enviará a mensagem de sucesso / erro de volta em um formato padrão que qualquer função auxiliar JS Ajax fornecida pelo WordPress entenderá (como wp.ajax
).
TL; DR: Provavelmente você sempre deve usar wp_die()
, seja em um retorno de chamada do Ajax ou não. Melhor ainda, envie informações com wp_send_json()
e amigos.