Wordpress подключить файл php
Функция по сути подключает любой PHP-файл с доступной в нём средой WordPress, а также глобальными переменными $posts , $post , $wp_did_header , $wp_query , $wp_rewrite , $wpdb , $wp_version , $wp , $id , $comment , $user_ID .
Кроме того, массив $wp_query->query_vars , если существует, будет разобран на отдельные переменные php-функцией extract() . То есть $wp_query->query_vars[ 'param1' ] превратится в $param1 . Подробнее во втором примере. И ещё кое-что, параметр поиска $wp_query->query_vars[ 's' ] также будет очищен функцией esc_attr().
Если вам интересно лучше разбираться, как устроены файлы тем в WordPress и как работает их иерархия, то рекомендую посмотреть этот видеоурок.
Функция сама по себе ничего не возвращает.
Параметры
- true – в этом случае файл будет подключаться PHP-функцией require_once() ,
- false – будет подключаться функцией require() .
Пример 1. Подключаем файл из той же директории
В этом примере предположим, что мы используем функцию load_template() в каком-либо файле, находщемся в папке с темой. И подключим другой файл, который находится в этой же папке.
Попробуем сделать то же самое, но при помощи магической константы __DIR__ .
Пробуем сделать то же самое, но при помощи функции get_stylesheet_directory().
Пример 2. Подключаем файл и передаём в него параметры
Способ 1. Передав новый аргумент в параметры запроса
В этом примере мы как раз-таки записываем произвольную переменную в массив $wp_query->query_vars , который при подключении файла будет разобран на отдельные переменные.
Вставляем этот код внутри подключаемого файла шаблона:
Способ 2. Используя массив $args
Этот аргумент функции появился только в версии WordPress 5.5, поэтому раньше приходилось довольствоваться первым способом.
Вставляем этот код внутри подключаемого файла шаблона:
Пример 3. Проверяем, что файл существует
Дело в том, что функция loa d_template() сразу же закидывает путь, который мы передаём в неё, в функции require() или require_once() , которые, в отключие от include() и include_once() будут выдавать PHP-ошибку 500 при попытке подключения несуществующего файла.
Многие разработчики любят язык программирования PHP за его расширяемость и гибкость. Но в этом языке есть некоторые вещи, которые часто сбивают с толку. Самым ярким примером здесь выступает правильный способ подключения внешних файлов. Для этого в PHP есть аж четыре способа подключения файлов, а WordPress даже предлагает свой собственный вариант.
В сегодняшней статье мы рассмотрим четыре способа, которые есть в PHP для подключения файлов, а также рассмотрим способы подключения файлов и шаблонов, которые есть в WordPress.
Способы подключения файлов в PHP
Подключение файлов в PHP можно охарактеризовать как действие по добавлению другого файла в содержимое текущего файла. Это можно представить как импорт файла; в результате файлы объединяются, а затем интерпретируются как один файл.
Это выражение включает и выполняет указанный файл. Если файл не найден, появится предупреждение PHP.
Проще говоря, это означает, что PHP будет искать файл, который вы пытаетесь включить. Если он будет найден, его содержимое добавится в скрипт в том месте, где вы объявили эту конструкцию.
ВАЖНО: если вы пишете функции, которые зависят от функций в другом файле, тогда убедитесь, что этот файл подключается первым. Если вам нужно добавить набор функций или внешний файл в середине существующей функции, тогда вы можете включить его в нужном месте.
Обратите внимание, что если подключаемый файл отсутствует, PHP выдаст предупреждение об ошибке. В зависимости от конфигурации сервера ошибка будет либо отображаться в браузере, либо будет записана в файл лога (журнал ошибок), либо оба варианта. Предупреждение в данном случае не считается фатальной ошибкой, и, как правило, не останавливает выполнение скрипта, но учтите, что часть ваших функций может работать некорректно.
Когда файл подгружается с помощью include() , он будет иметь доступ ко всем переменным, которые были определены в текущем скрипте.
Эта конструкция ведет себя так же, как и include() , но если другой файл уже был подключен, он больше не будет подключаться. Т.е., другой скрипт подключается в данном случае только один раз.
Преимущество данного способа подключения заключается в том, что помимо гарантии того, что скрипт будет включен только в одном месте, он также гарантирует, что переменные и функции не обязательно будут переопределены. Если вы решите определить новый набор переменных или функций в файле, включить его в другой скрипт и не использовать include_once() , тогда вы рискуете переопределить функции и переменные, что может вызвать серьезные проблемы с выполнением кода.
Зависимое подключение файлов в PHP
Зависимое подключение файлов аналогично включению файлов, но оно имеет ряд собственных последствий, связанных с ошибками и безопасностью.
В данном случае подразумевается, что зависимое подключение настаивает на том, что скрипту необходим определенный файл для выполнения.
Эта конструкция схожа с include() , но она выдает фатальную ошибку PHP, если файл не будет найден. Она будет выполнять то же действие, что и include() , т.е., импортировать внешний скрипт в контекст текущего файла, но если функция не сможет найти другой файл, она выдаст ошибку и полностью остановит выполнение скрипта. С помощью include() вы получите предупреждение, и скрипт сможет продолжить работу, а здесь ваш скрипт не будет дальше продолжать свое выполнение.
Эта конструкция выполняет то же самое, что и require() , но она не будет подключать файл во второй раз, если он уже был подключен.
Рекомендации по функциям подключения в PHP:
- Конструкция require_once() лучше подходит для больших сайтов, так как на более низком уровне выполняет дополнительную работу, которая влияет на безопасность и производительность.
- Конструкция include_once() быстрее и считается приемлемой для небольших сайтов
- Не существует жестких правил, когда использовать рассмотренные конструкции, но вы должны исходить из собственных требований и условий.
Подключение файлов в WordPress
Если вам нужно подключать другие файлы в WordPress, есть другой, более эффективный способ, чем использование include() и require() .
Допустим, у вас есть определенный шаблон, который вам нужно подключить в другие шаблоны активной темы. Чтобы подключить другой шаблон, вы можете использовать что-то вроде этого:
Но это не является лучшей практикой в WordPress.
Вот функция, которую лучше использовать в WordPress: get_template_part()
Эта функция является частью API движка и используется специально для повторного использования разделов, шаблонов или кода (кроме блоков для хедера, футера и боковой панели) в вашей теме. Для этого вам нужно просто добавить в нужном шаблоне код вида:
Функция принимает два аргумента:
- Первый аргумент – это слаг (slug) для шаблона. В приведенном выше примере слаг не используется.
- Второй аргумент – это имя шаблона. В приведенном выше примере это будет shablon . В результате подключится файл shablon.php , который находится на одном уровне с текущим файлом (в котором происходит подключение)
Придерживаясь примера выше, вы можете подключать другие шаблоны в нужный шаблон, например в footer.php , index.php , single.php , archives.php и т.д.
В WordPress есть функция подключения, которая является другим представлением конструкции require_once() – это функция load_template() .
Рассмотрим еще одну важную особенность тем WordPress. Как вы уже успели заметить, некоторые из файлов шаблона (к примеру, header.php) не привязаны к определенным страницам или типам страниц. Когда же они используются? WordPress включает в себя группу функций, выполняющих подключение различных компонентов страницы:
Изменение футера
Следующий шаг редактирования домашней страницы заключается в изменении футера. Нам необходимо, чтобы в нем был отображен список всех страниц верхнего уровня блога. Мы знаем, что get_footer выполняет поиск файла, имеющего имя footer.php. Для того, чтобы вызвать собственный файл футера, необходимо отыскать следующую конструкцию в home.php:
и заменить ее на:
Тем самым мы переопределим стандартный вид футера для главной страницы. Однако, этим дело не ограничивается. Теперь нам надо создать файл footer-homepage.php и добавить в него некоторый код, который может иметь, к примеру, следующий вид:
На 13 строке появляется thematic_footer: он управляет отображением текста в футере, который можно задать в панели настроек Thematic. Подробнее о создании произвольных панелей настроек мы сможем узнать из последующих разделов.
Для того, чтобы вставить список страниц, необходимо использовать функцию wp_list_pages. Мы могли бы сразу добавить ее в наш новый файл футера и она бы отлично работала, но мы пойдем несколько иным путем. Спрячем объявление wp_list_pages в файл functions.php. Указанный файл выступает вместилищем всей функциональности, которую вы добавляете к своей дочерней теме. Сохранив генератор списка страниц в файле functions.php, мы можем быть уверены в том, что если нам понадобится вызвать его в других частях шаблона, мы сможем это сделать легко и быстро. Откройте файл functions.php и добавьте к нему свою первую пользовательскую функцию:
Теперь, когда мы создали нашу функцию, вызвать ее из футера можно следующим образом:
Результат можно будет увидеть в браузере. Для того, чтобы список страниц имел более интересное представление, к нему можно добавить стили CSS. Вот лишь некоторые из полезных стилей:
В следующем разделе мы рассмотрим еще один мощный механизм WordPress, позволяющий решать разнообразные задачи: хуки и фильтры.
Данная статья будет интересна тем, кто сам своими руками вносит правки в сою тему, которая установлена на их сайте, что работает на WordPress. Если Вы не просто меняете стили, а уже серьезно разбираетесь в структуре и функциях WordPress то, я думаю, Вам очень понравится функция, о которой я расскажу.
Рано или поздно, внося изменения или создавая свою новую тему, Вы столкнетесь с тем, что нужно будет подключить файл внутри темы. Например, у Вас есть файл index.php, отвечающий за вывод главной страницы. В какой-то момент, вы решили добавить туда какую-то функцию или условие. Код с этой функцией очень большой и Вы решили его добавить в отдельный файл. Или Вы решили не писать код цикла в каждом файле где он встречается, а он бывает в большей половине файлов темы Вордпресса. index.php, search.php, category.php, archive.php и тд. Чтобы каждый раз не повторять один и тот же код, вы можете его добавить в отдельный файл, а уже его и подключить внутри тех, где должен быть цикл.
Многие для подключения файлов используют PHP функцию include(). Не буду лукавить, я и сам по началу тоже ее использовал. Но набирая опыт и все больше изучая материал я открыл очень полезную функцию, которой и поделюсь с Вами.
get_template_part() - функция WordPress, которая применяется для подключения файлов или частей темы в самой теме. Давайте рассмотрим пример, как можно ее применить.
Например, как я описывал Выше вы вывели цикл в отдельный файл и назвали его content.php. Чтобы его подключить в нужном месте файла, где это нужно сделать добавляется такой вызов функции:
Так Вы подключаете созданный content.php, лежащий в той же папке что и файл где подключаете. Как видите указывается только название без расширения.
Теперь давайте рассмотрим случай, когда в названии присутствует дефис. Например файл называется content-loop.php. Так же в одних скобках указать нельзя, нужно немного изменить.
Вам нужно просто через запятую, в кавычках указать второе слово после дефиса. Сложного, по сути, тоже ничего нет.
Бывает и так, что нужно подключить файл, который лежит в отдельной папке внутри темы. Например, я часто использую вложенные папки для файлов, которые подключаю, чтобы они не мешались с основными файлами темы. Например, что файл content.php лежит в папке inc, которая расположена в папке с темой. Тогда, подключение выглядит следующим образом:
Ну или для content-loop.php:
Вот в принципе и все. Хочу лишь добавить очевидную вещь, вдруг кто не знает. Данные примеры показаны для вставки в ту часть кода, что выводится в PHP. Если же в Вашей теме преобладает HTML, то функцию нужно заключать в PHP теги.
Данная функция намного удобнее include(). В ней не нужно указывать путь к папке с темой. Я рекомендую использовать get_template_part() при создании тем и надеюсь, что материал данной статьи Вам поможет.
На этом все, спасибо за внимание. 🙂
Если Вам был полезным мой труд, можете финансово поддержать сайт или отключить блокировщик рекламы, что займет 2 минуты :)
Читайте также: