¿Cuáles son las diferencias entre WPINC y ABSPATH?
Es común que los desarrolladores de plugins protejan sus plugins contra el acceso directo. He visto dos formas de hacerlo:
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?
Se definen de la siguiente manera:
define( 'ABSPATH', dirname(dirname(__FILE__)) . '/' );
define( 'WPINC', 'wp-includes' );
dirname es una función de PHP que devuelve la ruta del directorio padre, y wp-includes es bastante autoexplicativo.
Diría que ABSPATH es mejor porque es una de las primeras cosas que carga WordPress y también se ve mejor :) Pero realmente no hay una forma "correcta" porque ambas funcionan.
if ( ! defined( 'WPINC' ) ) die; y if ( ! defined( 'ABSPATH' ) ) exit; añaden una capa adicional de seguridad al prevenir el acceso directo a tu archivo de plugin. ABSPATH es una constante de PHP definida por WordPress en su núcleo.
Si tu archivo de plugin es accedido desde fuera de WordPress, la constante ABSPATH o WPINC no estará definida, por lo que se detendrá la ejecución del código del plugin, previniendo cualquier acceso no autorizado a tu código.
ABSPATH y WPINC están definidas en el núcleo de WordPress como:
define( 'ABSPATH', dirname(dirname(__FILE__)) . '/' );
define( 'WPINC', 'wp-includes' );
Ambas se utilizan para el mismo propósito.
¿Cuáles son las diferencias entre WPINC y ABSPATH?
Puedes comprobarlo tú mismo. Solo mira el archivo wp-load.php en el espejo de WordPress en GitHub.
Incluso un vistazo rápido mostrará que la respuesta seleccionada actualmente ya no es correcta sobre cómo se define ABSPATH. Y si comparas diferentes etiquetas en GitHub, verás que la definición de ABSPATH en realidad cambia con el tiempo.
¿Cuál es la forma 'correcta' de hacerlo?
Dado que estos se utilizan para seguridad, yo optaría por ABSPATH. La razón es que ABSPATH no solo se define primero en el arranque de WordPress, sino que WPINC se define bajo una condición en el mismo archivo y, como resultado, es más probable que experimente una regresión en el futuro.
Además, aunque no se preguntó explícitamente, proporcionaste ejemplos usando tanto die como exit. Según devdocs.io, que se basa en la documentación oficial de la API, die es equivalente a exit, por lo que podrías elegir cualquiera de los dos y no habría diferencia.
Tanto die como exit aceptan argumentos, por lo que podrías considerar usarlos para mostrar información útil, como una versión encriptada o datos de contacto, en caso de error, o pasar un código de salida como 0 o -1 para un procesamiento posterior.
También vale la pena mencionar que wp_die también existe. No debe confundirse con las funciones integradas de PHP, pero las complementa para usar en la salida de HTML además de texto plano y se utiliza ampliamente en el núcleo de WordPress actualmente. Aprende más sobre wp_die en WordPress.org.
También puede ser bueno señalar que no hay diferencia entre die y exit.
Ver: https://stackoverflow.com/questions/1795025/what-are-the-differences-in-die-and-exit-in-php
Tal como está redactada actualmente, tu respuesta no es clara. Por favor, [edita] para añadir detalles adicionales que ayuden a otros a entender cómo esto responde a la pregunta formulada. Puedes encontrar más información sobre cómo escribir buenas respuestas en el centro de ayuda.
User
Esto no proporciona una respuesta a la pregunta. Una vez que tengas suficiente reputación podrás comentar en cualquier publicación; en su lugar, proporciona respuestas que no requieran aclaraciones del que pregunta. - De la revisión
cjbj