web-dev-qa-db-fra.com

Je veux obtenir un numéro de version de plugin dynamiquement

Bonjour, j'ai récemment demandé au W3TC d'implémenter un affichage de la liste des modifications "en cours de mise à jour" (très cool) dans mon plugin , mais je préférerais éviter un peu de code compliqué.

Si vous regardez en haut de ce fichier , vous verrez le code suivant:

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

Ick. : P

Cela doit être tenu à jour, pour que la fonction puisse se situer entre votre plugin et la version stable actuelle.

J'ai parcouru le Codex et je ne le trouve pas, mais il y aGOTune fonction API permettant d'obtenir la version d'un plugin.

Des indices?

9
Chris Marshall

Voici une réponse avec du code qui fera ce que vous voulez: Y a-t-il un moyen pour un plug-in d'obtenir son propre numéro de version?

3
Matthew Muro

Il existe une fonction appelée get_plugin_data () . Essayez d’appeler cela depuis le fichier de plugin principal si vous avez besoin de:

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

Mais comme il est dit dans les réponses à l’autre question, il est préférable que les performances définissent simplement une variable PHP comme vous le faites.

13
goldenapples

Une alternative à get_plugin_data() est get_file_data () qui est disponible sans la surcharge du chargement de fichiers supplémentaires.

Ajoutez simplement ceci à votre fichier de plugin principal:

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

Sous le capot, get_file_data effectue des analyses de couperet très performantes.

Et si nécessaire définissez votre constante:

define ( 'YOURPLUGIN_CURRENT_VERSION', $plugin_version );
8
paulcol.

Une solution possible peut être regex:

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

Il faut mentionner que cette expression rationnelle est un peu plus rapide que get_file_data() mais en général, vous ne le remarquerez pas.

1