web-dev-qa-db-fra.com

Comment obtenir tous les plugins et leurs numéros de version à partir des fichiers locaux?

J'écris actuellement un script qui s'exécute sur un serveur et qui est supposé obtenir des informations sur a) la version de WordPress b) les plugins c) les versions du plugin.

Le numéro de version de WordPress ne pose pas de problème, mais je ne sais pas comment obtenir de manière fiable les informations de plug-in requises. J'ai localisé le dossier du plugin (wp-content/plugins). Ce dossier contient-il tous les plugins?

Même si c'est le cas, je ne sais pas s'il existe une structure fixe pour obtenir a) le nom officiel b) le numéro de version officiel de tous les plugins.

Par exemple, un plug-in que j'ai vérifié avait le numéro de version dans un fichier .php avec une annotation @version, mais la version du second plug-in que j'ai vérifié faisait uniquement partie des commentaires (Version = 2.66 ou quelque chose comme cela).

Existe-t-il un moyen fiable d'obtenir ces informations sans utiliser PHP (car le script que j'écris n'est pas limité à WordPress et doit être exécuté sur des serveurs sans PHP)? Quelque chose comme une structure commune ou un fichier central avec les informations collectées sur les plugins?

1
R.G.

La mauvaise nouvelle WP ne suit pas ces informations de manière persistante. Il ne conserve que la représentation technique des plugins actifs pour les charger. Le reste n'est recherché que dans des contextes spécifiques (tels que le panneau d'administration de la gestion des plug-ins), car les ressources sont relativement lourdes.

La bonne nouvelle est que vous pouvez certainement reconstruire cette fonctionnalité dans un programme arbitraire. La version canonique du plug-in WP est contenue dans son en-tête de fichier sous la forme d'un commentaire PHP. Malheureusement, ce format n'est pas trop convivial.

Vous pouvez demander à votre script de rechercher des en-têtes, en gardant à l'esprit plusieurs particularités:

  1. La version n'est pas obligatoire et peut être totalement absente.
  2. Le dossier Plugins peut être ou ne pas être à l'emplacement par défaut (il est personnalisable).
  3. Les plugins peuvent être ou ne pas être dans un sous-dossier (ils peuvent être directement dans le dossier plugins).
  4. Il peut y avoir plusieurs plugins dans un seul sous-dossier.
1
Rarst

Vous pouvez regarder dans la source pour voir comment WordPress le fait. Commencez par get_plugins , qui utilise get_plugin_data qui utilise get_file_data pour lire l'en-tête.

1
Milo