Installer des dépendances privées dans Composer (WordPress)

Si vous développez sur WordPress avec Bedrock (roots.io) alors vous gérez normalement vos plugins avec Composer. La plupart des extensions WordPress sont disponibles sur wpackagist, c’est un packagist à l’instar de celui de PHP spécifique à WordPress, avec tout les plugins et thèmes disponibles.

Une extension s’ajouter à la racine de votre projet comme ceci :

$ composer require wpackagist-plugin/<slug-extension>

Pour trouver le slug correspondant à l’extension que vous souhaitez ajouter, rendez-vous sur le répertoire officiel des plugins WordPress, choisissez une extension et vous observerez dans l’Url l’information désirée.

Par exemple, pour Wordfence : https://fr.wordpress.org/plugins/wordfence/, son nom est wordfence.

Et si je ne trouve pas mon extension ?

À mes débuts sur WordPress + Bedrock et la gestion des dépendances avec Composer, il arrivait parfois que certaines extensions ne soient pas disponibles sur wpackagist, alors il fallait les héberger dans des repos sur github par exemple. Cela fonctionnait mais adieu aux mises à jour sauf en les faisant soi même.

Voici une solution pour embarquer ACF Pro dans votre installation de manière simple dans votre composer.json :

{
  "type": "package",
  "package": {
    "name": "advanced-custom-fields/advanced-custom-fields-pro",
    "version": "REPLACE_WITH_LATEST_ACF_VERSION",
    "type": "wordpress-plugin",
    "dist": {
      "type": "zip",
      "url": "https://connect.advancedcustomfields.com/index.php?a=download&p=pro&k={%PLUGIN_ACF_KEY}&t={%VERSION}"
    },
    "require": {
      "composer/installers": "^1.4",
      "ffraenz/private-composer-installer": "^5.0"
    }
  }
}

Puisqu’il s’agit de la version Pro, le téléchargement depuis le site de l’éditeur requiert une clé que nous allons renseigner dans une variable d’environnement.

Dans votre .env :

PLUGIN_ACF_KEY=VOTRE_CLE_ACF

Enregistrez et lancez dans votre terminal de commandes à la racine du projet la commande suivante :

$ composer require "advanced-custom-fields/advanced-custom-fields-pro:*"

Et voilà. Plus d’informations sur le plugin Composer utilisé : ffraenz/private-composer-installer