wordpress développez avec php wordpress

22
WordPress Développez avec PHP extensions, widgets et thèmes avancés (théorie, TP, ressources) Laurent DUMOULIN

Upload: others

Post on 18-Jun-2022

29 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: WordPress Développez avec PHP WordPress

ISB

N :

978-

2-74

60-9

262-

4

39 €

WordPressDéveloppez avec PHP extensions, widgets et thèmes avancés

Laurent DUMOULIN est développeur, web designer et formateur freelance. Il est très actif au sein des communautés du monde libre, et en particulier dans celle dédiée à WordPress. Ses différentes ex-périences professionnelles, sa curiosité et sa passion lui confèrent une connaissance très riche de ce CMS et de ses extensions, pour le plus grand bénéfice des lecteurs de ce livre.

Ce livre sur WordPress (en version 4 au moment de l’écriture) s’adresse aux développeurs professionnels, autodidactes et passionnés ayant des connaissances en PHP. Il permet de comprendre les rouages de ce CMS et d’acquérir une maîtrise du développement d’extensions en PHP en suivant un apprentissage progressif.

L’auteur présente l’interaction entre PHP et le backoffice du CMS à travers plusieurs exemples, qui évoluent de la programmation procé-durale vers la programmation orientée objet, en passant par l’utili-sation de requêtes SQL. Il présente ensuite l’interaction avec Ajax/Json.

Le lecteur apprend à installer WordPress, à utiliser l’outil d’administra-tion, à ajouter des fonctionnalités, à enregistrer en base de données, à ajouter des tables pour maîtriser complètement les principes de fonctionnement du CMS et apprendre ensuite à réaliser des thèmes avancés, des widgets, des extensions. Une partie du livre traite de l’optimisation, la sécurité, la traduction, la mise en ligne …

Les fonctions propres à WordPress sont détaillées avec des exemples et mises en situation à travers des travaux pratiques : ajout de fonctionnalités dans l’administration d’un thème, ajout d’un éditeur wysiwyg et d’une barre de défilement personnalisée, création d’une extension fil d’ariane, création d’un widget, création d’une extension google map, création d’une extension avec un formulaire pour récupé-rer des adresses mails en Ajax/Json.

Des liens vers le guide de références, ainsi que le champ lexical utilisé, donneront les clés nécessaires pour approfondir les connaissances sur un sujet précis.

Des éléments complémentaires sont en téléchargement sur le site www.editions-eni.fr.

Téléchargementwww.editions-eni.fr.fr

Sur www.editions-eni.fr :b Le code source des travaux pratiques.

Avant-propos • Introduction à WordPress • WordPress et PHP • Les thèmes enfants • Personnaliser le site avec le fichier func-tions.php • Les champs personnalisés • Les modèles de page • Créer un thème et des fonctionnalités avancées • Les exten-sions et les widgets • Créer une extension simple en PHP • Créer une extension wid-get en PHP • Créer une extension avec PHP/MySQL • Créer une extension avec Ajax et JSON • Soumettre une extension à WordPress • Traduire le thème et les extensions • Optimiser et sécuriser un site • Sauvegarder un site • Mettre en ligne ou migrer son site • WordPress MU • Annexes

Les chapitres du livre

WordPress Développez avec PHP extensions, widgets et thèmes avancés (théorie, TP, ressources)

Laurent DUMOULIN

Pour plus d’informations :

Wor

dPre

ss D

ével

oppe

z av

ec P

HP

(théorie, TP, ressources)

Page 2: WordPress Développez avec PHP WordPress

1Table des matières

Chapitre 1Avant-propos

1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

2. À qui s’adresse cet ouvrage ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

3. Les pré-requis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

4. Les objectifs du livre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

Chapitre 2Introduction à WordPress

1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

2. Qu'est-ce que WordPress ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212.1 La licence GNU GPL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222.2 Les avantages de WordPress . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222.3 Les inconvénients de WordPress . . . . . . . . . . . . . . . . . . . . . . . . . 23

3. Le codex WordPress : guide de référence . . . . . . . . . . . . . . . . . . . . . . . 24

4. Installer WordPress. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264.1 Créer la base de données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284.2 Transférer les fichiers WordPress. . . . . . . . . . . . . . . . . . . . . . . . . 294.3 Configurer le site . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314.4 Les différents identifiants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

5. L'administration et les menus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375.1 Tableau de bord . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

5.1.1 Accueil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395.1.2 Mises à jour . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

Les éléments à télécharger sont disponibles à l'adresse suivante :http://www.editions-eni.fr

Saisissez la référence de l'ouvrage EI4WOR dans la zone de recherche et validez. Cliquez sur le titre du livre puis sur le bouton de téléchargement.

Page 3: WordPress Développez avec PHP WordPress

2Développez avec PHP

WordPress

5.2 Articles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435.2.1 Tous les articles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445.2.2 Ajouter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455.2.3 Les blocs de la colonne de droite. . . . . . . . . . . . . . . . . . . . 505.2.4 Les blocs cachés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 535.2.5 Catégories. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555.2.6 Mots-clés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

5.3 Médias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 575.3.1 Bibliothèque . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 575.3.2 Modifier une image . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 585.3.3 Ajouter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

5.4 Pages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 635.5 Commentaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 655.6 Apparence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

5.6.1 Thèmes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 665.6.2 Personnaliser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 695.6.3 Widgets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 705.6.4 Menus. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 735.6.5 En-tête . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 765.6.6 Arrière-plan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 775.6.7 Éditeur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78

5.7 Extensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 795.7.1 Extensions installées . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 795.7.2 Ajouter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 805.7.3 Éditeur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82

5.8 Utilisateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 835.8.1 Tous les utilisateurs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 835.8.2 Ajouter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 845.8.3 Votre profil. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85

5.9 Outils. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 865.9.1 Outils disponibles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 865.9.2 Importer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 865.9.3 Exporter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87

Page 4: WordPress Développez avec PHP WordPress

3Table des matières

5.10 Réglages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 885.10.1 Général . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 885.10.2 Écriture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 895.10.3 Lecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 905.10.4 Discussion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 925.10.5 Médias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 945.10.6 Permaliens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 945.10.7 Les autres onglets. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96

6. Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96

Chapitre 3WordPress et PHP

1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97

2. La structure des fichiers et dossiers WordPress. . . . . . . . . . . . . . . . . . 982.1 Les fichiers et dossiers à la racine du site. . . . . . . . . . . . . . . . . . . 982.2 Le dossier wp-content . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99

3. La base de données WordPress . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101

4. La structure et les fichiers principaux d'un thème . . . . . . . . . . . . . . 1044.1 Les fichiers principaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1054.2 Les autres fichiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1074.3 Les dossiers éventuellement présents à la racine d'un thème . 108

5. Les fonctions d'inclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109

6. Les marqueurs conditionnels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110

7. La boucle et ses fonctions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1137.1 Les fonctions principales d'affichage dans une boucle . . . . . . . 1147.2 Les fonctions principales pour récupérer

des variables dans une boucle . . . . . . . . . . . . . . . . . . . . . . . . . . 118

8. Les fonctions pour les textes dans les fichiers PHP . . . . . . . . . . . . . 121

9. Les chemins dans les URL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123

10. La fonction bloginfo(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124

Page 5: WordPress Développez avec PHP WordPress

4Développez avec PHP

WordPress

11. La fonction wp_nav_menu() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127

12. Les hooks (filtres et actions) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13312.1 Les actions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13312.2 Les filtres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13512.3 Ajouter des filtres et des actions dans une classe . . . . . . . . . . . 13712.4 Supprimer les filtres et les actions . . . . . . . . . . . . . . . . . . . . . . . 13712.5 Tester les filtres et les actions . . . . . . . . . . . . . . . . . . . . . . . . . . 13812.6 L'ordre d’exécution des actions . . . . . . . . . . . . . . . . . . . . . . . . . 139

13. Les globales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14113.1 Les globales dans les boucles . . . . . . . . . . . . . . . . . . . . . . . . . . . 14213.2 Les globales pour détecter le navigateur . . . . . . . . . . . . . . . . . . 14313.3 Les globales pour les serveurs. . . . . . . . . . . . . . . . . . . . . . . . . . . 14313.4 Les globales pour les versions de WordPress . . . . . . . . . . . . . . . 14413.5 Les globales diverses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144

14. Les classes de WordPress . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145

15. La classe WP_Query et les requêtes sur le contenu . . . . . . . . . . . . . 14615.1 Les méthodes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14715.2 Les arguments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147

15.2.1 Trier par catégories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14715.2.2 Trier par mots-clés. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14815.2.3 Trier par auteurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14915.2.4 Trier par pages et par articles . . . . . . . . . . . . . . . . . . . . . 14915.2.5 Choisir l'ordre d'affichage . . . . . . . . . . . . . . . . . . . . . . . . 14915.2.6 Plus de filtres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15015.2.7 La concaténation d'arguments . . . . . . . . . . . . . . . . . . . . 150

15.3 Plusieurs boucles sur la même page. . . . . . . . . . . . . . . . . . . . . . 15015.4 D'autres fonctions pour faire des requêtes . . . . . . . . . . . . . . . . 15115.5 WP_Query et les fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152

16. La classe wpdb et les requêtes au format SQL . . . . . . . . . . . . . . . . . 15316.1 Les méthodes utiles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15316.2 Les principales méthodes de requêtes et leurs arguments . . . . 15416.3 Créer des tables pour les plugins avec la fonction dbdelta() . . 158

Page 6: WordPress Développez avec PHP WordPress

5Table des matières

17. La classe WP_rewrite et la réécriture d'URL . . . . . . . . . . . . . . . . . . . 15917.1 Passer une variable dans une URL

avec la fonction add_rewrite_tag() . . . . . . . . . . . . . . . . . . . . . . 15917.2 Réécrire l'URL avec la fonction add_rewrite_rule() . . . . . . . . . 16117.3 Régénérer les règles d'écriture . . . . . . . . . . . . . . . . . . . . . . . . . . 162

18. Les shortcodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16218.1 Créer des shortcodes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16318.2 Ajouter des arguments aux shortcodes . . . . . . . . . . . . . . . . . . . 16418.3 Récupérer du contenu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16518.4 Utiliser les shortcodes dans des fichiers PHP . . . . . . . . . . . . . . 166

19. Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166

Chapitre 4Les thèmes enfants

1. Qu'est-ce qu'un thème enfant ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167

2. Créer et utiliser un thème enfant . . . . . . . . . . . . . . . . . . . . . . . . . . . 1682.1 Créer un dossier pour le thème enfant . . . . . . . . . . . . . . . . . . . 1682.2 Le fichier style.css . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1682.3 Les modèles de page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1702.4 Le fichier functions.php . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1702.5 Les chemins des dossiers enfants . . . . . . . . . . . . . . . . . . . . . . . . 1712.6 Charger un dossier languages dans le thème enfant . . . . . . . . 171

3. Des thèmes enfants pour les extensions . . . . . . . . . . . . . . . . . . . . . . 172

Chapitre 5Personnaliser le site avec le fichier functions.php

1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173

2. Créer des fonctions simples en PHP . . . . . . . . . . . . . . . . . . . . . . . . . 1742.1 Afficher une image . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1742.2 Afficher une publicité. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175

Page 7: WordPress Développez avec PHP WordPress

6Développez avec PHP

WordPress

3. Créer une fonction fil d’Ariane simple . . . . . . . . . . . . . . . . . . . . . . . 176

4. Créer une fonction pour afficher des articles d’une catégorie avec l'objet WP_Query . . . . . . . . . . . . . . . . . . . . . . . 1804.1 Une fonction simple avec get_posts() . . . . . . . . . . . . . . . . . . . . 1824.2 La même fonction avec l'objet WP_Query . . . . . . . . . . . . . . . . 184

5. Ajouter un lien « Lire la suite » aux résumés . . . . . . . . . . . . . . . . . . . 185

6. Ajouter des feuilles de style et des scripts . . . . . . . . . . . . . . . . . . . . . 1866.1 Les fonctions d'ajout. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1866.2 Des scripts mis à disposition . . . . . . . . . . . . . . . . . . . . . . . . . . . 1886.3 Inclure les styles et les scripts avec des hooks . . . . . . . . . . . . . 1886.4 Créer la fonction dans le fichier functions.php . . . . . . . . . . . . 189

7. Créer des emplacements pour les menus . . . . . . . . . . . . . . . . . . . . . 189

8. Créer des sidebars et des zones pour les sidebars . . . . . . . . . . . . . . . 192

9. Customiser un thème avec add_theme_support() . . . . . . . . . . . . . . 1969.1 Les formats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197

9.1.1 Ajouter un format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1979.1.2 Fonctionnement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1989.1.3 Utilisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198

9.2 Les photos vignettes (thumbnails) . . . . . . . . . . . . . . . . . . . . . . 1999.2.1 Définir une taille de vignette . . . . . . . . . . . . . . . . . . . . . 2009.2.2 Créer une seconde vignette . . . . . . . . . . . . . . . . . . . . . . 200

9.3 Les arrière-plans (background). . . . . . . . . . . . . . . . . . . . . . . . . . 2019.4 Les en-têtes (headers) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203

10. Ajouter d'autres types d'articles. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205

11. Ajouter des taxonomies spécifiques . . . . . . . . . . . . . . . . . . . . . . . . . 208

12. Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210

Page 8: WordPress Développez avec PHP WordPress

7Table des matières

Chapitre 6Les champs personnalisés

1. Qu'est-ce qu’un champ personnalisé ? . . . . . . . . . . . . . . . . . . . . . . . 211

2. Utiliser les champs personnalisés . . . . . . . . . . . . . . . . . . . . . . . . . . . 2122.1 Afficher les champs personnalisés avec the_meta() . . . . . . . . . 2122.2 Afficher les champs personnalisés avec get_postmeta() . . . . . 2132.3 La table wp_postmeta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214

Chapitre 7Les modèles de page

1. Qu'est-ce qu'un modèle de page ? . . . . . . . . . . . . . . . . . . . . . . . . . . . 217

2. Créer des modèles de page pour le bloc Attributs de la page . . . . . . 218

3. Créer d'autres modèles de page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220

Chapitre 8Créer un thème et des fonctionnalités avancés

1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223

2. Créer le thème. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225

3. Customiser le thème de base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227

4. Ajouter un onglet Options du thème . . . . . . . . . . . . . . . . . . . . . . . . 2304.1 La fonction add_theme_pages(). . . . . . . . . . . . . . . . . . . . . . . . . 2304.2 Créer l'onglet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2304.3 Les bonnes pratiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2324.4 Appeler le fichier dans functions.php . . . . . . . . . . . . . . . . . . . . 232

5. Mettre en place la page d'options . . . . . . . . . . . . . . . . . . . . . . . . . . . 233

6. Ajouter une feuille de style CSS et un script JavaScript . . . . . . . . . 234

Page 9: WordPress Développez avec PHP WordPress

8Développez avec PHP

WordPress

7. Ajouter un logo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2367.1 Créer une méthode avec un input type file . . . . . . . . . . . . . . . 2367.2 Créer le code HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2377.3 Vérifier le fichier téléchargé . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2387.4 Transférer l'image avec la fonction wp_handle_upload() . . . . 2407.5 Utiliser les options pour enregistrer en base de données . . . . . 2407.6 Afficher l'image sur le site . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2437.7 Insérer une image par défaut dès l'activation du thème . . . . . 2447.8 Créer un aperçu dans l'administration . . . . . . . . . . . . . . . . . . . 246

8. Créer un bouton qui remet les options par défaut . . . . . . . . . . . . . . 247

9. Ajouter une favicon au thème . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249

10. Choisir une couleur avec Iris (color picker). . . . . . . . . . . . . . . . . . . . 25310.1 Ajouter le script JavaScript et le CSS Iris,

palette de WordPress . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25310.2 Ajouter la couleur par défaut . . . . . . . . . . . . . . . . . . . . . . . . . . . 25410.3 Ajouter le formulaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25410.4 Ajouter le code JavaScript pour faire fonctionner Iris . . . . . . . 25410.5 Enregistrer les informations. . . . . . . . . . . . . . . . . . . . . . . . . . . . 25610.6 Afficher le résultat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257

11. Ajouter des textes sur la page d'accueil . . . . . . . . . . . . . . . . . . . . . . . 25711.1 Ajouter les codes aux méthodes de la classe . . . . . . . . . . . . . . . 25711.2 Ajouter un éditeur WYSIWYG avec la fonction wp_editor() . 25911.3 Enregistrer les informations. . . . . . . . . . . . . . . . . . . . . . . . . . . . 26111.4 Afficher le résultat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262

12. Ajouter une sidebar dans le footer pour la page d'accueil . . . . . . . . 263

13. En résumé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267

14. Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269

Page 10: WordPress Développez avec PHP WordPress

9Table des matières

Chapitre 9Les extensions et les widgets

1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271

2. Les widgets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274

3. Les extensions utiles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275

4. Les extensions diaporama . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278

5. Les extensions pour l'administration. . . . . . . . . . . . . . . . . . . . . . . . . 279

6. Les grosses extensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282

7. Les extensions pour les développeurs . . . . . . . . . . . . . . . . . . . . . . . . 284

Chapitre 10Créer une extension simple en PHP

1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285

2. Préparer les éléments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285

3. Afficher l'extension dans l'administration . . . . . . . . . . . . . . . . . . . . 286

4. Créer le code PHP de base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289

5. Créer un shortcode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291

6. Créer un onglet dans le menu d'administration . . . . . . . . . . . . . . . . 2926.1 Afficher un onglet principal . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2926.2 Ajouter des fonctions pour les sous-menus

d'un onglet principal de WordPress . . . . . . . . . . . . . . . . . . . . . . 2936.3 Ajouter des fonctions pour les sous-menus

d'un onglet principal personnalisé . . . . . . . . . . . . . . . . . . . . . . 2946.4 Créer l'onglet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295

7. Créer la même extension en objet . . . . . . . . . . . . . . . . . . . . . . . . . . . 296

8. Le dossier mu-plugins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298

9. Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300

Page 11: WordPress Développez avec PHP WordPress

10Développez avec PHP

WordPress

Chapitre 11Créer une extension widget en PHP

1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301

2. Configurer l’extension . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302

3. La classe WP_Widget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303

4. Configurer le widget. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305

5. Enregistrer le widget avec la fonction register_widget() . . . . . . . . . 306

6. Afficher le widget grâce à un hook . . . . . . . . . . . . . . . . . . . . . . . . . . 308

7. Créer le formulaire du widget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3087.1 Ajouter les champs HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3087.2 Ajouter les méthodes get_field_id() et get_field_name() . . . . . 3097.3 Ajouter des paramètres par défaut . . . . . . . . . . . . . . . . . . . . . . 310

8. Enregistrer et mettre à jour les options du widget . . . . . . . . . . . . . . 313

9. Afficher le widget dans la sidebar . . . . . . . . . . . . . . . . . . . . . . . . . . . 314

Chapitre 12Créer une extension avec PHP/MySQL

1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319

2. Préparer les éléments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320

3. Construire la classe. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322

4. Créer et supprimer la table. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3234.1 Créer la table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3244.2 Supprimer la table lors de la désactivation de l'extension . . . . 3264.3 Supprimer la table lors de la suppression de l'extension . . . . . 328

5. Ajouter le sous-menu de l'extension et la page de configuration . . 3305.1 Ajouter le sous-menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3305.2 Afficher la page d'administration . . . . . . . . . . . . . . . . . . . . . . . 3315.3 Créer le formulaire pour enregistrer les cartes . . . . . . . . . . . . . 331

Page 12: WordPress Développez avec PHP WordPress

11Table des matières

6. Ajouter les fichiers JavaScript et CSS . . . . . . . . . . . . . . . . . . . . . . . . 3336.1 Ajouter les fichiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3336.2 Faire appel au hook d'action load-(page). . . . . . . . . . . . . . . . . . 3336.3 Vérifier les champs du formulaire avec jQuery . . . . . . . . . . . . 334

7. Enregistrer les cartes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3377.1 Récupérer et vérifier les variables . . . . . . . . . . . . . . . . . . . . . . . 3377.2 Enregistrer la carte avec une requête INSERT . . . . . . . . . . . . . 3387.3 Rediriger après l'insertion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339

8. Créer un menu avec les différentes cartes. . . . . . . . . . . . . . . . . . . . . 3408.1 Récupérer toutes les cartes avec une requête SELECT. . . . . . . 3408.2 Créer le menu avec une boucle . . . . . . . . . . . . . . . . . . . . . . . . . 341

9. Afficher les pages cartes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3429.1 Mettre en place un second template . . . . . . . . . . . . . . . . . . . . . 3429.2 Ajouter le menu au second template. . . . . . . . . . . . . . . . . . . . . 343

10. Afficher l’aperçu d’une carte et ajouter son titre . . . . . . . . . . . . . . . 34410.1 Récupérer l’id de la carte avec une requête SELECT . . . . . . . . 34410.2 Ajouter le code JavaScript de l'API Google Maps . . . . . . . . . . . 345

11. Mettre à jour les cartes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34711.1 Créer le formulaire pour la mise à jour des cartes . . . . . . . . . . 34711.2 Récupérer et vérifier les variables . . . . . . . . . . . . . . . . . . . . . . . 34811.3 Mettre à jour une requête UPDATE . . . . . . . . . . . . . . . . . . . . . 34911.4 Rediriger après la mise à jour . . . . . . . . . . . . . . . . . . . . . . . . . . . 351

12. Supprimer les cartes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35212.1 Créer un bouton pour supprimer la carte . . . . . . . . . . . . . . . . . 35212.2 Récupérer et vérifier les variables . . . . . . . . . . . . . . . . . . . . . . . 35212.3 Supprimer avec une requête DELETE . . . . . . . . . . . . . . . . . . . . 35312.4 Rediriger après la suppression . . . . . . . . . . . . . . . . . . . . . . . . . . 354

13. Afficher la carte sur le site côté utilisateur avec un shortcode . . . . 35413.1 Ajouter l'appel JavaScript à l'API Google Maps . . . . . . . . . . . . 35413.2 Créer des shortcodes pour chaque carte . . . . . . . . . . . . . . . . . . 35513.3 Afficher le code sur la page de chaque carte . . . . . . . . . . . . . . . 356

Page 13: WordPress Développez avec PHP WordPress

12Développez avec PHP

WordPress

Chapitre 13Créer une extension avec Ajax et JSON

1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359

2. Préparer les éléments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3602.1 Configurer l’extension . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3602.2 Construire la classe. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3612.3 Créer la table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3622.4 Supprimer la table lors de la suppression de l'extension . . . . . 3632.5 Ajouter un sous-menu et la page de configuration . . . . . . . . . 3642.6 Ajouter les fichiers JavaScript et CSS . . . . . . . . . . . . . . . . . . . . 365

3. Créer le shortcode et l'ajouter au site . . . . . . . . . . . . . . . . . . . . . . . . 3663.1 Créer le shortcode. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3663.2 Insérer le shortcode. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3673.3 Afficher le code dans l'administration pour les utilisateurs. . . 369

4. Vérifier les champs du formulaire en jQuery . . . . . . . . . . . . . . . . . . 370

5. Effectuer la requête Ajax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3715.1 WordPress et Ajax. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3715.2 Transmettre des variables PHP au fichier JavaScript . . . . . . . . 3725.3 Générer une clé de sécurité . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3725.4 La fonction Ajax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373

6. Récupérer les données et enregistrer une adresse e-mail . . . . . . . . . 3746.1 Les hooks d'action wp_ajax_(action)

et wp_ajax_nopriv_(action). . . . . . . . . . . . . . . . . . . . . . . . . . . . 3746.2 Vérifier la clé de sécurité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3756.3 Enregistrer l'adresse e-mail avec une requête d'insertion . . . . . 3766.4 Vérifier les doublons avant l'insertion. . . . . . . . . . . . . . . . . . . . 3776.5 Transmettre la réponse à la requête Ajax . . . . . . . . . . . . . . . . . 3786.6 Ajouter une image de chargement (loader). . . . . . . . . . . . . . . . 379

7. Afficher et gérer les adresses e-mail dans l'administration. . . . . . . . 3817.1 Ajouter une méthode listant les adresses e-mail . . . . . . . . . . . 3817.2 Créer un tableau avec toutes les adresses e-mail . . . . . . . . . . . 381

Page 14: WordPress Développez avec PHP WordPress

13Table des matières

7.3 Créer une liste d'adresses e-mail pour la copier-coller facilement . . . . . . . . . . . . . . . . . . . . . . . . . 385

8. Supprimer des adresses e-mail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3878.1 Créer un événement JavaScript sur le bouton supprimer . . . . 3878.2 Transmettre les variables au fichier JavaScript. . . . . . . . . . . . . 3888.3 Créer la requête Ajax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3898.4 Créer le hook et la méthode pour la requête Ajax . . . . . . . . . . 3898.5 Créer la méthode de suppression . . . . . . . . . . . . . . . . . . . . . . . . 3908.6 Supprimer et transmettre la réponse à la requête Ajax . . . . . . 3908.7 Mettre à jour la liste et vérifier que le tableau n'est pas vide. . 3928.8 Ajouter une image de chargement (loader). . . . . . . . . . . . . . . . 392

Chapitre 14Soumettre une extension à WordPress

1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395

2. Les pré-requis WordPress . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3952.1 La licence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3962.2 Le fichier readme.txt. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397

3. Soumettre l'extension. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3983.1 Créer un compte sur wordpress.org . . . . . . . . . . . . . . . . . . . . . 3983.2 Envoyer l'extension. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3983.3 Le dossier SVN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400

Chapitre 15Traduire le thème et les extensions

1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401

2. WordPress et les langues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4022.1 Le dossier wp-content/languages . . . . . . . . . . . . . . . . . . . . . . . 4022.2 Les fichiers de langue du dossier wp-content/languages . . . . . 4022.3 D'autres dossiers languages . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4032.4 Le fonctionnement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404

Page 15: WordPress Développez avec PHP WordPress

14Développez avec PHP

WordPress

3. Utiliser le logiciel Poedit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4053.1 Télécharger et installer le logiciel . . . . . . . . . . . . . . . . . . . . . . . 4053.2 Créer le fichier de langue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4063.3 Traduire. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409

4. Utiliser les fichiers dans un thème ou une extension. . . . . . . . . . . . 412

5. Traduire les nouvelles chaînes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413

6. Traduire les pages et les articles . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413

Chapitre 16Optimiser et sécuriser un site

1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415

2. Optimiser un site . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416

3. Sécuriser un site . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 420

Chapitre 17Sauvegarder un site

1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425

2. Télécharger les fichiers par FTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426

3. Sauvegarder la base de données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426

4. Rétablir le site en cas de crash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428

Chapitre 18Mettre en ligne ou migrer son site

1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431

2. Importer la base de données. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432

3. Modifier les URL avec des requêtes SQL. . . . . . . . . . . . . . . . . . . . . . 433

4. Transférer les fichiers et modifier le fichier wp-config.php. . . . . . . 435

Page 16: WordPress Développez avec PHP WordPress

15Table des matières

Chapitre 19WordPress MU

1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437

2. Qu'est-ce que WordPress MU ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437

3. Transformer un site en WordPress MU . . . . . . . . . . . . . . . . . . . . . . 4383.1 Activer le multisite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4383.2 Configurer et choisir les URL. . . . . . . . . . . . . . . . . . . . . . . . . . . 4383.3 Modifier les fichiers wp-config.php et .htaccess. . . . . . . . . . . . 440

4. Gérer un réseau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4414.1 Dans le panel d'administration du réseau . . . . . . . . . . . . . . . . . 4414.2 Dans le panel d'administration de chaque site . . . . . . . . . . . . . 444

Annexes

1. Les liens utiles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447

2. Glossaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4492.1 Les langages de programmation de WordPress . . . . . . . . . . . . . 4492.2 Les termes WordPress, du Web et de programmation . . . . . . . 450

Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457

Page 17: WordPress Développez avec PHP WordPress

97

Chapitre 3

WordPress et PHP

WordPress et PHP1. Introduction

WordPress est un CMS entièrement conçu en PHP programmation orientéeobjet, il est donc normal que WordPress ait développé ses propres API, classes,méthodes, fonctions... pour simplifier la vie des développeurs.

Ce chapitre décrit la place prépondérante de PHP dans WordPress, la structureet les fonctions récurrentes de WordPress. Il sert de référence pour l'ensembledu livre, vous pouvez très bien le sauter et vous y référer par la suite lors de lapersonnalisation du fichier functions.php, de la création de thèmes avancés oulors de la création d'extensions...

Ce chapitre est un condensé des possibilités qu'offre WordPress, il va à l'essen-tiel. Alors n'hésitez pas à consulter la documentation officielle, le codex ou denombreux tutoriels gratuits, présents sur la Toile, pour approfondir vosconnaissances sur un sujet précis.

Tous les mots-clés et termes techniques de chaque chapitre vous permettentde mener votre propre enquête sur le Net. Avec une communauté très active,il serait dommage de ne pas profiter de l'expérience de toutes ces personnes,prêtes à vous aider gratuitement. Vous trouverez énormément de ressources,avec de nombreux exemples de code.

Page 18: WordPress Développez avec PHP WordPress

© E

dit

ions

EN

I -

All r

ights

rese

rved

98Développez avec PHP

WordPress

2. La structure des fichiers et dossiers WordPress

Connaître l'organisation des fichiers dans WordPress est important. Lastructure est toujours la même, pour un petit site ou pour un gros site : le coreou cœur de WordPress ne change pas.

2.1 Les fichiers et dossiers à la racine du site

Les sites WordPress ont tous la même structure. À la racine, vous trouverez lesdossiers wp-admin, wp-content, wp-includes et les fichiers WordPress.

Fichiers et dossiers à la racine du site WordPress.

Il ne faut pas modifier ou supprimer certains fichiers ou dossiers natifs deWordPress, en l'occurrence ceux qui font partie du core, le site risquerait de neplus fonctionner. De plus, la mise à jour de WordPress écrase toutes les modi-fications.

Page 19: WordPress Développez avec PHP WordPress

99WordPress et PHPChapitre 3

Le dossier wp-admin contient l'ensemble des fichiers concernant l'adminis-tration du site. Il ne faut pas modifier des fichiers dans ce dossier.

Le dossier wp-content contient l'ensemble des fichiers des thèmes, des exten-sions et des médias. C'est dans ce dossier que s'effectuent les modifications etpersonnalisations du site.

Le dossier wp-includes contient l'ensemble des fichiers du core de WordPress(classes, fonctions, scripts…). Il ne faut pas modifier des fichiers dans cedossier.

Le fichier wp-config.php est un fichier généré lors de l'installation deWordPress, à partir du fichier wp-config-sample.php. Les informations quiont servi à la configuration du site se trouvent dans ce fichier : le nom de labase de données, le mot de passe, l'URL de la base de données, le préfixe destables, les clés de sécurité, les langues... Ce fichier est modifié lors du change-ment d'hébergeur, lors de l'optimisation du site, du débogage, lors d'un chan-gement de langue... La suppression du fichier wp-config.php réaffiche la pagede configuration.

Les autres fichiers .php servent au core de WordPress et il ne faut absolumentpas les modifier ou les supprimer. Cependant, vous pouvez trouver à la racinedu site des fichiers qui ont été générés par une extension, certains pourrontêtre modifiés : .htaccess, robots.txt ou sitemap.xml...

2.2 Le dossier wp-content

Le dossier wp-content est le dossier servant à la création de thèmes, d'exten-sions, de fonctions. Il contient les dossiers languages, plugins, themes et lefichier index.php.

D'autres dossiers apparaissent lors d'ajout d'images, comme le dossieruploads, et lors de mises à jour, tel le dossier upgrade.

D'autres dossiers peuvent encore apparaître selon l'installation de certainesextensions, comme le dossier cache.

Page 20: WordPress Développez avec PHP WordPress

© E

dit

ions

EN

I -

All r

ights

rese

rved

100Développez avec PHP

WordPress

Dossiers et fichiers du répertoire wp-content, lors de l'installation de WordPress.

Le dossier languages contient les fichiers de langue de WordPress. L'installa-tion manuelle s'effectue en téléchargeant par FTP les fichiers de langue dansce dossier. Les fichiers de langue ont les extensions .mo et .po/.pot.

Le dossier plugins contient l'ensemble des extensions installées. De base, ledossier contient deux extensions : Akismet et Hello Dolly. L'installationmanuelle s'effectue en téléchargeant par FTP le dossier contenant les fichiersde l'extension dans le dossier plugins.

Le dossier themes contient l'ensemble des thèmes installés. De base, il y atrois thèmes : Twenty Fourteen, Twenty Thirteen, Twenty Twelve. L'instal-lation manuelle s'effectue en téléchargeant par FTP le dossier contenant les fi-chiers et dossiers du thème dans le dossier themes.

Le dossier uploads contient l'ensemble des médias téléchargés. Pour lesimages, WordPress crée trois formats d'image et les classe selon les paramètresentrés dans l'administration. Par défaut WordPress classe les médias dans desdossiers ayant pour nom l'année, avec à l'intérieur des dossiers ayant pournom les mois en chiffres (01, 02, … 12). Certaines extensions y créent parfoisdes dossiers pour y stocker divers fichiers.

Le dossier upgrade accueille les fichiers compressés des mises à jour de thèmesou d'extensions. Avant leur décompression, WordPress les télécharge dans cedossier. Si la mise à jour se passe mal, vous retrouvez le fichier compressé dansce dossier. Ce dossier apparaîtra lorsque vous effectuerez une mise à jour.

Le fichier index.php sert uniquement à la sécurité du dossier wp-content. Cefichier vide permet d'afficher une page blanche au lieu de l'arborescence du siteen cas de dysfonctionnement. Vous le retrouvez dans différents dossiers.

Page 21: WordPress Développez avec PHP WordPress

101WordPress et PHPChapitre 3

3. La base de données WordPress

WordPress installe onze tables dans la base de données. Pour le constater,connectez-vous à votre base de données. C'est là où sont stockées toutes lesinformations de votre site (contenu des articles, des pages, des catégories, desmots-clés, etc., la configuration de WordPress, des extensions, des thèmes,etc., les informations sur les utilisateurs...).

Dans le livre, les exemples sont illustrés avec le préfixe de base wp_. Normale-ment le préfixe est choisi lors de l'installation, il se peut donc qu'il soit diffé-rent si vous l'avez changé. Pensez à changer le préfixe lors de l'utilisation desexemples.

Tables en base de données lors de l'installation de WordPress, dans phpMyAdmin.

D'autres tables apparaissent selon les thèmes, les extensions et l'utilisation dumode multisite.

Remarque

Référence au codex : http://codex.wordpress.org/Database_Description

Page 22: WordPress Développez avec PHP WordPress

© E

dit

ions

EN

I -

All r

ights

rese

rved

102Développez avec PHP

WordPress

Voici les tables natives de WordPress :

– La table wp_commentmeta contient des informations complémentairesconcernant les commentaires. Cette table est utilisée par l'extensionAkismet, devenue extension native de WordPress, indispensable pour évi-ter de se faire spammer. Vous la retrouvez dans l'administration, sousl'onglet Extensions.

– La table wp_comments contient tous les commentaires des articles et despages.

– La table wp_link (facultative) regroupe tous les liens enregistrés via l'ongletLiens de l'administration. L’onglet Liens n'existe plus depuis la version 3.5,et nécessite l'utilisation de l'extension Link Manager, mais la table esttoujours présente pour que les personnes qui l'utilisaient avant ne perdentpas leurs données sur les versions récentes de WordPress.

– La table wp_options contient les configurations générales du site (rensei-gnées lors de l'installation du site) et des extensions... parmi les plusimportantes ! Lors de la création de thèmes avancés, cette table est égale-ment utilisée pour y stocker des informations, grâce à des fonctions deWordPress.

– La table wp_postmeta contient les informations complémentaires liéesaux articles ou aux pages. Cette table est directement liée à la tablewp_posts.

– La table wp_posts est la plus importante, elle contient tout le contenu dusite. Vous y retrouvez toutes les informations concernant les articles, lespages, les photos, les fichiers PDF et autres médias, ou les produits dans lecas d'extensions e-commerce.

– La table wp_terms contient les catégories et les mots-clés. Cette table estdirectement liée aux tables wp_term_relationships et wp_term_taxonomy.

– La table wp_term_relationships relie les catégories et mots-clés aux diffé-rents articles et pages. Cette table est directement liée aux tables wp_termset wp_term_taxonomy.

– La table wp_term_taxonomy est utilisée pour différencier les catégories etles mots-clés, vous y trouvez les informations complémentaires concernantles catégories et les mots-clés. Cette table est directement liée aux tables :wp_terms et wp_term_relationships.