Voglio ottenere un numero di versione del plug-in in modo dinamico


10

Salve, ho recentemente paralizzato W3TC per implementare un display di elenco modifiche "in aggiornamento" (molto interessante), nel mio plugin , ma c'è un po 'di codice scomodo che preferirei evitare.

Se guardi all'inizio di questo file , vedrai il seguente codice:

define ( 'BMLT_CURRENT_VERSION', '2.1.16' ); // This needs to be kept in synch with the version above.

Ick. : P

Questo deve essere tenuto aggiornato, quindi la funzione può delta tra il tuo plugin e l'attuale versione stabile.

Ho esaminato il Codice, e non riesco a trovarlo, ma DEVE esserci una funzione API per ottenere la versione di un plugin.

Qualche indizio?

Risposte:



14

Esiste una funzione chiamata get_plugin_data () . Prova a chiamarlo dal file del plug-in principale se devi:

$plugin_data = get_plugin_data( __FILE__ );
$plugin_version = $plugin_data['Version'];

Ma come si dice nelle risposte all'altra domanda, è meglio che le prestazioni definiscano semplicemente una variabile PHP mentre si sta facendo.


Grazie! Si spera che le prestazioni non siano un grosso problema, poiché vengono chiamate solo una volta e comportano una chiamata a ricciolo. Ho appena avuto problemi da avere più copie del numero di versione in tutto il luogo.
Chris Marshall,

1
non sembra funzionare. Ricevo questo avviso Call to undefined function get_plugin_data().
Ari,

@AriSusanto Stai provando a usarlo sul front-end? Le funzioni di amministrazione del plugin WP sono definite solo nella sezione admin. Se è necessario utilizzarlo sul front-end, è necessario includere il file wp-admin/includes/plugin.php.
goldenapples,

No, lo uso sul pannello di amministrazione.
Ari,

Se si verifica l'errore non definito, è possibile utilizzare la funzione get_plugin_data. Per la prestazione, ho aggiunto un commento qui: wordpress.stackexchange.com/questions/361/…
baptx

9

Un'alternativa a get_plugin_data()è get_file_data () che è disponibile senza l'overhead del caricamento di file aggiuntivi.

Aggiungilo semplicemente al tuo file plugin principale:

$plugin_data = get_file_data(__FILE__, array('Version' => 'Version'), false);
$plugin_version = $plugin_data['Version'];

Sotto il cofano get_file_dataalcune scansioni di mannaie sono abbastanza performanti.

E se necessario definisci la tua costante:

define ( 'YOURPLUGIN_CURRENT_VERSION', $plugin_version );

Immagino per le prestazioni è anche meglio scrivere il numero di versione manualmente? (come spiegato qui: wordpress.stackexchange.com/questions/361/… )
baptx

@baptx sì, tuttavia, questa ottimizzazione sarebbe trascurabile considerando tutto ciò che Wordpress fa su ogni richiesta. In altre parole, non importa
paulcol.

1

Una possibile soluzione può essere regex:

$plugin_version = NULL;
if(preg_match('/\*[\s\t]+?version:[\s\t]+?([0-9.]+)/i',file_get_contents( __FILE__ ), $v))
    $plugin_version = $v[1];

Devo dire che questo regex è un po 'più veloce di get_file_data()ma in generale non lo noterai.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.