Si vous êtes freelance WordPress et que vous réalisez régulièrement des sites pour vos clients, vous avez certainement une liste de plugins que vous chouchoutez et que vous installez à chaque nouvelle création.
Cependant, cette redondance peut parfois devenir lassante et vous faire perdre du temps inutilement… Si c’est votre cas, alors vous êtes tombé au bon endroit car nous allons voir ensemble comment automatiser l’installation de vos plugins préférés grâce au TGM Plugin Activation.
Qu’est ce que le TGM Plugin Activation ?
Le TGM Plugin Activation a été créé et développé par Thomas Griffin, un expert WordPress, à qui on doit la création de OptinMonster et EnviraGallery entre autres… Grâce à ce plugin et quelques lignes de codes vous pourrez débuter l’installation puis l’activation de vos plugins préférés dès l’activation de votre Theme / Theme Premium ou Child Theme : c’est vous qui déciderez où l’implanter. Le but de cette fonctionnalité est de gagner un temps précieux lors de la création d’un nouveau site WordPress.
Comment ça marche ?
Le TGM Plugin Activation n’est pas un plugin disponible sur le répertoire des plugins de WordPress. Il va falloir passer par quelques étapes et mettre les mains dans le code pour pouvoir le faire fonctionner mais le résultat est tellement satisfaisant que ça en vaut la peine ! Pour ce tutoriel, j’implante le TGM Plugin Activation dans un Child Thème, voyons ensemble comment procéder…
Étape 1 : créer un thème enfant
Ce plugin va nécessiter l’écriture de code PHP dans le fichier functions.php. Si ce n’est pas vous qui créez votre thème WordPress et que vous utilisez un thème existant, il est fortement recommandé de passer par la création d’un thème enfant qui protègera ainsi vos modifications lors des mises à jour du thème parent. Si vous n’avez jamais créé de thème enfant, vous trouverez la marche à suivre dans cet article.
Étape 2 : télécharger TGM Plugin Activation
Après avoir créé votre thème enfant, il faudra télécharger le TGM Plugin Activation en vous rendant sur la page dédiée.
Pour cela, il faudra choisir une option d’utilisation (Theme / Child Theme / Plugin) puis remplir les trois champs (Text Domain / Function Prefix / Name) avant de cliquer sur Generate. Le téléchargement des fichiers de TGM Plugin Activation commencera alors et vous pourrez les récupérer dans le dossier de téléchargement de votre ordinateur.
Étape 3 : implanter le TGM Plugin Activation dans le thème enfant
Une fois téléchargé, vous devez décompresser le dossier zippé pour y extraire le fichier nommé class-tgm-plugin-activation.php
Ensuite il vous suffira de copier ce fichier dans le dossier de votre thème enfant, directement à la racine ou bien dans un sous dossier. Jusqu’ici, rien de bien sorcier !
Étape 4 : modifier le fichier functions.php du thème enfant
C’est dans le fichier functions.php que vous allez pouvoir enregistrer tous les plugins nécessaires à votre Child Theme via un éditeur de texte tel que SublimText par exemple. Et c’est également ici qu’il faudra manipuler le code… Avant de commencer les explications, voici à quoi votre fichier va ressembler :
- Dans un premier temps, il va falloir faire appel au fichier class-tgm-plugin-activation.php récemment ajouté dans votre thème enfant (étape 3) ; soit les lignes 10 à 14 de la capture d’écran ci-dessus. Pour rappel, toutes ces lignes seront à rajouter à la suite du code déjà présent dans votre fichier functions.php. Voici le code brut :
require_once dirname( __FILE__ ) . '/class-tgm-plugin-activation.php'; add_action( 'tgmpa_register', 'enregistrer_mes_plugins' );
- Dans un second temps, il va falloir déclarer une nouvelle fonction. Dans mon exemple, il s’agit de la fonction enregistrer_mes_plugins qui commence à la ligne 18 et qui se termine à la ligne 68 de ma capture d’écran. Voici le code brut ci-dessous :
function enregistrer_mes_plugins() { $plugins = array( // Exemple A : pour inclure un plugin pré-packagé dans un thème // Exemple B : pour inclure un plugin depuis un répertoire externe comme GITHUB // Exemple C : pour inclure un plugin disponible dans le répertoire des plugins de WP ); $theme_text_domain = 'twentyseventeen'; // Changer pour le text-domain du theme $config = array( 'domain' => $theme_text_domain, // Text domain - le même que celui de votre thème 'default_path' => '', // Chemin absolu par défaut pour les plugins pré-packagés 'menu' => 'install-my-theme-plugins', // Menu slug 'strings' => array( 'page_title' => __( 'Installer les plugins recommandés', $theme_text_domain ), // 'menu_title' => __( 'Installation des Plugins', $theme_text_domain ), // 'instructions_install' => __( 'Le plugin %1$s est recommandé pour ce thème. Cliquer sur le boutton pour installer et activer %1$s.', $theme_text_domain ), // %1$s = nom du plugin 'instructions_activate' => __( 'Le plugin %1$s est installé mais inactif. Aller à <a href="%2$s">la page d administration</a> pour son activation.', $theme_text_domain ), // %1$s = nom du plugin, %2$s = plugins page URL 'button' => __( 'Installer %s maintenant', $theme_text_domain ), // %1$s = nom du plugin 'installing' => __( 'Installation du Plugin: %s', $theme_text_domain ), // %1$s = nom du plugin 'oops' => __( 'Une erreur s est produite.', $theme_text_domain ), // 'notice_can_install' => __( 'Ce thème recommande le plugin %1$s. <a href="%2$s"><strong>Cliquer ici pour commencer son installation</strong></a>.', $theme_text_domain ), // %1$s = nom du plugin , %2$s = TGMPA page URL 'notice_cannot_install' => __( 'Désolé, vous ne détenez pas les permissions necessaires pour installer le plugin %1$s.', $theme_text_domain ), // %1$s = nom du plugin 'notice_can_activate' => __( 'Ce thème necessite le plugin %1$s. Actuellement inactif, vous devez vous rendre sur <a href="%2$s">la page d administration du plugin</a> pour l activer.', $theme_text_domain ), // %1$s = plugin name, %2$s = plugins page URL 'notice_cannot_activate' => __( 'Désolé, vous ne détenez pas les permissions necessaires pour activer le plugin %1$s.', $theme_text_domain ), // %1$s = nom du plugin 'return' => __( 'Retour à l installeur de plugins', $theme_text_domain ), ), ); tgmpa( $plugins, $config ); }
Jusque là, il faudra seulement copier et coller le code ci-dessus sans oublier de changer le theme_text_domain situé à la ligne 46 de ma capture d’écran. Pour mon exemple, j’ai renseigné ‘twentyseventeen’ car mon thème enfant est lié au thème Twenty Seventeen.
- Enfin, vous allez pouvoir enregistrer vos divers plugins. Dans mon exemple, l’enregistrement de mes plugins commence à la ligne 21 de ma capture d’écran pour se terminer à la ligne 43. Notez que pour chaque plugin il faudra construire un ARRAY (tableau) qui sera lui-même inclus dans un ARRAY comme vous pouvez le voir commencer à la ligne 20 pour se terminer à la ligne 44 de ma capture d’écran. L’appel de vos plugins dépendra et variera légèrement en fonction de la source d’origine de ceux-ci, trois cas de figures s’offrent alors à vous :
- Exemple A : Inclure un plugin “pré-packagé”
Il pourrait s’agir de plugins premiums dont vous détenez la licence adéquate pour être utilisés sur plusieurs sites. Dans mon exemple, il s’agit du plugin WP Rocket. Pour cela, il faudra inclure le dossier.zip de ce plugin dans le dossier de votre thème enfant : soit à la racine, soit dans un sous-dossier. Dans la ligne ‘source’, il faudra alors y indiquer le chemin relatif (comme dans la ligne 25 de la capture d’écran). Voici donc le code à ajouter :array( 'name' => 'WP Rocket', // Le nom du plugin 'slug' => 'wp-rocket_2.8.23', // Le slug du plugin (généralement le nom du dossier) 'source' => get_stylesheet_directory() . '/wp-rocket_2.8.23.zip', // le chemin relatif du plugin au format .zip 'required' => false, // FALSE signifie que le plugin est seulement recommandé ),
- Exemple B : Faire appel à un plugin dans une répertoire externe
Dans ce cas, il peut s’agir de plugins contenus dans une bibliothèque comme celle de GitHub. Pour mon exemple, je me suis servi du plugin d’exemple de Thomas Griffin. Dans la ligne source, il faudra renseigner l’URL du plugin (comme à la ligne 33 de la capture d’écran). Voilà comment l’importer :array( 'name' => 'TGM New Media Plugin', // Le nom du plugin. 'slug' => 'tgm-new-media-plugin', // Le slug du plugin (généralement le nom du dossier) 'source' => 'https://s3.amazonaws.com/tgm/tgm-new-media-plugin.zip', // La source du plugin 'required' => true, // TRUE signifie que le plugin est requis 'external_url' => 'https://github.com/thomasgriffin/New-Media-Image-Uploader', // Si défini, remplace l'URL de l'API par défaut et pointe vers une URL externe ),
- Exemple C : Importer un plugin disponible dans le répertoire officiel de WordPress
Il s’agit ici de tous les plugins présents dans le répertoire officiel des plugins de WordPress et que vous avez l’habitude d’installer manuellement en passant par l’onglet EXTENSIONS > AJOUTER. Pour mon exemple, j’ai pris l’extension MailPoet. Attention, quelquefois le ‘slug’ est différent du ‘name’. Voici comment je l’ai inclus dans mon Child Theme :array( 'name' => 'MailPoet', // Le nom du plugin 'slug' => 'wysija-newsletters', // Le slug du plugin (généralement le nom du dossier) 'required' => false, // FALSE signifie que le plugin est seulement recommandé ),
Étape 5 : passer dans l’administration de votre site WordPress
Voilà, le plus “difficile” étant fait, vous pourrez alors envoyer, via FTP, votre thème enfant complet dans le dossier wp-content > themes chez votre hébergeur. Dès lors, vous pourrez aller dans l’administration de votre site pour activer votre thème enfant via l’onglet Apparence > Thèmes.
Dès l’activation du thème, un encart informatif va apparaître en haut de la fenêtre qui listera les plugins requis et recommandés en fonction de ce que vous aurez paramétré dans votre fichier functions.php. Pour commencer l’installation, vous n’aurez plus qu’à cliquer sur Begin Installing Plugins qui vous mènera à la page d’installation des plugins.
En toute simplicité, vous pourrez alors installer les divers plugins en les cochant puis en positionnant le menu déroulant sur Install et en finissant par Appliquer. Cliquez sur Retour à l’Installeur de Plugins pour effectuer la même opération afin d’activer toutes les extensions simultanément. À présent, si vous faites un petit tour du côté de l’onglet Extensions > Extension Installées vous verrez alors que tous vos plugins sont présents et fonctionnels… Comme par magie !
En conclusion…
Ce TGM Plugin Activation est très pratique voire précieux pour les développeurs de thèmes premiums qui embarquent généralement tout un tas de plugins requis et/ou recommandés avec leur thème. Vous imaginez acheter un thème premium qui vous fournirez une simple liste de plugins à installer manuellement ? Non ! Maintenant que vous connaissez cette astuce, vous pourrez concocter votre propre Child Thème qui embarque tous les plugins que vous jugerez utiles. Vous n’aurez qu’à cliquer pour installer et activer le tout : moins d’efforts pour plus de productivité… Yeah !
Pour aller (encore) plus loin :
- voir les fichiers de TGMPA sur GitHub
- voir les explications de Thomas Griffin sur son blog
- découvrir le TGM Batch Update Plugin de Thomas Griffin
dans ce cas, il ne serait pas plus simple de passer par un multisite?, solution moins complexe.
Bonsoir @eric , la procédure paraît complexe car elle est très détaillée … en réalité, 10 minutes suffisent pour mettre en place cela. Le plus long est de répertorier tous les plugins, ensuite votre child thème peut être réutilisé, d’où le gain de temps…
Bonjour @lycia , je suis hyper intéressé par cette extension sauf que malgré vos indications, la doc officielle.. je n’arrive pas à faire apparaître l’encart lors de l’activation de mon thème enfant. Je n’ai aucune erreur, j’ai testé avec leur exemple, je sais vraiment plus quoi tenter..
Avez-vous une piste sur laquelle je peux vérifier ce que j’ai fais ? Merci :-)
Bonjour @morgn … Je ne vois pas pourquoi la fenêtre n’appaitrait pas… Avez-vous réessayé l’étape 2 et 3 ? Si vous suivez à la lettre cela devrait fonctionner. Votre thème enfant fonctionnait-il déjà avant le TGMA ? Où l’avez-vous créé pour l’occasion ? Petite précision : c’est à l’activation de votre thème enfant que la fenêtre doit apparaître… Essayez de nouveau et tenez nous au courant ! Bon WE !