É comum os desenvolvedores de plugins protegerem seus plugins do acesso direto. Vi duas maneiras de fazer isso:
if ( ! defined( 'WPINC' ) ) die;
e
if ( ! defined( 'ABSPATH' ) ) exit;
Quais são as diferenças entre WPINC e ABSPATH? Qual é a maneira 'certa' de fazê-lo?
plugins
php
plugin-development
Daniel
fonte
fonte
if ( ! defined( 'ABSPATH' ) ) exit;
... mas, talvez, considere que o escopo deste snippet é garantir que o wordpress seja carregado 'WPINC' é melhor porque é mais cheio de wordpress com o 'WP'.if ( ! defined( 'WPINC' ) ) die;
eif ( ! defined( 'ABSPATH' ) ) exit;
adicione uma camada extra de segurança, impedindo qualquer acesso direto ao seu arquivo de plug-in.ABSPATH
é uma constante PHP definida pelo WordPress em seu núcleo.Se o seu arquivo de plug-in for acessado de fora do WordPress, a constante
ABSPATH
ouWPINC
não será definida; portanto, ele sai do código do plug-in, impedindo qualquer acesso não autorizado ao seu código.ABSPATH
eWPINC
são definidos no núcleo do WordPress como:Ambos são usados para o mesmo propósito.
fonte
Você pode verificar a si mesmo. Basta olhar no
wp-load.php
espelho do WordPress no GitHub.Mesmo uma rápida olhada mostrará que a resposta atualmente selecionada não está mais correta quanto à
ABSPATH
definição. E se você comparar diferentes tags no GitHub, verá que aABSPATH
definição realmente muda com o tempo.Dado que estes são usados para segurança, eu aceitaria
ABSPATH
. A razão de ser queABSPATH
não é apenas definida primeiro no bootstrapper do WP,WPINC
é definida sob uma condicional no mesmo arquivo e, como resultado, é mais provável que ocorra uma regressão futura.Além disso, embora não seja solicitado explicitamente, você forneceu exemplos usando ambos
die
eexit
. De acordo comdevdocs.io
, que se baseia na documentação oficial da API,die
é equivalente aexit
, então você pode escolher um dos dois e não fará diferença.Ambos
die
eexit
aceitar argumentos, então você poderia considerar usá-los para a saída de algumas informações úteis, como uma versão tag ou contato informações criptografadas, ao abend, ou passar um código de saída, como0
ou-1
para processamento posterior.Também digno de nota é que
wp_die
isso também é uma coisa. Não deve ser confundido com os built-ins do PHP, mas complementa-os pelo uso de saída de HTML, além de texto sem formatação e é usado liberalmente em todo o núcleo do WordPress atualmente. Saiba mais sobrewp_die
no WordPress.org.fonte