Skip to Content
WordPressPartie 16 — Quiz (auto-évaluation)Quiz 2 — Architecture & hooks

Quiz 2 — Architecture & hooks

⏱️ TL;DR — 20 questions sur l’environnement de dev, le cycle de requête, les hooks, The Loop et WP_Query (Parties 4–5). Réponds de tête, puis déplie.


1. Action vs filtre ?

Réponse

Une action (do_action) = « il s’est passé quelque chose », ton callback agit (echo, enregistre). Un filtre (apply_filters) = une valeur passe par ta fonction qui la modifie et la retourne.

2. Que déclarent les 3e et 4e arguments d’add_action ?

Réponse

La priorité (défaut 10, plus petit = plus tôt) et le nombre d’arguments acceptés (accepted_args). Oublier ce dernier = « argument manquant ».

3. Dans un filtre the_content, que se passe-t-il si on oublie le return ?

Réponse

Le contenu disparaît (la fonction retourne null). Un filtre doit toujours retourner la valeur (modifiée ou non). Bug classique.

4. Que fait-on typiquement sur le hook init ?

Réponse

On enregistre CPT, taxonomies, shortcodes… init se déclenche après le chargement de WordPress, avant tout rendu. register_post_type doit y être appelé.

5. Quelle est la bonne façon d’ajouter un CSS/JS ?

Réponse

L’enqueue (wp_enqueue_style/script) sur le hook wp_enqueue_scriptsjamais de <link>/<script> en dur. WordPress gère dépendances, versions, ordre.

6. Qu’est-ce que « The Loop » ?

Réponse

La boucle qui parcourt les résultats de la requête principale (have_posts() / the_post()) et affiche chaque contenu. Le bloc Query Loop en est la version no-code.

7. À quoi sert pre_get_posts ?

Réponse

À modifier la requête principale avant exécution (ex. articles par page sur les archives). Toujours vérifier ! is_admin() et is_main_query() pour ne pas tout casser.

8. Qu’est-ce que la hiérarchie de gabarits (template hierarchy) ?

Réponse

L’ordre selon lequel WordPress choisit le fichier de gabarit du plus spécifique au plus général (single-livre.php > single.php > index.php). Le routing par convention.

9. Comment interroger la base en SQL sans risque d’injection ?

Réponse

Avec $wpdb->prepare("… WHERE id = %d", $id) (placeholders %d/%s/%f). Jamais de concaténation. Et privilégier WP_Query/get_posts au SQL brut.

10. Options, transients, cache : à quoi servent-ils ?

Réponse

Options (get_option) = config persistante. Transients (set_transient) = cache avec expiration. Le cache objet accélère les requêtes répétées. À invalider au bon moment.

11. Qu’est-ce que WP-Cron ?

Réponse

Le planificateur de tâches de WordPress, déclenché par le trafic (pas un vrai cron système). Il publie les articles planifiés et lance les tâches récurrentes (wp_schedule_event).

12. Pourquoi flush_rewrite_rules à l’activation d’un plugin ?

Réponse

Parce qu’un nouveau CPT crée des URLs (/livres/…) qui n’existent qu’après un flush des règles de réécriture. On l’appelle une fois à l’activation (sinon 404).

13. Rôle de wp-config.php et de WP_DEBUG ?

Réponse

wp-config.php = identifiants BDD, clés (salts), constantes (le .env de WordPress). WP_DEBUG = true affiche les erreurs PHP (avec WP_DEBUG_LOGdebug.log). Jamais affiché en prod.

14. À quoi sert WP-CLI ?

Réponse

À administrer WordPress en ligne de commande (wp plugin, wp post, wp search-replace, wp db export). Indispensable en pro, surtout search-replace (gère les données sérialisées).

15. Où doit vivre tout ton code (structure des fichiers) ?

Réponse

Dans wp-content/ (themes/, plugins/, uploads/, mu-plugins/). On ne touche jamais wp-admin/ ni wp-includes/ (écrasés aux mises à jour).

16. Comment référencer le préfixe de tables en code ?

Réponse

Via $wpdb->prefix (jamais wp_ en dur), car le préfixe est configurable. Ex. "{$wpdb->prefix}mytable".

17. À quoi servent les conditional tags (is_single, is_admin…) ?

Réponse

À agir selon le contexte (« où/qui sommes-nous »). ⚠️ La plupart ne sont fiables qu’après le hook wp (pas trop tôt).

18. Comment rendre ton propre code extensible ?

Réponse

En déclarant tes hooks : do_action('mon_hook', $data) et apply_filters('mon_filtre', $valeur). D’autres pourront s’y brancher sans modifier ton plugin.

19. Sur save_post, pourquoi ignorer les révisions ?

Réponse

Parce que save_post tire aussi pour les révisions/autosaves → double déclenchement. On teste wp_is_post_revision($post_id) et on sort. Puis vérif nonce + capability.

20. À quoi sert current_user_can ?

Réponse

À vérifier la capability de l’utilisateur côté serveur avant une action sensible. Cacher un bouton ne protège rien : il faut vérifier au traitement.


Quiz suivant : Quiz 3 — Thèmes & plugins.