Diferencia entre plugin_dir_path(__FILE__) y __DIR__

3 minutos de lectura

avatar de usuario
Venkat

¿Es la barra inclinada final “https://stackoverflow.com/” la única diferencia entre estos dos? Si es así, puedo usar trailingslashit(__DIR__)?

avatar de usuario
Rajkumar Gour

plugin_dir_url(__FILE__) Esta función le proporciona la URL del directorio de archivos.

plugin_dir_url(__DIR__) Esta función le proporciona la URL carpeta de complementos.

__FILE__ esta constante mágica te dará la sendero del archivo donde existe el archivo.

__DIR__ esta constante mágica te dará la sendero del directorio donde existe el archivo.

trailingslashit(__DIR__) esta función devolverá el sendero del directorio y agregue shash después de la ruta del directorio.

plugin_dir_path(__FILE__). te dará el mismo resultado que trailingslashit(__DIR__). y mi sugerencia de usar la ruta del directorio del complemento porque es una forma de wordpress.

  • Lo siento, quise escribir plugin_dir_path

    – Venkat

    7 de noviembre de 2017 a las 5:16

  • sí, puedes usar ambos, pero en wordpress debes usar plugin_dir_path

    – Rajkumar Gour

    7 de noviembre de 2017 a las 5:23

avatar de usuario
mierda marakana

  1. plugin_dir_path( __FILE__ ) devuelve la ruta del directorio del sistema de archivos del servidor que apunta al archivo actual, es decir, algo similar a

/home/www/tu_sitio/wp-content/plugins/tu-plugin/includes/

Esto se puede usar para cargar archivos PHP.

más información : https://developer.wordpress.org/reference/functions/plugin_dir_path/

  1. complementos_url() devuelve la dirección web de la carpeta del complemento de la instalación actual de WordPress, es decir, algo similar a

http://ejemplo.com/wp-content/plugins

más información : https://codex.wordpress.org/Function_Reference/plugins_url

  1. plugin_dir_url() se comporta de manera muy similar a plugins_url(). También devuelve una dirección web, pero con una barra diagonal final, es decir, algo parecido a

http://ejemplo.com/wp-content/plugins/

Los dos últimos son útiles para cargar imágenes, hojas de estilo, JS.

más información : https://codex.wordpress.org/Function_Reference/plugin_dir_url

avatar de usuario
rosell.dk

Vamos a desentrañar lo que está sucediendo:

La función de wordpress es tan simple como esto:

function plugin_dir_path( $file ) {
    return trailingslashit( dirname( $file ) );
}

Asi que,

include plugin_dir_path(__FILE__) . 'xx.php';

Es igual a

include trailingslashit( dirname( __FILE__ ) ) . 'xx.php';

En PHP 5.3, __DIR__ fue introducido como reemplazo de dirname( __FILE__ ). Si no necesita admitir PHP

include trailingslashit( __DIR__ ) . 'xx.php';

(También vea esto: ¿Hay alguna diferencia entre __DIR__ y dirname (__FILE__) en PHP?)

Como __DIR__ no devuelve algo con una barra inclinada final, no hay necesidad de hacer lo mismo trailingslashit cosa. Entonces podemos reducir aún más a:

include __DIR__ . '/xx.php';

Entonces, para concluir, las siguientes líneas hacen exactamente lo mismo (en PHP> = 5.3):

include plugin_dir_path(__FILE__) . 'xx.php';
include trailingslashit( dirname( __FILE__ ) ) . 'xx.php';
include trailingslashit( __DIR__ ) . 'xx.php';
include __DIR__ . '/xx.php';

¿Cuál es el mejor? Prefiero el último. No tienes que escribir tanto, es menos ruidoso y no tienes que preocuparte por la magia que hay dentro. plugin_dir_path función. Y así es como sueles incluir archivos en PHP. Algunos sacerdotes pueden decir que deberías hacerlo a la manera de WordPress. ¡Sé un rebelde!

  • Puede definir una constante en su complemento principal/archivo de tema para que tenga el valor de __DIR__ y reutilice esa constante en otros lugares, para que pueda estar seguro de que sus inclusiones y requisitos siempre son relativos a la carpeta raíz del complemento/tema. Esto es útil, porque __DIR__ apuntará a una carpeta diferente en cada carpeta. Puede causar problemas si mueve sus archivos por algún motivo. Acabo de crear una const define( 'MYPLUGINNAME_BASEDIR', __DIR__ ); como primeras cosas, y reutilícelo en todas partes. Mi IDE (PHPStorm) también puede resolver esto correctamente, haciendo que las inspecciones de incluir/requerir sean útiles nuevamente.

    – sbnc.eu

    18 de enero de 2019 a las 15:15


¿Ha sido útil esta solución?