Come ottenere il nome del plugin corrente?

27 apr 2015, 12:36:05
Visualizzazioni: 17.1K
Voti: 1

Ho bisogno di ottenere il nome del plugin corrente utilizzando un define come questo

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

Sfortunatamente, quel codice non funziona perché il file php è nidificato all'interno di una sottocartella (includes) della mia directory del plugin e restituisce

my-plugin/includes 

Esiste qualche funzione dell'API di WordPress per raggiungere questo obiettivo? Grazie in anticipo.

7
Commenti

define(PLUGIN_NAME, "MY PLUGIN NAME"); è sufficiente. Perché hai bisogno di qualcosa di dinamico che non è affatto dinamico.

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

perché suppongo che l'utente possa installare il plugin in una directory a sua scelta.

Tetrahedronix Tetrahedronix
27 apr 2015 12:54:45

I plugin possono essere installati solo nella cartella mu o nella cartella plugins e non possono andare in sottodirectory, quindi non hai nulla di cui preoccuparti.

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

Intendo dire che l'utente potrebbe installare il plugin nella cartella plugins/theplugins invece che plugins/myplugin

Tetrahedronix Tetrahedronix
27 apr 2015 13:23:50

Non capisco il tuo problema. Rileggi il mio commento precedente.

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

Se un utente aggiunge intenzionalmente un plugin in una cartella errata, è un problema suo. Non dovrebbe essere un tuo problema.

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

Dovresti inserire la define nel tuo file principale del plugin myplugin/myplugin.php

TheDeadMedic TheDeadMedic
27 apr 2015 14:11:55
Mostra i restanti 2 commenti
Tutte le risposte alla domanda 3
3
13

Nel file PHP principale del plugin:

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

Questo funziona solo in admin, comunque

Jacob Raccuia Jacob Raccuia
16 gen 2018 16:38:22

Mi piace questo, ma quando eseguo l'output di tutte le chiavi e i valori dell'array associativo, solo TextDomain restituisce un valore: PluginURI = Version = Description = Author = AuthorURI = TextDomain = my-calculator DomainPath = Network = Title = AuthorName =

... come posso impostare/recuperare tutti gli altri valori per #plugin_data ?

TARKUS TARKUS
15 apr 2018 15:51:44

Assicurati che il commento principale nel tuo file plugin contenga i dati rilevanti come da https://codex.wordpress.org/File_Header

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

puoi ottenere il nome del plugin in una sottocartella del tuo plugin con questo snippet di codice:

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

devi solo specificare il livello della sottocartella relativo alla cartella del plugin nel secondo parametro della funzione dirname().

1 apr 2018 11:35:29
1

Questo ti darà il nome della cartella del plugin indipendentemente da dove si trova il file e senza dover conoscere nulla sulla struttura delle directory del plugin.

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

Per una spiegazione dettagliata di cosa sta accadendo

// Ottieni il percorso relativo al file corrente dalla root del plugin
$file_path_from_plugin_root = str_replace(WP_PLUGIN_DIR . '/', '', __DIR__);

// Suddividi il percorso in un array
$path_array = explode('/', $file_path_from_plugin_root);

// La cartella del plugin è il primo elemento
$plugin_folder_name = reset($path_array);
18 ago 2021 15:44:39
Commenti

La singola riga causa la generazione di un avviso "Notice: Only variables should be passed by reference" quindi utilizzo la versione più lunga.

popnoodles popnoodles
21 dic 2021 18:45:19