Wordpress подключить файл php

Обновлено: 05.07.2024

Функция по сути подключает любой 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. Если Вы не просто меняете стили, а уже серьезно разбираетесь в структуре и функциях WordPress то, я думаю, Вам очень понравится функция, о которой я расскажу.

Рано или поздно, внося изменения или создавая свою новую тему, Вы столкнетесь с тем, что нужно будет подключить файл внутри темы. Например, у Вас есть файл index.php, отвечающий за вывод главной страницы. В какой-то момент, вы решили добавить туда какую-то функцию или условие. Код с этой функцией очень большой и Вы решили его добавить в отдельный файл. Или Вы решили не писать код цикла в каждом файле где он встречается, а он бывает в большей половине файлов темы Вордпресса. index.php, search.php, category.php, archive.php и тд. Чтобы каждый раз не повторять один и тот же код, вы можете его добавить в отдельный файл, а уже его и подключить внутри тех, где должен быть цикл.

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

Плагины и Шаблоны для WordPress

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 минуты :)

Читайте также: