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

28

Es común que los desarrolladores de plugins protejan sus plugins del acceso directo. Vi 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?

    
pregunta Daniel 31.07.2013 - 05:43

3 respuestas

15

Se definen como sigue:

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

dirname es una función de PHP que devuelve la ruta del directorio principal, y wp-includes se explica por sí mismo.

Yo diría que ABSPATH es mejor porque es una de las primeras cosas que WP carga y también se ve mejor :) Pero no existe una "forma correcta" porque ambos funcionan.

    
respondido por el Wyck 31.07.2013 - 06:40
3

if ( ! defined( 'WPINC' ) ) die; y if ( ! defined( 'ABSPATH' ) ) exit; agregan una capa adicional de seguridad al evitar cualquier acceso directo a su archivo de complemento. ABSPATH es una constante de PHP definida por WordPress en su núcleo.

Si se accede a su archivo de complemento desde fuera de WordPress, no se definirá la constante ABSPATH o WPINC , por lo que saldrá del código del complemento, lo que evitará el acceso no autorizado a su código.

ABSPATH y WPINC se definen en el núcleo de WordPress como:

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

Ambos se utilizan para el mismo propósito.

    
respondido por el P M Aagjal 04.08.2015 - 08:58
1
  

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

Puede comprobarlo usted mismo. Solo mire wp-load.php en el espejo de WordPress en GitHub.

Incluso una mirada rápida mostrará que la respuesta seleccionada actualmente ya no es correcta en cuanto a cómo se define ABSPATH . Y si comparas diferentes etiquetas en GitHub, verás que la definición ABSPATH realmente cambia con el tiempo.

  

¿Cuál es la forma 'correcta' de hacerlo?

Dado que estos se utilizan para la seguridad, iría por ABSPATH . La razón es que ABSPATH no solo se define primero en el bootstrapper de WP, WPINC se define bajo un condicional en el mismo archivo y, como resultado, es más probable que experimente una futura regresión.

Además, aunque no se le preguntó explícitamente, proporcionó ejemplos utilizando 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ía elige cualquiera de los dos y no hará una diferencia.

Tanto die como exit 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 anular, o pasar un código de salida como 0 o -1 para su posterior procesamiento.

También vale la pena señalar que wp_die es una cosa también. No debe confundirse con las incorporaciones de PHP, pero las complementa por su uso para generar HTML, además de texto sin formato, y se utiliza de forma liberal en todo el núcleo de WordPress actualmente. Obtenga más información sobre wp_die en WordPress.org.

    
respondido por el Josh Habdas 10.06.2017 - 15:01

Lea otras preguntas en las etiquetas