wordpress — найпопулярніша безкоштовна платформа для створення сайтів в інтернеті. І свою популярність WordPress заслужив переважно завдяки тому, наскільки легко і просто з ним працювати.
Для того, щоб створити свій сайт на WordPress, не потрібно знатися на коді і знати, як все потроєно. Але якщо ви розробник-початківець або просто досвідчений користувач, і вам цікаво дізнатися, як працює WordPress, тоді ця стаття для вас.
Дивіться також:
- Поради для початківців розробку сайту на WordPress
- Куди вставляти цей код у WordPress? Загальна структура файлів теми
- Як створити дочірню тему WordPress — Правильний спосіб
- Як краще додати свій код у functions.php або створити кастомний плагін на WordPress?
- 8 варіантів створення тестового середовища для розробки на WordPress
- WordPress Codex - цінний помічник розробника
У цьому пості ми розберемося крок за кроком, що відбувається всередині WordPress, коли ви завантажуєте сайт у браузері, і поетапно розпишемо порядок завантаження функцій та файлів WordPress. Поїхали!
Для чого потрібно знати, як працює WordPress?
wordpress - це open-source проект, а значить будь-хто може вивчати його вихідний код і вчитися створювати свої плагіни та шаблони.
Якщо ви знатимете основи того, як працює WordPress під капотом, це допоможе вам поглибити свої знання в розробці. Також це просто пізнавально з погляду того, як, начебто, елементарні речі насправді.
Порядок завантаження WordPress
Отже, ви вбили в адресний рядок браузера URL WordPress-сайту та натиснули Enter. Відбувся резолвінг доменного імені, і ваш браузер звернувся за конкретною IP-адресою до хостинг-сервера із запитом на завантаження сайту.
Що відбувається далі в наступні частки секунди, поки веб-сайт не відобразиться у вікні браузера?
1. Завантаження файлу wp-config.php
Насамперед йде звернення до головного конфігураційного файлу WP-config.php у кореневому каталозі WordPress.
Звідти виходять глобальні змінні для WordPress сайту, а також інформація для підключення до бази даних.
2. Завантаження стандартних констант
Після завантаження wp-config.php WordPress отримує значення стандартних констант. Вони включають таку інформацію як розташування upload-каталогу (wp-content/), максимальний розмір файлу та всі інші константи, прописані в wp-config.php.
3. Завантаження файлу advanced-cache.php
Якщо файл advanced-cache.php є на сайті, WordPress завантажує його на даному етапі. Цей файл є так званим "Вкрапленням" у термінології плагінів WordPress.
Він створюється автоматично, якщо на сайті налаштований один із кеш-плагінів. Цей файл містить конфігураційну інформацію для кешування сайту.
4. Завантаження файлу wp-content/db.php
WordPress дозволяє розробникам створювати свої абстрактні шари БД та завантажувати їх через файл db.php. Як правило, цей файл може використовуватись деякими кеш-плагінами для оптимізації роботи БД.
Тому якщо такий файл існує, він завантажується на цьому етапі.
5. Підключення до MySQL та Бази Даних
Тепер WordPress має достатньо інформації для з'єднання з MySQL сервером і підключення до вказаної в wp-config.php або db.php Базі Даних.
Якщо з якоїсь причини WordPress не вдається підключитися до БД, на екрані ви побачите повідомлення "Error establishing database connection" на білому тлі.
6. Завантажити файл object-cache.php або wp-includes/cache.php
WordPress тепер завантажить файл object-cache.phpякщо такий є. Якщо ні, спробує завантажити файл wp-includes/cache.php. Якщо такого немає, то наступний крок.
7. Завантаження файлу wp-content/sunrise.php
Якщо сайт є частиною Мультисайт-мережі WordPress, буде завантажено файл wp-content/sunrise.php.
8. Завантаження бібліотеки локалізації
Тепер завантажується файл wp-includes/l10n.php для увімкнення системи локалізації. На цьому етапі буде враховано вибрану мову, регіональні параметри та файли для перекладу.
9. Завантаження Multisite-плагінів
Знову ж таки, якщо сайт знаходиться в мережі Wordpress Multisite, тепер будуть завантажені Multisite-плагіни.
10. Виконання функції "muplugins_loaded"
Виконується функція (або термінології WordPress - Action) muplugins_loaded для мережевих плагінів Wordpress Multisite.
11. Завантаження всіх активованих плагінів
WordPress тепер завантажить решту активованих плагінів на сайті.
Список активованих плагінів зберігається в базі даних у таблиці wp_options в полі active_plugins.
Таким чином, на етапі завантаження ігноруються всі встановлені, але неактивні плагіни.
12. Завантаження файлу pluggable.php
Файл pluggable.php зберігає функції, які можуть бути перевизначені WordPress-плагінами.
WordPress перевірить, чи визначено функції файлу pluggable.php якимись іншими активними плагінами. Якщо ні, будуть визначені функції pluggable.php.
13. Виконання функції "plugins_loaded"
Аналогічно muplugins_loaded для плагінів wordpress Multisite, тепер буде виконано функцію plugins_loaded. Ця функція дозволяє розробникам прив'язати власні функції і виконати їх після завантаження всіх активних плагінів WordPress.
14. Завантаження Rewrite Rules
Буде завантажено правила перевизначення посилань.
Іншими словами, буде завантажено SEO-зрозумілі постійні посилання замість посилань виду /?p=10467
15. Ініціалізація $wp_query, $wp_rewrite, $wp
Тепер WordPress завантажить такі об'єкти:
- $ WP_Query: Глобальна змінна, яка містить клас WP_Query. Вона повідомляє WordPress, що контент запитується у типовому для WordPress query-форматі.
- $wp_rewrite: Глобальна змінна, яка містить клас WP_Rewrite. Містить Rewrite-правила та функції для перевизначення URL під час завантаження контенту.
- $wp: Глобальна змінна, яка містить клас WP. Містить функції, які будуть псувати ваш запит і завантажувати головну чергу (main query).
16. Виконання функції "setup_theme"
WordPress виконує функцію setup_theme, необхідний на етапі перед завантаженням теми оформлення.
17. Завантаження файлу functions.php дочірньої теми
Файл functions.php містить набір функцій та інструкцій, застосовних кожної теми оформлення індивідуально.
Якщо ви використовуєте дочірню тему, то на цьому етапі буде завантажено functions.php саме дочірньої теми.
В іншому випадку буде завантажено functions.php від основної активної теми оформлення.
18. Завантаження файлу functions.php батьківської теми
Якщо використовується дочірня тема, після завантаження functions.php з дочірньої теми буде завантажено functions.php основної батьківської теми.
19. Виконання функції "after_setup_theme"
Функція after_setup_theme виконується після того, як WordPress визначився з тим, яка тема оформлення активна на даний момент і завантажив її файл functions.php.
Це перша дія, що застосовується до активної теми.
20. Налаштування поточного User Object
Тепер WordPress завантажує об'єкт поточного користувача. Це дозволяє WordPress зрозуміти, які запити можуть бути виконані надалі відповідно до поточної ролі користувача та його привілеїв.
21. Виконання функції "init"
На даному етапі WordPress завантажив всю необхідну інформацію для роботи. Тепер виконується функція ініціалізації.
Ця функція дозволяє розробникам додавати свій код, який має бути виконаний одразу після того, як WordPress завантажив та виконав усі попередні пункти.
22. Виконання функції "widget_init"
Функція widget_init дозволяє розробникам реєструвати віджети та виконувати код, необхідний для роботи віджетів.
23. Виконання функції "wp()"
Тепер WordPress викликає функцію wp() з файлу wp-includes/functions.php.
Ця функція задає глобальні змінні $wp, $ WP_Query, $wp_the_query і далі викликає $wp->main.
24. Парсинг запитів
У WordPress тепер є вся потрібна інформація для обробки запитів користувача. Для початку йде перевірка на rewrite-правила перевизначення.
Потім завантажуються всі фільтри, action-хуки та надсилається запит на завантаження заголовок-Частини сайту.
25. Виконання запитів
Якщо за заданим запитом контент не виявлено, WordPress визначає змінну є_404.
Інакше WordPress продовжує завантаження інших запитів.
- Буде виконано WP_Query-> get_posts ()
- Далі запускається функція DO_ACTION_REF_ARRAY "pre_get_posts' для об'єкта WP_Query.
- Тепер виконується apply_filters для зачистки запитів та деяких фінальних перевірок.
- Тепер завантажуються самі записи (пости) із БД, застосовуються фільтри posts_results и пости.
Етап виконання запитів закінчено, і WordPress видає завантажені записи.
26. Виконання функції template_redirect
Виконується функція шаблон_перенаправлення перед тим, як WordPress визначає, який шаблон завантажувати.
27. Завантаження Feed-шаблону для RSS
Якщо контент, що запитується, відноситься до RSS-feed, WordPress завантажує відповідний Feed-шаблон.
28. Завантаження основного шаблону (теми)
Нарешті!
WordPress починає завантажувати файли поточної активної теми відповідно до її ієрархії.
Як правило, все починається з файлу, який містить головний цикл (WordPress Loop).
29. Виконання функції "shutdown"
Насамкінець перед завершенням виконання всього PHP-коду WordPress запускає останню функцію вимикання.
На цьому етапі робота WordPress виконана та закінчена.
30. Завантаження сторінки сайту у браузері
Весь підготовлений PHP-код з боку WordPress передається на виконання веб-серверу хостингу.
Веб-сервер обробляє PHP-код і передає в браузер користувачеві готовий HTML-код разом зі стилями та скриптами (CSS та JavaScript) для завантаження самої сторінки.
Браузер здійснює рендеринг цієї сторінки за допомогою отриманого від веб-сервера HTML, CSS і JavaScript, і в результаті ви бачите (візуально) запитану сторінку сайту.
Підсумки
Отже, ми детально розписали 30 кроків, які необхідні WordPress для завантаження сайту. Ну окей, останній 30-й пункт виконується вже без участі WordPress, але все ж таки.
А тепер подумайте!
Всі ці 30 пунктів від моменту натискання Enter в адресному рядку браузера до завантаження сторінки відбуваються буквально за лічені мілісекунди! Фантастика, правда?
Коментарі до запису: 1
Вітання! А чи є можливість на фінальному етапі перед закінченням роботи php коли спрацьовує хук shutdown — отримати доступ до всього вмісту HTML сторінки для фінальної правки. Наприклад, мені потрібно за певних умов підправити посилання тощо?