¿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.

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
