Core WordPress: plongée profonde

DEV - 08/09
Considérez WordPress comme une symphonie bien orchestrée. Chaque fois que quelqu'un visite votre site, WordPress ...

Considérez WordPress comme une symphonie bien orchestrée. Chaque fois que quelqu'un visite votre site, WordPress effectue la même danse que le chargement de fichiers, la connexion aux bases de données, l'exécution de votre code personnalisé et enfin la livraison d'une page Web. Comprendre cette danse n'est pas seulement académique; C'est la différence entre écrire du code qui fonctionne et écrire du code qui fonctionne bien.

Ce guide vous emmènera de "Je peux faire faire des choses WordPress" à "Je comprends pourquoi WordPress fait les choses comme elle le fait". Nous explorerons les systèmes qui font vibrer WordPress, vous donnant les modèles mentaux pour résoudre des problèmes complexes et créer des solutions robustes.

1. cycle de vie de Core WordPress

La vue d'ensemble

Chaque fois que quelqu'un visite votre site WordPress, la même séquence se produit. C'est comme une chaîne de montage d'usine et chaque étape doit se terminer avant le début de la suivante. WordPress est incroyablement prévisible à cet égard, qui est à la fois sa force et quelque chose que vous pouvez exploiter.

Pensez-y de cette façon: lorsque vous activez votre ordinateur, il passe par une séquence de démarrage: vérifier le matériel, charger le système d'exploitation, démarrer les services. WordPress fait quelque chose de similaire, mais au lieu de démarrer un ordinateur, il "démarre" une demande Web.

Le flux de cycle de vie complet

Phase 1: bootstrap (wp-config.phpwp-settings.php)

// 1. WP-Config.php Loads Define ('DB_NAME', 'DATABASE_NAME'); définir ('wp_debug', true); // 2. Wp-settings.php commence le processus bootstrap requise_once abspath. Wpinc. '/load.php'; require_once abspath. Wpinc. '/default-Consants.php';
Entrez le mode de sortie en mode plein écran

Phase 2: chargement central

  • Définition des constantes:wp_initial_constants (),wp_cookie_constants ()
  • Manager des erreurs fatal:wp_register_fatal_error_handler ()
  • Initialisation du cache: cache d'objet, si disponible
  • Connexion de la base de données:wpdbinstanciation de classe
  • Détection SSL:wp_ssl_constants ()

Phase 3: chargement du plugin

// Les plugins sont chargés dans cet ordre: // 1. Plugins MUST-USE (MU-PLUGINS) FOREACH ($ mu_plugins comme $ mu_plugin) {include_once wpmu_plugin_dir. '/'. $ mu_plugin; } // 2. Plugins activé par le réseau (MultiSite) // 3. Plugins actifs réguliers do_action ('plugins_loaded'); // tiré après tous les plugins chargés
Entrez le mode de sortie en mode plein écran

Phase 4: Chargement du thème et configuration

// Les fonctions de thème.php sont chargées // La configuration du thème se produit DO_ACTION ('After_SetUp_Theme'); do_action ('init'); // l'initialisation de base complète
Entrez le mode de sortie en mode plein écran

Phase 5: Demandez le traitement

// analyse la demande do_action ('parse_request'); // Endire Endire DO_ACTION ('Send_Headers'); // requête l'analyse et l'exécution do_action ('parse_query'); do_action ('pre_get_posts'); // Modifiez la sélection et le chargement de la question de la requête principale // DO_ACTION ('Template_Redirect');
Entrez le mode de sortie en mode plein écran

Phase 6: Génération de sortie

// Résolution de la hiérarchie du modèle // Inclusion de fichier de modèle do_action ('wp_head'); // dans // contenu génération do_action ('wp_footer'); // Avant // Sortie finale envoyée au navigateur
Entrez le mode de sortie en mode plein écran

Crochets de cycle de vie critiques

// Early Hooks - Plugin / Thème Configuration add_action ('MuPlugins_loaded', 'your_mu_function'); add_action ('plugins_loaded', 'your_plugin_function'); add_action ('after_setup_theme', 'your_theme_setup'); add_action ('init', 'your_init_function'); // Query Hooks - Modify Content Retrieval add_action ('pre_get_posts', 'modify_main_query'); add_action ('parse_query', 'query_modifications'); // Hooks de modèle - Modifier la sortie add_action ('template_redirect', 'redirect_logic'); add_action ('wp_head', 'add_to_head'); add_action ('wp_footer', 'add_to_footer'); // Admin Hooks add_action ('admin_init', 'admin_inialization'); add_action ('admin_menu', 'add_admin_pages');
Entrez le mode de sortie en mode plein écran

2. Système de crochets WordPress

L'architecture du plugin WordPress a expliqué

Voici quelque chose qui pourrait vous épater: les plugins WordPress ne modifient pas réellement les fichiers Core WordPress. Ils ne peuvent pas. Ce serait le chaos avec des mises à jour en remplacement des changements. Au lieu de cela, WordPress utilise ce qu'on appelle un "système de crochet". Pensez-y comme des prises électriques dans toute votre maison. WordPress dit "Hé, si quelqu'un veut faire quelque chose quand je charge l'en-tête, branchez ici!" Et les plugins répondent "Oui! Je veux ajouter du CSS à chaque en-tête de page!"

C'est pourquoi WordPress est si extensible. Des milliers de plugins peuvent tous travailler ensemble sans marcher sur les orteils les uns des autres, car ils se branchent tous sur des points d'extension prédéfinis.

Le génie est dans sa simplicité: WordPress fait son truc, mais à des moments spécifiques, il dit: "Est-ce que quelqu'un veut modifier ces données ou ajouter des fonctionnalités ici?" Si personne ne répond, Word...
[Courte citation de 8% de l'article original]

Loading...