kwork banner 468x60kwork banner 728x90kwork banner 930x180jivo banner 468x60jivo banner 728x90jivo banner 930x180etxt banner 468x60etxt banner 728x90etxt banner 930x180

Как правильно подключать файлы в WordPress

В WordPress одна из распространенных проблемных ситуаций — это правильный способ включения внешних файлов.

PHP предлагает четыре (!) Способа сделать это, а WordPress даже предлагает свой вариант.

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

include()

Согласно руководству по PHP: include() будет включать и оценивать указанный файл. Если файл не найден, будет выдано предупреждение PHP.

Проще говоря, это означает, что PHP будет искать файл, который вы пытаетесь включить. Если он найден, он будет добавлен в ваш скрипт в том месте, где вы его объявили.

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

С другой стороны, если вы хотите добавить набор функций или внешний файл в середине существующей функции, вы можете включить его точно в то место, где он вам нужен.

Во-вторых, обратите внимание, что если файл отсутствует, PHP выдаст предупреждение. В зависимости от конфигурации сервера вы можете увидеть это в браузере или в файле записи журнала (или и то, и другое).

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

Наконец, обратите внимание, что когда файл загружается с помощью include(), он будет иметь доступ ко всем переменным, ранее определенным в вашем существующем скрипте.

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

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

include_once()

Согласно руководству по PHP: include_once() будет выполнять то же поведение, что и include(), но не будет включать файл снова, если он уже был включен.

Функция include_once() похожа на include(), но между ними есть некоторые ключевые отличия.

Во-первых, в то время как include_once() во многом работает так же, как include(), она не позволит вам снова включить скрипт. Это означает, что если где-то еще в вашем проекте уже был включен этот внешний файл, второй раз он подключен не будет.

Так в чем преимущество этого? Помимо гарантии того, что скрипт находится только в одном месте, это также гарантирует, что переменные и функции не обязательно будут переопределены. Напомним, что при использовании include() скрипты имеют доступ к функциям и переменным, которые определены перед ними.

Если вы решите определить новый набор переменных или функций в файле, то вы рискуете переопределить функции и переменные файла, подключенного через include(), которые потенциально могут вызвать серьезные проблемы с выполнением вашего код.

require()

Согласно руководству по PHP: require() работает так же, как include(), но выдает фатальную ошибку PHP, если файл не найден.

Файл, подключенный с помощью require() будет выполнять то же действие, что и include(), в части импорта внешнего скрипта в контекст того, над чем вы работаете, но если ему не удается найти файл, он выдаст фатальную ошибка и полностью остановит выполнение.

На каком-то уровне может показаться, что требовать файлы — это правильный путь. В конце концов, зачем вам рисковать, включая что-то, чтобы получить предупреждение о потенциальном сбое в приложении.

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

Не существует жестких правил, определяющих, когда использовать require(), а когда include(). Скорее всего тут нужно просто опираться на здравый смысл.

require_once()

Согласно руководству по PHP: require_once() работает так же, как require(), но не будет включать файл во второй раз, если он уже включен.

Это, вероятно, легче всего понять, поскольку мы рассмотрели последние три функции относительно подробно. Проще говоря, require_once() выполняет те же функции, что и require(), но не будет пытаться снова включить файл, если он уже загружен в ваш скрипт.

get_template_part()

WordPress предлагает функцию get_template_part(), которая является частью собственного API и используется специально для повторного использования разделов или шаблонов кода в вашей теме.

get_template_part( 'loop', 'standard' );

Функция принимает два аргумента:

  • Первый аргумент — это ярлык для шаблона. В приведенном примере это будет «loop».
  • Второй аргумент — это имя шаблона. В приведенном выше примере это будет «standard».

С версии WordPress 5.5.0 принимает третий параметр — переменную, которую можно использовать, чтобы пробрасывать данные в шаблон, например:

get_template_part( 'loop', 'standard', [ 'bgcolor' => 'light-gray', 'areas' => [ 1, 2 ] ] );

Теперь в этом файле можно получить указанные параметры через переменную $args.

Когда-что использовать

При использовании этих функций я советую, в первую очередь, опираться на здравый смысл, а во вторую но чьи-то рекомендации, но если вы все же решите воспользоваться советами, то вот принципы, которые я использую чаще всего:

  • При подключении файлов в functions.php чаще всего я использую require_once()
  • При подключении фронтенд-шаблонов в файлах темы использую get_template_part()
  • При разработке плагинов я почти всегда использую include_once() и обычно использую его один раз в функции
flexbe banner 480x320flexbe banner 728x90flexbe banner 120x600etxt banner 480x320etxt banner 728x90etxt banner 120x600jivo banner 480x320jivo banner 728x90jivo banner 120x600

Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка 5 / 5. Количество оценок: 1

Оценок пока нет. Поставьте оценку первым.

Похожие посты

Как правильно подключать стили и cкрипты в дочерней теме WordPress?

На эту тему написано уже десятки статей, но тема продолжается обсуждаться, а в чатах и на форумах люди снова и снова задают вопросы и сталкиваются с проблемами. Давайте вместе попробуем на примерах разобраться как же правильно подключать стили и скрипты в WordPress. Начнем по порядку. Есть хук wp_enqueue_scripts, который срабатывает в момент подключения в очередь…
Подробнее

Как изменить robots.txt в мультисайте WordPress

WordPress динамически создает robots.txt. Чтобы перезаписать его при обычной установке без использования нескольких сайтов, вы можете просто загрузить статический файл robots.txt на сервер. При установке системы мультисайтов это приведет к перезаписи файла robots.txt для всех сайтов, что не всегда является нужным результатом. В этой заметке мы обсудим, как можно изменить robots.txt для отдельных сайтов мультисайта….
Подробнее

Как создать AJAX-форму на WordPress без плагинов

WordPress имеет достаточно простую методологию обработки Ajax-запросов. Ajax-запросами называют такие запросы, которые происходят без перезагрузки страницы и в результате работа с сайтом становится быстрее и удобнее для конечного пользователя. Заранее оговорюсь, что в репозитории WordPress существуют десятки нормальных плагинов для работы с формами. С помощью них можно настроить поля, их валидацию, содержимое, интегрировать поддержку Ajax,…
Подробнее