Découvrons aujourd’hui comment se servir des bases de données pour obtenir rapidement une liste complète de fichiers ou ressources utilisées au sein d’un site web WordPress, dans le but de les sauvegarder plus efficacement.
Contexte
Dans cette étude de cas, nous avons un site web WordPress où sont présentés des Podcats. Certains Podcast sont vidéos, d’autres sont audios, et la plupart sont hybrides. La plupart des podcasts audios étaient hébergés sur SoundCloud.
Mais voilà, on souhaite se départir de SoundCloud et aller vers d’autres solutions. Cependant, on veut sauvegarder l’ensemble des épisodes déjà publiés, étant donné que les fichiers hébergés sur SoundCloud ne seront plus accessibles après l’annulation de l’abonnement.
Enjeux
Nous avons plus de 300 épisodes à archiver. Une méthode aurait pu consister à se rendre dans chaque épisode, en copier le lien vers l’épisode SoundCloud, puis l’archiver manuellement. Mais avec plus de 300 épisodes à couvrir, ce n’est probablement pas une bonne idée.
Si les épisodes étaient conservés localement sur WordPress, au sein de la médiathèque, et si en plus la médiathèque n’était pas organisée en dossiers et sous-dossiers annuels/mensuels, une autre alternative aurait tout simplement été d’accéder par la gestion des fichiers au dossier wp-content/uploads (par FTP ou autre moyen), puis procéder à l’archivage. Mais dans notre cas, comme pour la plupart des sites WordPress, la médiathèque est extrêmement hiérarchisée. De plus, les audios de SoundCloud ne sont même pas hébergés en local.
Démarche
Heureusement, dans WordPress, toute forme de contenu ou presque est référencée dans la base de données. L’objectif est doc de se servir de la base de données de notre site WordPress afin d’en extraire toutes les instances relatives aux types de fichiers que nous recherchons. Une fois cette information trouvée, il nous suffira de l’exploiter pour automatiser, ou tout au moins simplifier le processus d’archivage.
Pré-requis
Ces manipulations vont nécessiter d’accéder et intervenir au sein de la base de données. Bien que cette opération ne soit pas compliquée, toute fausse manœuvre pourrait compromettre la stabilité du système et rendre le site web inutilisable.
Pour mener à bien les opérations, il faudrait :
- avoir accès à l’outil PHPMyAdmin liée à votre site web;
- connaître le nom de la base de données qui alimente votre site web. Ceci pourrait être un enjeu chez les personnes qui hébergenbt plusieurs sites web et dont le processus de création des bases de données est automatisé;
- disposer d’un outil de téléchargement capable de récupérer la liste des cibles à télécharger depuis un fichier. Si vous travaillez avec Linux, cela ne devrait pas être un souci.
Comment Automatiser le Téléchargement de Ressources de WordPress grâce à PHPMyAdmin et Wget (ou équivalents)
- Accéder à la base de données connectée au site web WordPress grâce à PHPMyAdmin ou tout autre outil équivalent;
- Se rendre dans la zone Rechercher;
- Inscrire le terme ou la séquence de caractères qui seront communs à tous les fichiers recherchés. Pour plus d’efficacité, utiliser la structure
%[TermeRecherché]%
- S’assurer que dans la zone Tables, toutes les tables sont sélectionnées. Cela permettra de rechercher le terme indiqué partout au sein de la base de données;
- Cliquer sur Exécuter;
- Examiner les résultats de recherche et consulter au besoin les tables ayant des correspondances;
- Lorsque la bonne table a été identifiée, afficher tous les résultats, puis les exporter vers un format facile à utiliser. Dans notre cas, nous utiliserons le format OpenDocument Spreadsheet, lequel permet de visualiser les résultats au sein d’un tableur de type Microsoft Excel ou LibreOffice Calc;
- Ouvrir le fichier dans un tableur et en utiliser les capacités pour isoler les enregistrements pertinents;
- Si certains champs necessitent une reconfiguration ou un traitement spécifique, le faire;
- Extraire la liste des URLS vers un fichier Texte;
- Se servir de Wget dans un terminal pour télécharger l’ensemble des URLS du fichier généré plus tôt. La commande sera donc de la forme :
wget -i [NomDuFichierTexte]
Questions & Réponses
L’automatisation permet de gagner du temps, surtout lorsque vous avez un grand nombre de ressources à archiver. Cela simplifie également le processus, évitant des tâches manuelles fastidieuses.
Consultez la médiathèque WordPress pour voir où sont hébergés vos fichiers. Si les médias ne sont pas stockés localement, ou si ces derniers sont conservés dans des dossiers très hiérarchisés, vous devrez utiliser une approche basée sur la base de données, comme expliqué dans l’article.
Le nom de la base de données est généralement spécifié dans le fichier de configuration de WordPress (wp-config.php), situé à la racine de votre installation WordPress.
Toute manipulation incorrecte dans la base de données peut affecter la stabilité du système. Assurez-vous de sauvegarder votre base de données avant toute intervention, et suivez les instructions avec prudence.
Oui, il est recommandé de tester ces manipulations sur un environnement de test ou un serveur local avant de les appliquer à un site en ligne pour éviter tout risque.
Wget est un outil puissant pour cela, mais d’autres options existent. Si vous utilisez Linux, vous pouvez également explorer curl ou aria2.
Oui, d’autres outils tels que Adminer, Sequel Pro, ou MySQL Workbench peuvent être utilisés pour accéder à la base de données.
Des connaissances de base en SQL et en manipulation de base de données sont utiles, mais le guide est conçu pour être accessible à ceux qui ne sont pas des experts en programmation.
Oui, vous pouvez adapter la méthode pour d’autres types de fichiers en modifiant les termes de recherche dans la base de données en conséquence.
Si vous rencontrez des problèmes, consultez d’abord les erreurs générées par les outils que vous utilisez. Si nécessaire, demandez de l’aide à la communauté WordPress ou à des forums spécialisés.