Cómo obtener el directorio de plugins actual en WordPress?


Necesito obtener el directorio actual del plugin como

[wordpress_install_dir]/wp-content/plugins/plugin_name

(si getcwd() se llama desde el plugin, devuelve [wordpress_install_dir], la raíz de la instalación)

Gracias por la ayuda

Author: Volker E., 2010-06-28

9 answers

Mirando tu propia respuesta @ Bog, creo que quieres;

$plugin_dir_path = dirname(__FILE__);
 32
Author: TheDeadMedic,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-06-28 08:54:37

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

<?php plugin_dir_path( __FILE__ ); ?>

Véase la documentación del Codex aquí.

Usted también tiene

<?php plugin_dir_url( __FILE__ ); ?>

Si lo que está buscando es un URI en lugar de una ruta de servidor.

Véase la documentación del Codex aquí.

IMO siempre es mejor usar el método de más alto nivel que está disponible en core, y esto es todo. Hace que su código sea más a prueba de futuro.

 65
Author: Tom Auger,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-06-10 02:27:01

Esto realmente obtendrá el resultado que desea:

<?php plugin_dir_url(__FILE__); ?>

Http://codex.wordpress.org/Function_Reference/plugin_dir_url

 14
Author: brenjt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-02-21 03:28:50

Para obtener el directorio del plugin puedes usar la función de Wordpress plugin_basename($file). Por lo que se utiliza es como sigue para extraer la carpeta y el nombre de archivo del plugin:

$plugin_directory = plugin_basename(__FILE__); 

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

Lea más al respecto en el códice de Wordpress.

 7
Author: stefanglase,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:02:27
$full_path = WP_PLUGIN_URL . '/'. str_replace( basename( __FILE__ ), "", plugin_basename(__FILE__) );
  • WP_PLUGIN_URL-la url del directorio de plugins
  • WP_PLUGIN_DIR-la ruta del servidor al directorio de plugins

Este enlace puede ayudar: http://codex.wordpress.org/Determining_Plugin_and_Content_Directories .

 3
Author: manish nautiyal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-01-25 18:59:56

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;
    }

Echo PluginUrl(); devolverá la url del plugin actual.

 2
Author: Pennywise83,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-07-01 00:47:31

Desde WP 2.6.0 puede utilizar plugins_url() método.

 1
Author: Idham Perdameian,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-05-03 09:52:38

Cuando necesito obtener el directorio, no solo para los plugins (plugin_dir_path), sino uno más genérico, puede usar __DIR__, que le dará la ruta del directorio del archivo donde se llama. Ahora se puede utilizar desde funciones.php u otro archivo!

Descripción:

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

 1
Author: Francisco Corrales Morales,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-09-10 23:33:20

Si desea obtener la ruta del directorio actual dentro de un archivo para eso, puede hacer magia con las constantes __FILE__ y __DIR__ con la función plugin_dir_path() como:

$dir_path = plugin_dir_path( __FILE__ );

CurrentDirectory Path:

/home/user/var/www/wordpress_site/wp-content/plugins/custom-plugin/

__FILE__ la constante mágica devuelve la ruta del directorio actual.

Si desea subir un nivel desde el directorio actual. Debes usar __DIR__ la constante mágica como:

Ruta actual:

/home/user/var/www/wordpress_site/wp-content/plugins/custom-plugin/

$dir = plugin_dir_path( __DIR__ );

Un camino de subida de nivel:

 /home/user/var/www/wordpress_site/wp-content/plugins/

__DIR__ la constante mágica devuelve una ruta de directorio de nivel superior.

 0
Author: Gufran Hasan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-04-24 06:04:21