Quais são as diferenças entre o WPINC e o ABSPATH?

28

É comum que os desenvolvedores de plug-ins protejam seus plugins do acesso direto. Eu vi duas maneiras de fazer isso:

if ( ! defined( 'WPINC' ) ) die;

e

if ( ! defined( 'ABSPATH' ) ) exit;

Quais são as diferenças entre o WPINC e o ABSPATH? Qual é o caminho 'certo' para fazer isso?

    
por Daniel 31.07.2013 / 05:43
fonte

3 respostas

15

Eles são definidos da seguinte forma:

define( 'ABSPATH', dirname(dirname(__FILE__)) . '/' );
define( 'WPINC', 'wp-includes' );

dirname é uma função PHP que retorna o caminho do diretório pai, e wp-includes é bastante auto-explicativo.

Eu diria que ABSPATH é melhor porque é uma das primeiras coisas que o WP carrega e também parece melhor :) Mas não existe um "caminho certo" real porque ambos funcionam.

    
por Wyck 31.07.2013 / 06:40
fonte
3

if ( ! defined( 'WPINC' ) ) die; e if ( ! defined( 'ABSPATH' ) ) exit; adicionam 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 ou WPINC não será definida, portanto, ele sairá do código do plug-in, impedindo qualquer acesso não autorizado ao seu código.

ABSPATH e WPINC estão definidos no núcleo do WordPress como:

define( 'ABSPATH', dirname(dirname(__FILE__)) . '/' );
define( 'WPINC', 'wp-includes' );

Ambos são usados para o mesmo propósito.

    
por P M Aagjal 04.08.2015 / 08:58
fonte
1
  

Quais são as diferenças entre o WPINC e o ABSPATH?

Você pode verificar a si mesmo. Apenas veja wp-load.php no espelho WordPress no GitHub.

Mesmo uma rápida olhada mostrará que a resposta atualmente selecionada não está mais correta de como ABSPATH está definido. E se você comparar tags diferentes no GitHub, verá que a definição ABSPATH realmente muda com o tempo.

  

Qual é o jeito "certo" de fazer isso?

Dado que estes são usados para segurança, eu usaria ABSPATH . Justifica-se que ABSPATH não é apenas definido primeiro no bootstrapper do WP, WPINC é definido sob uma condicional no mesmo arquivo e, como resultado, é mais provável que experimente uma regressão futura.

Além disso, embora não seja explicitamente perguntado, você forneceu exemplos usando die e exit . De acordo com devdocs.io , que se baseia na documentação oficial da API, die é equivalente a exit , então você pode escolha um dos dois e isso não fará diferença.

Tanto die como exit aceitam argumentos, portanto, você pode usá-los para gerar algumas informações úteis, como uma tag de versão criptografada ou informações de contato, depois de abortar ou passar um código de saída, como 0 ou -1 para processamento adicional.

Também vale a pena notar que wp_die é uma coisa também. Não deve ser confundido com os built-ins do PHP, mas complementa-os para uso na produção de HTML, além de texto simples e é usado livremente em todo o núcleo do WordPress atualmente. Aprenda mais sobre wp_die no WordPress.org.

    
por Josh Habdas 10.06.2017 / 15:01
fonte