Come Ottenere Dinamicamente il Numero di Versione di un Plugin
Salve, di recente ho preso spunto da W3TC per implementare una visualizzazione della lista dei cambiamenti "durante l'aggiornamento" (molto interessante) nel mio plugin, ma c'è un pezzo di codice scomodo che preferirei evitare.
Se guardi all'inizio di questo file, vedrai il seguente codice:
define ( 'BMLT_CURRENT_VERSION', '2.1.16' ); // Questo deve essere mantenuto sincronizzato con la versione sopra.
Bleah. :P
Questo deve essere mantenuto aggiornato, in modo che la funzione possa confrontare la differenza tra il tuo plugin e la versione stabile corrente.
Ho esaminato il Codex e non l'ho trovato, ma ci DEVE essere una funzione API per ottenere la versione di un plugin.
Qualche suggerimento?
Esiste una funzione chiamata get_plugin_data(). Prova a chiamarla dal file principale del plugin se ne hai bisogno:
$plugin_data = get_plugin_data( __FILE__ );
$plugin_version = $plugin_data['Version'];
Ma come detto nelle risposte alle altre domande, è meglio per le prestazioni definire semplicemente una variabile PHP come stai facendo.

Grazie! Spero che le prestazioni non siano un grosso problema, visto che viene chiamato solo una volta e coinvolge una chiamata curl. Mi sono appena trovato nei guai per avere multiple copie del numero di versione sparse ovunque.

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

@AriSusanto Stai provando a usarlo sul front end? Le funzioni di amministrazione dei plugin di WP sono definite solo nella sezione admin. Se hai bisogno di usarlo sul front end dovrai includere il file wp-admin/includes/plugin.php
.

Se hai l'errore "undefined", puoi usare la funzione get_plugin_data. Per quanto riguarda le prestazioni, ho aggiunto un commento qui: https://wordpress.stackexchange.com/questions/361/is-there-a-way-for-a-plug-in-to-get-its-own-version-number/371#comment430477_367

Un'alternativa a get_plugin_data()
è la funzione get_file_data() che è disponibile senza il sovraccarico di caricare file aggiuntivi.
Basta aggiungere questo nel tuo file principale del plugin:
$plugin_data = get_file_data(__FILE__, array('Version' => 'Version'), false);
$plugin_version = $plugin_data['Version'];
Internamente get_file_data
esegue una scansione intelligente per essere molto performante.
E se necessario definisci la tua costante:
define ( 'YOURPLUGIN_CURRENT_VERSION', $plugin_version );

Immagino che per le prestazioni sia anche meglio scrivere manualmente il numero di versione? (come spiegato qui: https://wordpress.stackexchange.com/questions/361/is-there-a-way-for-a-plug-in-to-get-its-own-version-number/367#367)

Ecco una risposta con del codice che farà ciò che desideri: Esiste un modo per un plugin di ottenere il proprio numero di versione?

Proprio come la funzione wp_get_theme()
, esiste la funzione get_plugin_data()
che restituisce i dati del plugin come nome, versione, descrizione, autore, ecc...
Prima di chiamare la funzione, assicurati che sia disponibile, altrimenti riceverai l'errore 'call to undefined function'.
if( ! function_exists('get_plugin_data') ){
require_once( ABSPATH . 'wp-admin/includes/plugin.php' );
}
$plugin_data = get_plugin_data( __FILE__, false );
define( 'BMLT_NAME', ($plugin_data && $plugin_data['Name']) ? $plugin_data['Name'] : 'Nome Plugin' );
define( 'BMLT_CURRENT_VERSION', ($plugin_data && $plugin_data['Version']) ? $plugin_data['Version'] : '1.0.0' );

Una possibile soluzione può essere l'uso di regex:
$plugin_version = NULL;
if(preg_match('/\*[\s\t]+?version:[\s\t]+?([0-9.]+)/i',file_get_contents( __FILE__ ), $v))
$plugin_version = $v[1];
È importante menzionare che questa regex è leggermente più veloce di get_file_data()
ma in generale non si noterà la differenza.

Puoi definire una costante nel file php principale del tuo plugin.
define ('MY_PLUGIN_VERSION', '1.0');
Poi se vuoi visualizzare la versione nelle pagine successive all'interno della cartella del tuo plugin, usa semplicemente:
<?php echo('MY_PLUGIN_VERSION'); ?>
Non dimenticare di sostituire 'MY_PLUGIN' con il nome effettivo del tuo plugin
