¿Cuáles son las diferencias entre WPINC y ABSPATH?

31 jul 2013, 06:43:07
Vistas: 36.1K
Votos: 47

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?

0
Todas las respuestas a la pregunta 4
1
28

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.

31 jul 2013 07:40:35
Comentarios

No hay una forma verdaderamente correcta, y yo siempre uso if ( ! defined( 'ABSPATH' ) ) exit;... pero, tal vez, considera que el alcance de este fragmento es asegurar que WordPress esté cargado, 'WPINC' es mejor porque es más wordpressfull comenzando con 'WP'.

gmazzap gmazzap
31 jul 2013 07:53:07
0
10

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.

4 ago 2015 09:58:28
0

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

10 jun 2017 16:01:12
2

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

25 mar 2024 12:20:49
Comentarios

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 User
26 mar 2024 04:07:43

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 cjbj
26 mar 2024 11:59:26