Es común que los desarrolladores de complementos protejan sus complementos del acceso directo. Vi dos formas de hacer eso:
if ( ! defined( 'WPINC' ) ) die;
y
if ( ! defined( 'ABSPATH' ) ) exit;
¿Cuáles son las diferencias entre WPINC y ABSPATH? ¿Cuál es la forma 'correcta' de hacerlo?
plugins
php
plugin-development
Daniel
fuente
fuente
if ( ! defined( 'ABSPATH' ) ) exit;
... pero, tal vez, considere que el alcance de este fragmento es garantizar que se cargue wordpress 'WPINC' es mejor porque es más wordpressfull mirando con 'WP'.if ( ! defined( 'WPINC' ) ) die;
yif ( ! defined( 'ABSPATH' ) ) exit;
agregue una capa adicional de seguridad al evitar cualquier acceso directo a su archivo de complemento.ABSPATH
es una constante PHP definida por WordPress en su núcleo.Si se accede a su archivo de complemento desde fuera de WordPress, la constante
ABSPATH
oWPINC
no se definirá, por lo que sale del código del complemento, evitando cualquier acceso no autorizado a su código.ABSPATH
yWPINC
se definen en el núcleo de WordPress como:Ambos se usan para el mismo propósito.
fuente
Puedes comprobarlo tú mismo. Solo mira en
wp-load.php
el espejo de WordPress en GitHub.Incluso un vistazo rápido mostrará que la respuesta seleccionada actualmente ya no es correcta en cuanto a cómo
ABSPATH
se define. Y si compara diferentes etiquetas en GitHub, verá que laABSPATH
definición realmente cambia con el tiempo.Dado que estos se utilizan para la seguridad, iría por
ABSPATH
. La razón es queABSPATH
no solo se define primero en el programa de arranque de WP,WPINC
se define bajo un condicional en el mismo archivo y, como resultado, es más probable que experimente una regresión futura.Además, aunque no se le preguntó explícitamente, proporcionó ejemplos utilizando ambos
die
yexit
. Segúndevdocs.io
, que se basa en la documentación oficial de la API,die
es equivalente aexit
, por lo que puede elegir cualquiera de los dos y no hará la diferencia.Ambos
die
yexit
aceptan argumentos, por lo que podría considerar usarlos para generar información útil, como una etiqueta de versión encriptada o información de contacto, al finalizar, o pasar un código de salida como0
o-1
para un procesamiento posterior.También vale la pena señalar que
wp_die
eso también es una cosa. No debe confundirse con las funciones integradas de PHP, pero las complementa para su uso en la salida de HTML, además de texto sin formato, y actualmente se usa de forma liberal en todo el núcleo de WordPress. Obtenga más informaciónwp_die
sobre WordPress.org.fuente