WordPress load php files

Содержание
  1. WordPress. Порядок загрузки страницы
  2. 1. Загрузка файла wp-load.php
  3. 2. Загрузка файла wp-config.php
  4. 3. Загрузка файла wp-settings.php
  5. 4. Загрузка файла advanced-cache.php
  6. 5. Загрузка файла wp-content/db.php
  7. 6. Подключение к базе данных
  8. 7. Загрузка файла object-cache.php или wp-includes/cache.php
  9. 8. Загрузка файла wp-content/sunrise.php
  10. 9. Загрузка библиотеки локализации
  11. 10. Загрузка must use плагинов
  12. 11. Запуск события muplugins_loaded
  13. 12. Загрузка всех активированных плагинов
  14. 13. Загрузка файла pluggable.php
  15. 14. Запуск события plugins_loaded
  16. 15. Загрузка Rewrite Rules
  17. 16. Инициализация $wp_query, $wp_rewrite, $wp
  18. 17. Запуск события setup_theme
  19. 18. Загрузка файла functions.php дочерней темы
  20. 19. Загрузка файла functions.php родительской темы
  21. 20. Запуск события after_setup_theme
  22. 21. Настройка текущего пользователя
  23. 22. Запуск события init
  24. 23. Запуск события widget_init
  25. 24. Выполнение функции wp()
  26. 25. Запуск события template_redirect
  27. 26. Загрузка feed-шаблона для RSS
  28. 27. Загрузка основного шаблона (темы)
  29. 28. Запуск события shutdown
  30. Proper way to include PHP files in WordPress theme
  31. 5 Answers 5

WordPress. Порядок загрузки страницы

Итак, пользователь набрал в адресной строке браузера URL WordPress-сайта и нажал Enter. Произошел резолвинг доменного имени, и браузер обратился по конкретному IP-адресу к хостинг-серверу с запросом на загрузку сайта. Что происходит дальше в последующие доли секунды, пока сайт не отобразится в окне браузера?

1. Загрузка файла wp-load.php

Все начинается с загрузки файла wp-load.php в корневом каталоге сайта.

2. Загрузка файла wp-config.php

Это главный конфигурационный файл, содержит информацию для подключения к базе данных и устанавливает некторые константы.

3. Загрузка файла wp-settings.php

Установка значений констант WP_MEMORY_LIMIT , WP_MAX_MEMORY_LIMIT , WP_DEBUG , SCRIPT_DEBUG , WP_CONTENT_DIR , WP_CACHE и других.

4. Загрузка файла advanced-cache.php

Загрузка advanced-cache.php , если этот файл существует. В терминологии плагинов WordPress этот файл является так называемым «вкраплением». Он создается автоматически, если на сайте установлен один из кеш-плагинов. Этот файл содержит конфигурационную информацию для работы кеширования.

Читайте также:  Ошибка при инициализации java runtime environment adobe animate

5. Загрузка файла wp-content/db.php

WordPress позволяет разработчикам создавать свои абстрактные слои БД и загружать их через файл db.php . Как правило, этот файл используется кеш-плагинами для оптимизации работы БД. Поэтому, если такой файл существует, он загружается на этом этапе.

6. Подключение к базе данных

Соединение с сервером MySQL и подключение к указанной в wp-config.php или db.php базе данных. Если по какой-то причине WordPress не удается подключиться к БД — будет выдано сообщение «Error establishing database connection».

7. Загрузка файла object-cache.php или wp-includes/cache.php

Загрузка файла object-cache.php , если такой есть. Если нет, попытка загрузить файл cache.php в директории wp-includes . Если и этого файла нет, то следующий шаг.

8. Загрузка файла wp-content/sunrise.php

Если сайт является частью сети (режим Multisite), то будет загружен файл wp-content/sunrise.php .

9. Загрузка библиотеки локализации

Загрузка файла wp-includes/l10n.php для включения системы локализации. На данном этапе будет учтен выбранный язык, региональные параметры и файлы для перевода.

10. Загрузка must use плагинов

Загрузка обязательных к использованию плагинов. Это плагины, которые устанавливаются в специальную папку mu-plugins и которые всегда активны для сайта и сайтов сети.

11. Запуск события muplugins_loaded

Т.е. будет вызвана функция do_action() с параметром muplugins_loaded . Как следствие — будут вызваны все функции, привязанные к этому событию с помощью add_action() .

12. Загрузка всех активированных плагинов

Список активированных плагинов хранится в таблице wp_options базы данных, имя опции — active_plugins . Таким образом на этапе загрузки игнорируются все установленные, но неактивные плагины.

13. Загрузка файла pluggable.php

Файл pluggable.php хранит функции, которые могут быть переопределены WordPress-плагинами. WordPress проверит, определены ли функции из файла pluggable.php какими-то другими активными плагинами. Если нет, будут определены функции из pluggable.php .

14. Запуск события plugins_loaded

Т.е. будет вызвана функция do_action() с параметром plugins_loaded . Как следствие — будут вызваны все функции, привязанные к этому событию с помощью add_action() .

15. Загрузка Rewrite Rules

Будут загружены правила преобразования ссылок. Другими словами, на сайте все ссылки будут search engine friendly, вместо ссылок вида www.server.com/?p=12345

16. Инициализация $wp_query, $wp_rewrite, $wp

Инициализация глобальных переменных:

  • $wp_query — содержит экземпляр класса WP_Query
  • $wp_rewrite — содержит экземпляр класса WP_Rewrite
  • $wp — содержит экземпляр класса WP

17. Запуск события setup_theme

Т.е. будет вызвана функция do_action() с параметром setup_theme . Как следствие — будут вызваны все функции, привязанные к этому событию с помощью add_action() .

18. Загрузка файла functions.php дочерней темы

Файл functions.php содержит набор функций, применимых для каждой темы оформления индивидуально. При использовании дочерней темы, на на данном этапе будет загружен functions.php именно дочерней темы.

19. Загрузка файла functions.php родительской темы

Если используется дочерняя тема, то после загрузки functions.php из дочерней темы будет загружен functions.php родительской темы.

20. Запуск события after_setup_theme

Событие запускается после того, как WordPress определился с тем, какая тема оформления активна на данный момент, и загрузил ее файл functions.php .

21. Настройка текущего пользователя

Теперь WordPress загружает объект текущего пользователя. Это позволяет понять, какие запросы могут быть выполнены в дальнейшем в соответствии с текущей ролью пользователя и его привилегиями.

22. Запуск события init

На данном этапе WordPress загрузил уже все необходимое для работы. Это самое популярное событие у разработчиков — ядро загружено, плагины и тема активированны, пользователь авторизован, но на экран еще ничего не выведено.

23. Запуск события widget_init

Событие позволяет регистрировать виджеты и выполнять код, необходимый для их работы.

24. Выполнение функции wp()

Теперь WordPress вызывает функцию wp() из файла wp-includes/functions.php . Эта функция устанавливает основной запрос, т.е. среду WordPress.

Посмотрим на код, как устанавливается среда WordPress:

function wp($query_vars = '')  global $wp, $wp_query, $wp_the_query; $wp->main($query_vars); if (!isset($wp_the_query))  $wp_the_query = $wp_query; > >
class WP  /*. */ public function main($query_args = '')  $this->init(); // устанавливает текущего пользователя $this->parse_request($query_args); // разбирает указанные параметры запроса и параметры URL (ЧПУ) $this->send_headers(); // устанавливает header() заголовки $this->query_posts(); // получает записи по параметрам запроса $this->handle_404(); // выставляет статус 404, если записей по запросу не найдено // устанавливает глобальные переменные: $query_string, $posts, $post, $request, $more, $single, $authordata $this->register_globals(); // фильтр среды WordPress после того, как она была установлена do_action_ref_array('wp', array(&$this)); > /*. */ >

Фильтр request срабатывает в конце метода WP::parse_request() , позволяя изменить свойство WP::query_vars , которое содержит переменные запроса, используемые в методе WP::query_posts() .

Фильтр parse_request срабытывает в конце метода WP::parse_request() , сразу после фильтра request . В фильтр передается экземпляр класса WP по ссылке, так что можно изменить не только переменную класса $query_vars , но и другие переменные.

Фильтр pre_get_posts срабатывает абсолютно для всех запросов, не только для основного. Для основного запроса (из кода выше) он срабатывает во время вызова метода WP::query_posts() , т.е. после request и parse_request .

Фильтр wp срабытывает в конце метода WP::main() , в этот момент записи уже получены. В фильтр передается экземпляр класса WP по ссылке. Это самое раннее событие, когда работают условные теги.

25. Запуск события template_redirect

Событие происходит прямо перед тем, как WordPress определяет, какой шаблон должен быть использован.

26. Загрузка feed-шаблона для RSS

Если запрашиваемый контент относится к RSS-feed, WordPress загружает соответствующий feed-шаблон.

27. Загрузка основного шаблона (темы)

WordPress начинает загружать файлы текущей активной темы в соответствии с ее иерархией. Как правило, все начинается с файла, который содержит главный цикл.

28. Запуск события shutdown

В самом конце, перед завершением исполнения всего PHP-кода WordPress запускает последнее событие shutdown . На этом этапе работа WordPress закончена.

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

  • 1С:Предприятие (31)
  • API (29)
  • Bash (43)
  • CLI (100)
  • CMS (139)
  • CSS (50)
  • Frontend (75)
  • HTML (66)
  • JavaScript (150)
  • Laravel (72)
  • Linux (147)
  • MySQL (76)
  • PHP (125)
  • React.js (66)
  • SSH (27)
  • Ubuntu (68)
  • Web-разработка (509)
  • WordPress (73)
  • Yii2 (69)
  • БазаДанных (95)
  • Битрикс (66)
  • Блог (29)
  • Верстка (43)
  • ИнтернетМагаз… (84)
  • КаталогТоваров (87)
  • Класс (30)
  • Клиент (27)
  • Ключ (28)
  • Команда (69)
  • Компонент (60)
  • Конфигурация (62)
  • Корзина (32)
  • ЛокальнаяСеть (28)
  • Модуль (34)
  • Навигация (31)
  • Настройка (140)
  • ПанельУправле… (29)
  • Плагин (33)
  • Пользователь (26)
  • Практика (99)
  • Сервер (74)
  • Событие (27)
  • Теория (105)
  • Установка (66)
  • Файл (47)
  • Форма (58)
  • Фреймворк (192)
  • Функция (36)
  • ШаблонСайта (68)

Источник

Proper way to include PHP files in WordPress theme

When I review other developers themes I never stumble across a batch of «include() statements, so I believe I must be missing some standard method of performing these includes.

You may be interested to know common mistakes made in WP Theme Development, see this blog post: scriptbaker.com/common-mistakes-in-wordpress-theme-development

5 Answers 5

You can follow any method. But I suggest you to use require to include any file.

_s ( aka underscores ) which is theme starter kit and default themes of WordPress such as TwentyFourteen, TwentyThirteen, etc are using require to include files.

See sample code used in TweentyFourteen theme.

require get_template_directory() . '/inc/template-tags.php'; 

If you are doing it for Child theme you need to use stylesheet_directory instead of template_ e.g. require get_stylesheet_directory() . ‘/folder/file.php’;

If you are using child theme and need to load php file from child theme folder, you should use get_stylesheet_directory() function. get_stylesheet_directory()

Include will include the file content

Require will throw an error if file not found.

Include_once .. check if included if no then include

Require_once same as include_once but with error if file not found

So if you are the one who wrote the file you should include .. not include_once.

We usually, use include for unnecessary files. Require for important files. For example footer.php will not make script stop .. but core.php is important.

Why not put all the included files into a single file (library.php) and include that in your theme? By doing this if you need to change something you can change just one file. Also you can use conditional tags like if..else within the library.php to include specific files for certain pages.

I would also suggest that you use require_once() for important files so you get an error if the file is missing. If there is no error when a file is missing then functions that use that file will through multiple errors.

Also as @Othman has suggested you can use include for less important files.

Another method would be assigning a file and include it into your functions.php to avoid redundancy

For Example my functions.php in my root folder where i get my files from the /inc dir and the functions dir/

include('inc/assets.php'); //Where i register all css and js include('functions/index.php'); // Where are all functions are registered 
assets (dir) - css (dir) - images (dir) - js (dir) inc (dir) template-parts (dir) - footer (dir) - header (dir) - navigation (dir) - page (dir) - post (dir) 404.php archive.php comments.php footer.php front-page.php functions.php header.php index.php page.php README.txt rtl.css screenshot.png search.php searchform.php sidebar.php single.php style.css 

Источник

Оцените статью