2010-06-27 34 views

Respuesta

32

Mirando tu propia respuesta @Bog, creo que quieres;

$plugin_dir_path = dirname(__FILE__); 
+11

En PHP 5.3 puede usar la nueva constante '__DIR__', que logra lo mismo. – dave1010

+2

Estás casi allí. Diablos, incluso has nombrado la variable igual que la función incorporada de WordPress que hace lo que quieres. Asegure su código a prueba del futuro mediante el uso de la función recomendada de WordPress para hacer lo que desee. Ver mi respuesta –

+0

@TomAuger 'plugin_dir_path ($ file)' es simplemente un contenedor para 'trailingslashit (dirname ($ file))' - Yo diría que no es más "a prueba de futuro" que el mío; la única diferencia es una barra final. – TheDeadMedic

7

Para obtener el plugin directorio puede usar la función Wordpress plugin_basename($file). Así que utilizaría es el siguiente para extraer la carpeta y nombre de archivo del plugin:

$plugin_directory = plugin_basename(__FILE__); 

Puede combinar esto con la dirección URL o la ruta del servidor del directorio de plugins. Por lo tanto, puede usar las constantes WP_PLUGIN_URL para obtener el directorio de plugins url o WP_PLUGIN_DIR para obtener la ruta del servidor. Pero como se menciona en el comentario Mark Jaquith, esto solo funciona si los complementos residen en el directorio de plugins de Wordpress.

Lea más sobre esto en el Wordpress codex.

+0

esta no es la respuesta – bog

+3

No utilice '' WP_PLUGIN_URL' o WP_PLUGIN_DIR' - plugins pueden no encontrarse en el directorio de plugins. –

+0

Gracias, lo agregué a mi respuesta. – stefanglase

2

Prueba esto:

function PluginUrl() { 

     //Try to use WP API if possible, introduced in WP 2.6 
     if (function_exists('plugins_url')) return trailingslashit(plugins_url(basename(dirname(__FILE__)))); 

     //Try to find manually... can't work if wp-content was renamed or is redirected 
     $path = dirname(__FILE__); 
     $path = str_replace("\\","/",$path); 
     $path = trailingslashit(get_bloginfo('wpurl')) . trailingslashit(substr($path,strpos($path,"wp-content/"))); 
     return $path; 
    } 

eco pluginurl(); devolverá la URL del complemento actual.

60

¿Por qué no utilizar la función central de WordPress que está diseñada específicamente para ese fin?

<?php plugin_dir_path(__FILE__); ?> 

Consulte la documentación del Codex here.

También tienen

<?php plugin_dir_url(__FILE__); ?> 

si lo que estás buscando es un URI en contraposición a una ruta del servidor.

Consulte la documentación del Codex here.

IMO siempre es mejor utilizar el método de nivel más alto que está disponible en el núcleo, y esto es todo. Hace que tu código sea más a prueba de futuro.

+4

Además, si intenta acceder a un recurso en una ubicación relativa al directorio de ese complemento, use 'plugins_url ('images/image_inside_plugin_folder.png', __FILE__)' –

+3

Esta es la respuesta correcta.WP_PLUGIN_URL no funcionará si el complemento se está utilizando como un complemento MU (debe usar), mientras que plugin_dir_path() y plugin_dir_url() lo harán. – Andy

+0

Gracias por pasar el documento de Codex. Encontré que __FILE__ hizo el truco para mí. – Ian

1

Desde WP 2.6.0 puede usar el método plugins_url().

+0

Esto devuelve una URL y no una ruta del sistema de archivos. – Flimm

+0

@Flimm, mediante un pequeño truco, puede obtener la ruta completa del sistema de archivos del complemento: 'str_replace (site_url ('/'), ABSPATH, plugins_url());' –

1

Cuando necesito para obtener el directorio, no sólo para los plugins (plugin_dir_path), pero una más genérica, puede utilizar __DIR__, se le dará la ruta del directorio del archivo en el que se llama. ¡Ahora puede usar desde functions.php u otro archivo!

Descripción:

El directorio del archivo. Si se usa dentro de un include, se devuelve el directorio de . Esto es equivalente a dirname (__FILE__). Este nombre de directorio no tiene una barra diagonal a menos que sea el directorio raíz. 1

Cuestiones relacionadas