- How to include a PHP file in WordPress
- Why you should choose a relative path and not an absolute/static path
- The WordPress get_template_directory() function
- In case you are using a WordPress child theme
- How to include a PHP file in a WordPress theme
- How to include a PHP file in a WordPress child theme
- Как правильно подключать файлы в WordPress
- include()
- include_once()
- require()
- require_once()
- get_template_part()
- Когда-что использовать
- Похожие посты
- Как правильно подключать стили и cкрипты в дочерней теме WordPress?
- Как изменить robots.txt в мультисайте WordPress
- Как создать AJAX-форму на WordPress без плагинов
How to include a PHP file in WordPress
This little “PHP include” guide, will show you how to include a PHP-file in your WordPress theme (using a relative path). This snippet isn’t so much a “WordPress snippet”, but really just the PHP include function, using WordPress get_template_directoryto get the relative path for the file. Why you should .
This little “PHP include” guide, will show you how to include a PHP-file in your WordPress theme (using a relative path). This snippet isn’t so much a “WordPress snippet”, but really just the PHP include function, using WordPress get_template_directory to get the relative path for the file.
Why you should choose a relative path and not an absolute/static path
When you want to include a PHP file (or image file, HTML file, etc.), it is required to specify a specific path that instructs the webserver, on where the webserver should locate the specific file. There are multiple ways to go about this, such as:
- Using a absolute/static path (not recommended) – specifying the location of a file or directory from the root directory(/).
- Using a relative path (best practice) – the path related to the present working directly(pwd), starting at your current directory and never starts with a “/”.
The WordPress get_template_directory() function
The build-in WordPress function get_template_directory , retrieves the current theme directory by returning an absolute server path (eg: /home/user/public_html/wp-content/themes/my_theme), and not a URI.
In case you are using a WordPress child theme
In case you are using a child theme, the absolute path to the parent theme directory will be returned – and this will not work. If you are using a child theme, then you would have to use the WordPress function: get_stylesheet_directory() instead, to get the absolute path to the child theme directory.
How to include a PHP file in a WordPress theme
In this PHP include example, we are going to use a relative path, using the WordPress build in function: get_template_directory .
How to include a PHP file in a WordPress child theme
In this PHP include example, we are going to use a relative path, using the WordPress build in function: get_stylesheet_directory() .
Как правильно подключать файлы в 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() и обычно использую его один раз в функции
Насколько публикация полезна?
Нажмите на звезду, чтобы оценить!
Средняя оценка 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,…
Разработка сайтов для бизнеса
Если у вас есть вопрос, на который вы не знаете ответ — напишите нам, мы поможем разобраться. Мы всегда рады интересным знакомствам и новым проектам.