Cómo obtener el nombre del plugin actual

27 abr 2015, 12:36:05
Vistas: 17.1K
Votos: 1

Necesito obtener el nombre del plugin actual usando un define como este

define(PLUGIN_NAME, plugin_basename(dirname(__FILE__)));

Lamentablemente, ese código no funciona porque el archivo php está dentro de un subdirectorio (includes) de mi directorio de plugin y devuelve

my-plugin/includes 

¿Existe alguna función en la API de WordPress para lograr esta tarea? Gracias de antemano.

7
Comentarios

define(PLUGIN_NAME, "MI NOMBRE DE PLUGIN"); es suficiente. ¿Por qué necesitas algo dinámico que no es dinámico en absoluto?

Mayeenul Islam Mayeenul Islam
27 abr 2015 12:45:51

porque supongo que el usuario podría instalar el plugin en un directorio de su elección.

Tetrahedronix Tetrahedronix
27 abr 2015 12:54:45

Los plugins solo pueden instalarse en la carpeta mu o en la carpeta de plugins y no pueden ir en subdirectorios, así que no tienes nada de qué preocuparte.

Pieter Goosen Pieter Goosen
27 abr 2015 13:14:47

Me refiero a que el usuario podría instalar el plugin en plugins/theplugins en lugar de plugins/myplugin

Tetrahedronix Tetrahedronix
27 abr 2015 13:23:50

No entiendo tu problema. Vuelve a leer mi comentario anterior.

Pieter Goosen Pieter Goosen
27 abr 2015 13:26:14

Si un usuario instala intencionalmente un plugin en una carpeta incorrecta, es problema suyo. No debería ser tu problema.

Pieter Goosen Pieter Goosen
27 abr 2015 13:28:22

Debes colocar el define en el archivo principal de tu plugin myplugin/myplugin.php

TheDeadMedic TheDeadMedic
27 abr 2015 14:11:55
Mostrar los 2 comentarios restantes
Todas las respuestas a la pregunta 3
3
13

Dentro del archivo PHP principal del plugin:

$plugin_data = get_plugin_data( __FILE__ );
$plugin_name = $plugin_data['Name'];
16 sept 2016 12:53:50
Comentarios

Por cierto, esto solo funciona en el área de administración

Jacob Raccuia Jacob Raccuia
16 ene 2018 16:38:22

Me gusta esto, pero cuando muestro todas las claves y valores del array asociativo, solo TextDomain devuelve un valor: PluginURI = Version = Description = Author = AuthorURI = TextDomain = my-calculator DomainPath = Network = Title = AuthorName =

... ¿cómo puedo establecer/obtener todos los demás valores para #plugin_data?

TARKUS TARKUS
15 abr 2018 15:51:44

Asegúrate de que el comentario principal en tu archivo de plugin contenga los datos relevantes según https://codex.wordpress.org/File_Header

Mark Howells-Mead Mark Howells-Mead
16 abr 2018 20:35:34
0

Puedes obtener el nombre del plugin en un subdirectorio de tu plugin con este fragmento de código:

$plugin = basename( plugin_dir_path(  dirname( __FILE__ , 2 ) ) );

Solo debes escribir el nivel del subdirectorio relativo a la carpeta del plugin en el segundo parámetro de la función dirname().

1 abr 2018 11:35:29
1

Esto te dará el nombre de la carpeta del plugin sin importar dónde se encuentre el archivo y sin necesidad de conocer la estructura de directorios del plugin.

$plugin_folder_name = reset(explode('/', str_replace(WP_PLUGIN_DIR . '/', '', __DIR__)));

Para entender paso a paso lo que está ocurriendo:

// Obtiene la ruta relativa al archivo actual desde la raíz del plugin
$file_path_from_plugin_root = str_replace(WP_PLUGIN_DIR . '/', '', __DIR__);

// Divide la ruta en un array
$path_array = explode('/', $file_path_from_plugin_root);

// La carpeta del plugin es el primer elemento
$plugin_folder_name = reset($path_array);
18 ago 2021 15:44:39
Comentarios

La línea única provoca que se muestre un aviso "Notice: Only variables should be passed by reference" (Aviso: Solo se deben pasar variables por referencia), por lo que utilizo la versión más larga.

popnoodles popnoodles
21 dic 2021 18:45:19