Как подключать файлы и шаблоны в WordPress
Многие разработчики любят язык программирования PHP за его расширяемость и гибкость. Но в этом языке есть некоторые вещи, которые часто сбивают с толку. Самым ярким примером здесь выступает правильный способ подключения внешних файлов. Для этого в PHP есть аж четыре способа подключения файлов, а WordPress даже предлагает свой собственный вариант.
В сегодняшней статье мы рассмотрим четыре способа, которые есть в PHP для подключения файлов, а также рассмотрим способы подключения файлов и шаблонов, которые есть в WordPress.
Способы подключения файлов в PHP
Подключение файлов в PHP можно охарактеризовать как действие по добавлению другого файла в содержимое текущего файла. Это можно представить как импорт файла; в результате файлы объединяются, а затем интерпретируются как один файл.
include()
Это выражение включает и выполняет указанный файл. Если файл не найден, появится предупреждение PHP.
Проще говоря, это означает, что PHP будет искать файл, который вы пытаетесь включить. Если он будет найден, его содержимое добавится в скрипт в том месте, где вы объявили эту конструкцию.
ВАЖНО: если вы пишете функции, которые зависят от функций в другом файле, тогда убедитесь, что этот файл подключается первым. Если вам нужно добавить набор функций или внешний файл в середине существующей функции, тогда вы можете включить его в нужном месте.
Обратите внимание, что если подключаемый файл отсутствует, PHP выдаст предупреждение об ошибке. В зависимости от конфигурации сервера ошибка будет либо отображаться в браузере, либо будет записана в файл лога (журнал ошибок), либо оба варианта. Предупреждение в данном случае не считается фатальной ошибкой, и, как правило, не останавливает выполнение скрипта, но учтите, что часть ваших функций может работать некорректно.
Когда файл подгружается с помощью include()
, он будет иметь доступ ко всем переменным, которые были определены в текущем скрипте.
include_once()
Эта конструкция ведет себя так же, как и include()
, но если другой файл уже был подключен, он больше не будет подключаться. Т.е., другой скрипт подключается в данном случае только один раз.
Преимущество данного способа подключения заключается в том, что помимо гарантии того, что скрипт будет включен только в одном месте, он также гарантирует, что переменные и функции не обязательно будут переопределены. Если вы решите определить новый набор переменных или функций в файле, включить его в другой скрипт и не использовать include_once()
, тогда вы рискуете переопределить функции и переменные, что может вызвать серьезные проблемы с выполнением кода.
Зависимое подключение файлов в PHP
Зависимое подключение файлов аналогично включению файлов, но оно имеет ряд собственных последствий, связанных с ошибками и безопасностью.
В данном случае подразумевается, что зависимое подключение настаивает на том, что скрипту необходим определенный файл для выполнения.
require()
Эта конструкция схожа с include()
, но она выдает фатальную ошибку PHP, если файл не будет найден. Она будет выполнять то же действие, что и include()
, т.е., импортировать внешний скрипт в контекст текущего файла, но если функция не сможет найти другой файл, она выдаст ошибку и полностью остановит выполнение скрипта. С помощью include()
вы получите предупреждение, и скрипт сможет продолжить работу, а здесь ваш скрипт не будет дальше продолжать свое выполнение.
require_once()
Эта конструкция выполняет то же самое, что и require()
, но она не будет подключать файл во второй раз, если он уже был подключен.
Рекомендации по функциям подключения в PHP:
- Конструкция
require_once()
лучше подходит для больших сайтов, так как на более низком уровне выполняет дополнительную работу, которая влияет на безопасность и производительность. - Конструкция
include_once()
быстрее и считается приемлемой для небольших сайтов - Не существует жестких правил, когда использовать рассмотренные конструкции, но вы должны исходить из собственных требований и условий.
Подключение файлов в WordPress
Если вам нужно подключать другие файлы в WordPress, есть другой, более эффективный способ, чем использование include()
и require()
.
Допустим, у вас есть определенный шаблон, который вам нужно подключить в другие шаблоны активной темы. Чтобы подключить другой шаблон, вы можете использовать что-то вроде этого:
include_once( 'shablon.php' );
Но это не является лучшей практикой в WordPress.
Вот функция, которую лучше использовать в WordPress: get_template_part()
Эта функция является частью API движка и используется специально для повторного использования разделов, шаблонов или кода (кроме блоков для хедера, футера и боковой панели) в вашей теме. Для этого вам нужно просто добавить в нужном шаблоне код вида:
get_template_part ('shablon');
Функция принимает два аргумента:
- Первый аргумент – это слаг (slug) для шаблона. В приведенном выше примере слаг не используется.
- Второй аргумент – это имя шаблона. В приведенном выше примере это будет
shablon
. В результате подключится файлshablon.php
, который находится на одном уровне с текущим файлом (в котором происходит подключение)
Придерживаясь примера выше, вы можете подключать другие шаблоны в нужный шаблон, например в footer.php
, index.php
, single.php
, archives.php
и т.д.
В WordPress есть функция подключения, которая является другим представлением конструкции require_once()
– это функция load_template()
.
Ее синтаксис выглядит следующим образом:
load_template( $_template_file, $require_once );
$_template_file
: путь к файлу, который нужно подключить.$require_once
:true
– будет подключать файл с помощьюrequire_once
,false
– с помощьюrequire
Пример:
load_template( get_template_directory() . '/shablon.php', true );
Вот и все на сегодня. Спасибо за внимание!