Wordpress подключить функции к стороннему файлу
Существует несколько способов добавления пользовательского JavaScript в WordPress. В этом руководстве мы рассмотрим каждый из них.
Заключение
Использование плагина для добавления пользовательского JavaScript является рекомендуемым методом. Эти плагины гарантируют, что скрипты будут загружаться в правильном порядке.
Пожалуйста, оставьте свои комментарии по текущей теме статьи. Мы крайне благодарны вам за ваши комментарии, отклики, лайки, дизлайки, подписки!
Каждый знакомый с WordPress слышал про файл темы (шаблона) functions.php . Однако не все хорошо понимают его назначение, видя в нем лишь файл в котором хранятся различные php функции. В сети, как и у меня на этом сайте, часто предлагается добавлять PHP код в этот файл. Однако не каждый код подойдет для этого файла. Не потому что он не будет работать, а потому что он не подходит по логике использования.
Также при редактировании functions.php новички допускают ошибки из-за которых сайт перестает работать.
В этой статье я постараюсь рассмотреть все эти моменты: когда нужно использовать functions.php и когда этого лучше не делать, какие ошибки при редактировании functions.php могут возникнуть.
Как добавить один скрипт после другого
Еще, при работе со скриптами полезно знать, что в третьем параметре функции wp_enqueue_script() можно указать зависимость этого скрипта от других. Например, если вы укажите array('jquery') , то скрипт example.min.js будет подключен после скрипта jquery.min.js.
Кроме того, существует полезная функция wp_add_inline_script() , которая позволит вам добавить скрипт прямо в html документ, после указанного. Аналогично для стилей будет работать функция wp_add_inline_style() . Рассмотрим пример подключения slick-слайдера:
Как видите, сначала нужные файлы подключаются с помощью функций wp_enqueue_style() и wp_enqueue_script() , после чего скрипт инициализации слайдера вставляется с помощью wp_add_inline_script() после основного slick.min.js.
Как сделать подключение скриптов по условию
При подключении скриптов и стилей на хуке wp_enqueue_scripts глобальные переменные уже определены, поэтому все условные теги вида is_home() , is_front_page() , is_archive() , is_page() и подобные будут работать. В примере ниже мы подключаем на главную одну таблицу стилей, а на страницу категорий другую. Общий файл стилей будет подключен на все страницы сайта.
functions.php против плагинов
— «Плагины работают медленнее чем код в файле functions.php», говорят неосведомленные - это не так!
Нет никакой разницы в скорости работы кода, не важно подключается он через плагин или через файл functions.php. Подробнее читайте в отдельной заметке.
Теоретически вставка кода в functions.php равносильна установке плагина, но это не одно и тоже. Ведь при смене темы, мы получим совершенно другой functions.php и все внесенные изменения будут потеряны, а вот плагин останется, сколько тему не меняй. С этих соображений и нужно относится к файлу functions.php. Если добавляемый функционал относится не только к теме, но и к сайту в целом, то стоит задуматься о подключении его в виде плагина.
Второй пример выше «Данные о количестве запросов к базе данных в подвале админки». По логике не подходит для использования в файле functions.php. Потому что, если мы сменим шаблон, то мы потеряем этот функционал, а он используется в админке и нужен независимо от того какая тема используется.
Поэтому, давайте удалим его из functions.php и сделаем из него плагин - это просто!
Чтобы создать плагин нужно создать файл с кодом ниже (название файла может быть любое), добавить его в каталог плагинов wp-content/plugins/ и активировать плагин в админ-панели:
Если нет желания видеть еще один плагин в админ-панели, то можно использовать Must-Use плагины.
Похожие посты
- 16 августа, 2021
- 5-6 мин.
- 453
1.2. Плагины для добавления пользовательского JavaScript
Также можно использовать плагины добавления пользовательского JavaScript . Большинство из них также используют хуки действия wp_head и wp_footer. Но они предоставляют больше параметров конфигурации.
Например, плагин Simple Custom CSS and JS позволяет определять постоянную ссылку для пользовательских файлов JavaScript, сохранять их в папку wp-content/ , управлять скриптами как пользовательским типом записей и многое другое.
Файл функций - ваш друг
Файл PHP function темы работает очень похоже на плагин, но он специфичен для конкретной темы. Поэтому необходимо использовать его только для того, чтобы добавить функционал, который может быть отключен при активации другой темы. В этой статье вы узнали, для чего используется файл функций темы. Работайте с functions.php осторожно, избегайте его использования, когда все что нужно можно сделать с помощью плагина.
Пожалуйста, оставьте ваши комментарии по текущей теме статьи. Мы крайне благодарны вам за ваши комментарии, дизлайки, подписки, отклики, лайки!
include()
Согласно руководству по PHP: include() будет включать и оценивать указанный файл. Если файл не найден, будет выдано предупреждение PHP.
Проще говоря, это означает, что PHP будет искать файл, который вы пытаетесь включить. Если он найден, он будет добавлен в ваш скрипт в том месте, где вы его объявили.
Это важно понимать. Например, предположим, что вы пишете набор функций, которые зависят от предыдущего набора функций. В этом случае вам нужно убедиться, что сначала включен другой файл.
С другой стороны, если вы хотите добавить набор функций или внешний файл в середине существующей функции, вы можете включить его точно в то место, где он вам нужен.
Во-вторых, обратите внимание, что если файл отсутствует, PHP выдаст предупреждение. В зависимости от конфигурации сервера вы можете увидеть это в браузере или в файле записи журнала (или и то, и другое).
Тем не менее, предупреждения не считаются фатальными и обычно не останавливают выполнение функций, но их важно учитывать, потому что это может означать, что часть вашей работы не загружается и/или не интерпретируется должным образом.
Наконец, обратите внимание, что когда файл загружается с помощью include() , он будет иметь доступ ко всем переменным, ранее определенным в вашем существующем скрипте.
Предположим, что вы работаете над функцией и на полпути к выполнению функции вы собираетесь включить отдельный файл. Этот отдельный файл будет иметь доступ к переменным, определенным ранее в функции, в которую он включен.
Хотя вы можете рассматривать это как удобство, это делает внешний сценарий немного неясным, поскольку он не обязательно показывает, что зависит от переменных, определенных извне. Это может сбивать с толку, особенно при работе в команде.
Подключаемые функции
Если вы работаете с хорошо проработанной родительской темой, то существует вероятность того, что в functions php ( где находятся функции ) они будут подключаемыми.
Функции дочерней темы выполняются раньше, чем те, которые содержит родительская тема. Если вы создаете в дочерней теме функцию с тем же именем, WordPress не будет запускать ее из родительской темы. Поэтому для переопределения родительской темы просто создайте в functions.php дочерней темы собственную функцию с тем же именем.
Добавление кода в файл функций и его активация
Мы добавляем код в functions.php и указываем WordPress активировать его точно так же, как и в случае с плагином:
- Пишем функции, которые затем вызываем в файлах шаблонов темы - это полезно, когда есть блок кода, который нужно использовать в нескольких местах темы, но он не будет работать как часть шаблона;
- Привязываем функции к хуку действия или фильтра. Таким образом, функция запускается, когда WordPress встречает этот хук. WordPress сам предоставляет в распоряжение разработчиков сотни хуков. Вы можете найти некоторые из них в своей теме и плагинах. Если вы добавляете в functions.php код для активации определенного функционала в новой теме, тогда вам нужно создать дочернюю тему. Иначе файл функций будет перезаписан сразу после обновления темы;
- Создаем шорткод, который затем добавляем в контент. Я бы не рекомендовала добавлять шорткод с помощью файла PHP function . Лучше сделать это с помощью плагина, чтобы содержимое, выводимое шорткодом, не пропало, если вы поменяете тему;
- Создаем виджет. Это не очень хорошее решение; если вы хотите создать виджет, добавьте для него плагин;
- Давайте рассмотрим, как работать с файлом functions.php и как с его помощью добавить некоторые из распространенных функциональных возможностей.
Как создать AJAX-форму на WordPress без плагинов
WordPress имеет достаточно простую методологию обработки Ajax-запросов. Ajax-запросами называют такие запросы, которые происходят без перезагрузки страницы и в результате работа с сайтом становится быстрее и удобнее для конечного пользователя. Заранее оговорюсь, что в репозитории WordPress существуют десятки нормальных плагинов для работы с формами. С помощью них можно настроить поля, их валидацию, содержимое, интегрировать поддержку Ajax,…
Разработка сайтов для бизнеса
Если у вас есть вопрос, на который вы не знаете ответ — напишите нам, мы поможем разобраться. Мы всегда рады интересным знакомствам и новым проектам.
В PHP functions.php помещается функционал, необходимый вашей теме и который не относится лишь к конкретному шаблону.
В Кодексе WordPress дается следующее определения файла функций:
Файл functions.php ведет себя, как плагин, добавляя функции и функционал на WordPress- сайт. Его можно использовать для вызова как PHP-функций, так и встроенных функций WordPress, для определения собственных функций. Можно получить тот же результат, добавив код в плагин WordPress или в файл functions.php темы WordPress.
Между functions.php и файлом плагина существует сходство. Он используется для кода того же типа, который можно добавить в плагин.
Если у вас есть много функционального кода, который необходимо использовать на сайте, тогда нужно поместить этот код в плагин. Но если код зависит от темы, то functions.php - это именно то место, где его следует разместить. Общее правило:
Используйте functions.php , когда нужно добавить простые функции, связанные с отображением контента ( т. е. он не будет работать, если данная тема неактивна ).
Создайте плагин , если функционал более сложный или public function PHP не зависят от темы. В качестве примера можно привести регистрацию типов записей - вы ведь не хотите потерять пользовательские типы записей при изменении темы.
Как подгружается functions.php
functions.php подключается во время инициализации текущей темы, после того, как подключены все функции WordPress и все активные плагины. Опишу коротко хронологию загрузки WordPress, где видно, когда подключаются важные файлы:
Процесс загрузки WordPress, и functions.php в частности, хорошо показан на этом рисунке:
Схема загрузки WordPress
Добавление кода в файл functions.php
Рассмотрим некоторые часто используемые функции.
Возможности functions.php
functions.php располагается в папке темы и загружается каждый раз, во время просмотра внешней части сайта, в админ-панели и даже во время AJAX запросов. Нет случая, когда functions.php не будет подключен и это открывает широкие возможности перед разработчиками.
Для примера, следующий код, вставленный в файл темы functions.php расширит возможности темы - включит поддержку миниатюр поста:
Другой пример, код заменит текст в подвале админ-панели WordPress, на данные о количестве запросов к базе данных, времени генерации страницы и использовании памяти:
1.3. Скрипты, специфичные для плагинов
Например, плагин GA Google Analytics позволяет интегрировать Google Analytics на сайт прямо из панели администрирования WordPress. Он поставляется со встроенными функциями, специфичными для скрипта Google Analytics.
Как сделать обновление скриптов в кеше браузера
Один из часто задаваемых вопросов звучит примерно так: «Почему я изменяю css файл, но эти изменения не видны на сайте?».
Ответ на него достаточно простой: при первом посещении сайта браузер скачивает файлы стилей, скриптов, изображения и т.д. себе в кеш. При каждом последующем посещении браузер уже не будет скачивать их заново, а возьмет из своего локального хранилища (кеша). Это работает в целях оптимизации посещения интернет-ресурсов.
Но есть отличный способ динамически сообщать браузеру об изменениях в ваших файлах — указывать их версии. Это удобно делать с помощью функции filemtime() .
Теперь браузер будет проверять, изменилась ли версия (время последнего изменения) файла и только в случае положительного ответа скачивать файл заново.
К тому же, в одной из последних версий добавили функцию get_theme_file_uri() , которая проверяет наличие файла в дочерней теме перед подключением, это довольно удобно.
Если мы применим эти советы, то получим примерно следующее:
Популярный генератор тем underscores в качестве версии скриптов указывает некую магическую константу _S_VERSION , предварительно определив ее define( '_S_VERSION', '1.0.0' ) . Как вы понимаете, версия не будет меняться динамически при таком подходе и ее указание довольно бессмысленно.
include_once()
Согласно руководству по PHP: include_once() будет выполнять то же поведение, что и include() , но не будет включать файл снова, если он уже был включен.
Функция include_once() похожа на include() , но между ними есть некоторые ключевые отличия.
Во-первых, в то время как include_once() во многом работает так же, как include() , она не позволит вам снова включить скрипт. Это означает, что если где-то еще в вашем проекте уже был включен этот внешний файл, второй раз он подключен не будет.
Так в чем преимущество этого? Помимо гарантии того, что скрипт находится только в одном месте, это также гарантирует, что переменные и функции не обязательно будут переопределены. Напомним, что при использовании include() скрипты имеют доступ к функциям и переменным, которые определены перед ними.
Если вы решите определить новый набор переменных или функций в файле, то вы рискуете переопределить функции и переменные файла, подключенного через include() , которые потенциально могут вызвать серьезные проблемы с выполнением вашего код.
Как изменить robots.txt в мультисайте WordPress
WordPress динамически создает robots.txt. Чтобы перезаписать его при обычной установке без использования нескольких сайтов, вы можете просто загрузить статический файл robots.txt на сервер. При установке системы мультисайтов это приведет к перезаписи файла robots.txt для всех сайтов, что не всегда является нужным результатом. В этой заметке мы обсудим, как можно изменить robots.txt для отдельных сайтов мультисайта….
get_template_part()
WordPress предлагает функцию get_template_part() , которая является частью собственного API и используется специально для повторного использования разделов или шаблонов кода в вашей теме.
Функция принимает два аргумента:
- Первый аргумент — это ярлык для шаблона. В приведенном примере это будет «loop».
- Второй аргумент — это имя шаблона. В приведенном выше примере это будет «standard».
С версии WordPress 5.5.0 принимает третий параметр — переменную, которую можно использовать, чтобы пробрасывать данные в шаблон, например:
Теперь в этом файле можно получить указанные параметры через переменную $args.
Как правильно подключать стили и cкрипты в дочерней теме WordPress?
На эту тему написано уже десятки статей, но тема продолжается обсуждаться, а в чатах и на форумах люди снова и снова задают вопросы и сталкиваются с проблемами. Давайте вместе попробуем на примерах разобраться как же правильно подключать стили и скрипты в WordPress. Начнем по порядку. Есть хук wp_enqueue_scripts, который срабатывает в момент подключения в очередь…
Подведем итоги
Все функции, которые я описала выше, активируются с помощью одного хука действия: after_setup_theme . Это означает, что вместо написания нескольких отдельных функций, можно добавить их все в одну функцию, а затем активировать ее с помощью хука.
Можно создать одну большую функцию:
В моей функции добавлено много комментариев, поэтому пользователю легко разобраться, что происходит. Это упростит задачу, если в будущем нужно будет изменить или переопределить функцию WordPress functions php .
Включение файлов
Иногда functions.php становится трудно управляемым, и содержит блоки кода, которые хотелось бы хранить отдельно. В этом случае рекомендуется создать отдельные файлы, а затем вызвать их из functions.php .
Создайте в своей теме папку под названием includes , а затем добавьте в нее отдельные файлы PHP для каждого блока кода, который нужно отделить. Например, если нужно было переместить настройку темы в другой файл, я бы переместила весь приведенный выше код в файл с именем theme_setup.php , а затем вызвала его в functions.php :
Данный код вызывает код включаемого файла, а затем запускает его в том месте functions.php , в котором я добавила функцию include() . Обычно я помещаю все включаемые файлы в начале файла функций, чтобы их было легко найти.
2. Редактирование файла functions.php дочерней темы оформления
Также можно использовать встроенные в WordPress функции и хуки действий. В этом случае необходимо отредактировать файл functions.php и вручную загрузить скрипт на используемый сервер. Также желательно создать дочернюю тему оформления для сохранения ваших настроек.
Пользовательские скрипты загружаются в корневую папку дочерней темы оформления. Для нескольких скриптов можно создать для них папку scripts .
Затем добавьте PHP-код, который ставит в очередь или выводит пользовательский JavaScript-код, в functions.php дочерней темы оформления. Это можно сделать через меню Внешний вид> Редактор тем в панели администрирования WordPress.
require_once()
Согласно руководству по PHP: require_once() работает так же, как require() , но не будет включать файл во второй раз, если он уже включен.
Это, вероятно, легче всего понять, поскольку мы рассмотрели последние три функции относительно подробно. Проще говоря, require_once() выполняет те же функции, что и require() , но не будет пытаться снова включить файл, если он уже загружен в ваш скрипт.
Создание файла функций
Если ваша тема не содержит functions.php , его нужно создать в корневом каталоге. Затем нужно добавить в файл открывающийся тег PHP , но закрывать его не нужно:
Теперь ваш файл функций готов к добавлению кода. Лучше добавлять перед каждым разделом большие блоки закомментированного текста, чтобы легко найти любой код:
Общее использование файла функций
Когда использовать functions.php :
Добавление пользовательского JavaScript на WordPress
Чтобы добавить собственный JavaScript-код на WordPress- сайт, нужно использовать:
- Различные типы плагинов.
- Функции и хуки WordPress в файле functions.php :
- хуки действий wp_head и wp_footer;
- хуки действий wp_enqueue_scripts, admin_enqueue_scripts и login_enqueue_scripts;
- функция WordPress wp_enqueue_script().
require()
Согласно руководству по PHP: require() работает так же, как include() , но выдает фатальную ошибку PHP, если файл не найден.
Файл, подключенный с помощью require() будет выполнять то же действие, что и include() , в части импорта внешнего скрипта в контекст того, над чем вы работаете, но если ему не удается найти файл, он выдаст фатальную ошибка и полностью остановит выполнение.
На каком-то уровне может показаться, что требовать файлы — это правильный путь. В конце концов, зачем вам рисковать, включая что-то, чтобы получить предупреждение о потенциальном сбое в приложении.
Но все зависит от характера того, над чем вы работаете. Иногда можно использовать простые предупреждения PHP — например, забыть инициализировать индекс массива — в других случаях вам нужно точно знать, что файл подключен.
Не существует жестких правил, определяющих, когда использовать require() , а когда include() . Скорее всего тут нужно просто опираться на здравый смысл.
Добавить комментарий Отменить ответ
2.2. Вывод встроенного скрипта с помощью хуков действий wp_head и wp_footer
Также можно добавить скрипты на WordPress-сайт с помощью хуков действий wp_head и wp_footer . Они выводят пользовательские шрифты только в шаблоне хедера или футера. Эти хуки можно использовать для добавления встроенных скриптов, но не для внешних.
Пример использования хука wp_head для вывода скрипта в шаблоне хедера:
Пример использования wp_footer для вывода скрипт в шаблоне футера:
Скрипты, добавленные с помощью этих хуков, не будут загружаться в панели администрирования и на странице входа. Чтобы запускать пользовательские скрипты в панели администрирования WordPress, необходимо использовать хуки действия admin_head и admin_footer в функции add_action().
Чтобы запускать скрипты на странице входа в систему, используйте хуки действия login_head и login_footer .
Рассмотренные плагины Insert Headers and Footers и Simple Custom CSS and JS позволяют использовать wp_head и wp_footer не только для встроенных скриптов, но и для внешних файлов .js . Но эти плагины запускают дополнительные проверки, обеспечивающие соблюдение последовательности загрузки WordPress. Чтобы добавить скрипты вручную, лучше использовать функцию wp_enqueue_script().
1.1. Плагины для редактирования header.php и footer.php
Первый вариант – использование плагина для редактирования шаблонов header.php и footer.php темы оформления WordPress. Если нужно добавить скрипты, которые загружаются до содержимого страницы, необходимо отредактировать шаблон шапки. Скрипты, которые загружаются после содержимого веб-страницы, добавляются в шаблон футера.
Плагин Insert Headers and Footers позволяет редактировать шаблоны хедера и футера. Он добавляет скрипты к хукам действий wp_head или wp_footer соответственно.
Вы можете вставить любой скрипт в два поля ввода. Затем включить скрипты с помощью тега . Вы также можете использовать этот плагин для добавления пользовательского CSS кода в шаблон заголовка, заключив его в тег .
Добавление поддержки темы
В WordPress есть определенные PHP static function , для которых нужно добавить поддержку темой, чтобы воспользоваться ими:
- Форматы записей - tumblr-форматы , такие как standard , video , quote и aside ;
- Миниатюры записей - если вы хотите использовать их в своей теме, придется добавить код для их вывода в файлах шаблонов. Но они не будут доступны в панели администрирования, если вы не добавите для них поддержку темой;
- Пользовательский фон - позволяет настраивать фоновое изображение и цвета фона через пользовательский интерфейс;
- Пользовательский заголовок, который работает так же, как и пользовательский фон;
- Автоматические ссылки на каналы - для RSS-каналов ;
- HTML5 - для формы поиска, комментариев, галереи и т.д. Это не влияет на возможность создания кода темы с помощью HTML5 , но относится к коду, сгенерированному WordPress ;
- Тег заголовка - позволяет добавить тег заголовка в раздел для улучшения SEO и доступности.
Таким образом, чтобы добавить, например, поддержку темы для форматов записей, необходимо использовать функцию add_theme_support() :
Некоторые из функций WordPress functions php , для которых добавляется поддержка темой, имеют дополнительные параметры. Например, при добавлении поддержки можно указать форматы записей, которые хотите использовать:
А для специальных изображений можно указать, в каких типах записей они будут поддерживаться:
Но ничего из этого не сработает, если вы не поместите свой код внутри функции и не привяжете к соответствующему хуку действия after_setup_theme . Можно добавить все функции add_theme_support() внутри одной более крупной функции, которую вы затем привяжете к after_setup_theme . Поэтому, если вы хотите добавить поддержку темой миниатюр записей, форматов записей, HTML5 и автоматических ссылок на каналы, добавьте следующий код в файл функций:
Чтобы не было ошибок, учитывайте 4 момента:
Пример, у нас была такая структура:
Если Вы добавили php код так, то это вызовет ошибку или, что еще хуже, белый экран, когда показ ошибок отключен:
Такой код вызовет ошибку:
Логичнее его записать так:
Бывает что перенос строки ставят в самом конце functions.php, вот тогда это становится настоящей проблемой, потому что все казалось бы правильно, но сайт не работает. На самом деле после ?> или до
По этой причине многие разработчики вообще удаляют закрывающий тег ?> , это допустимо для PHP. Рекомендую всегда делать именно так:
Если в functions.php присутствует функция, то внутри этой функции можно использовать теги , например, для того, чтобы визуально выделить HTML код внутри функции:
Еще одна заметка касательно файла functions.php: устанавливайте файлу кодировку UTF-8 (UTF-8 без BOM). Иначе, если функции в файле будет текст на кириллице, то он выведется непонятными символами: кракозябрами, каракулями - называйте как хотите.
На эту тему написано уже десятки статей, но тема продолжается обсуждаться, а в чатах и на форумах люди снова и снова задают вопросы и сталкиваются с проблемами. Давайте вместе попробуем на примерах разобраться как же правильно подключать стили и скрипты в WordPress.
Начнем по порядку. Есть хук wp_enqueue_scripts , который срабатывает в момент подключения в очередь на вывод файлов стилей и скриптов. Это событие срабатывает в момент хука wp_head с приоритетом 1. Учтите, что для его работы в файле header.php необходима функция wp_head() .
На этот хук wp_enqueue_scripts принято вешать функции, которые подключают стили и скрипты темы с помощью функций wp_enqueue_style() и wp_enqueue_script() соответственно.
Простой способ подключения может выглядеть следующим образом:
Заметьте, что если в функции присутствует префикс get_template_ , то будет подключен файл из родительской темы, если же префикс get_stylesheet_ , то файл будет подключен из дочерней темы только в том случае, если дочерняя тема активирована (если не активирована, файл подключается из родительской).
2.1. Добавление собственных скриптов в очередь с помощью функции wp_enqueue_script()
WordPress Theme Handbook рекомендует использовать для добавления JS-скриптов функцию wp_enqueue_script() . Она ставит пользовательские скрипты в очередь на загрузку в правильном порядке.
С помощью wp_enqueue_script() можно добавить собственный JavaScript в шаблоны хедера и футера. По умолчанию функция размещает скрипты в раздел страницы.
Чтобы добавить скрипт в хедер, нужно определить собственный дескриптор ('custom' в примере, приведенном ниже) и путь к скрипту. А также использовать функцию get_stylesheet_directory_uri() для получения URI каталога дочерней темы оформления.
функция add_action() добавляет пользовательскую функцию tutsplus_enqueue_custom_js() в хук действия wp_enqueue_scripts . Он ставит в очередь пользовательские скрипты.
Функция WordPress wp_enqueue_script() и хук действия wp_enqueue_scripts имеют почти одинаковые имена. Но это разные методы.
Функцию wp_enqueue_script() можно использовать для добавления пользовательского JavaScript-кода в шаблон футера. Для этого потребуется определить дополнительные параметры:
- зависимости: array(), так как у нас пока нет никаких зависимостей;
- версия скрипта: false, так как мы не хотим добавлять номера версий;
- true, так как мы переключаемся на шаблон футера, который не является параметром по умолчанию.
Чтобы запустить скрипт в панели администрирования, используйте хук действия admin_enqueue_scripts в функции add_action(). Для страницы входа в систему необходимо использовать хук login_enqueue_scripts . Он добавляет пользовательские скрипты в очередь только для страницы входа.
Когда-что использовать
При использовании этих функций я советую, в первую очередь, опираться на здравый смысл, а во вторую но чьи-то рекомендации, но если вы все же решите воспользоваться советами, то вот принципы, которые я использую чаще всего:
- При подключении файлов в functions.php чаще всего я использую require_once()
- При подключении фронтенд-шаблонов в файлах темы использую get_template_part()
- При разработке плагинов я почти всегда использую include_once() и обычно использую его один раз в функции
Насколько публикация полезна?
Нажмите на звезду, чтобы оценить!
Средняя оценка 5 / 5. Количество оценок: 1
Оценок пока нет. Поставьте оценку первым.
Чего не нужно делать
Самый простой способ добавить пользовательский скрипт в WordPress – это использовать тег в файл шаблона header.php или footer.php . Но лучше этого не делать. Так как WordPress использует определенную последовательность загрузки ресурсов, которую необходимо соблюдать.
Вставка пользовательского JavaScript-кода в шаблон хедера или футера может вызвать сбои в работе тем, плагинов или ядра WordPress.
Поэтому никогда не добавляйте приведенный ниже код в файл header.php или footer.php :
Ошибки в functions.php при вставке кода
Неоднократно встречал вопросы об ошибках, вроде: "После установки кода в файл functions.php сайт перестал работать - белый экран. Что делать?". Я и сам с подобным сталкивался когда-то.
Для меня некоторые решения этой проблемы, долгое время, оставались загадкой — вроде ничего не делал, и даже танца с бубном не было, но - раз и все заработало. Почему так происходит? Давайте рассмотрим возможные ситуации из-за которых может "ломаться" сайт и их объяснение:
Вставляете готовый код — сайт перестает работать.
Чаще всего, дело в открывающем и закрывающем тегах PHP . Обычно, если вставляемый код имеет в начале и в конце эти теги, то их нужно удалить. Также, файл functions.php не должен выводить на экран никакой текст (HTML код или другой контент). Вывод текста допускается только внутри функции, которые в дальнейшем будут использоваться в шаблоне или которые прикрепляются к хукам (подробнее см. ниже).
Деактивация функций
Чтобы деактивировать функцию, открепите ее от действия или фильтра, к которому она привязана. Например, если в родительской теме есть функция parent_function() , которая активируется с помощью хука init , можно деактивировать ее в дочерней теме следующим образом:
Это будет означать, что данная функция WordPress functions PHP больше не будет выполняться. Затем, если вы хотите иметь разные функции в дочерней теме, можно написать новую функцию. А затем привязать ее к тому же хуку, но не задавать для нее то же имя.
Примечание . Если родительская функция содержит параметр приоритета в add_action() выполняющей функцию, которую нужно деактивировать, вам нужно указать тот же приоритет при ее деактивации.
Для чего на самом деле нужен functions.php
Как я писал выше: functions.php необходим для того, чтобы расширить функциональность темы и только для этого! В этот файл нужно добавлять всякий код, который нужен для шаблона непосредственно, но не для сайта в целом.
Если на каком-либо ресурсе вам предлагают добавить код в файл functions.php , а функция кода не относится к шаблону непосредственно, то не ленитесь сделайте плагин из этого кода и возможно в будущем избежите неожиданной пропажи добавленного ранее функционала.
Добавление файла перевода
Перевод означает, что любой текст, который вы добавляете в панель администрирования через тему, будет переведен с использованием файла перевода.
С помощью private function PHP load_theme_textdomain() в файле функций укажите WordPress , где размещается файл перевода:
Эта функция использует функцию get_template_directory() , чтобы найти папку темы, а затем ищет в папке languages файл, начинающийся с wpmu-theme . Поэтому путь будет wp-content/themes/mytheme/languages/ , а имя для файла языка начинается с wpmu-theme , за чем следует код языка.
В файле functions.php также регистрируются меню навигации. Во многих темах есть флажок « Основное меню », который можно установить в разделе « Меню ». Это дает возможность использовать меню в определенном месте темы. Чтобы реализовать подобный функционал, нужно использовать функцию register nav menus() :
Этот код регистрирует расположение меню, которое будет отображаться в панели администрирования как " Основное меню ", а его идентификатор будет primary . Затем вы используете этот идентификатор для вывода меню в файле темы header.php .
Обратите внимание : в коде, приведенном выше, я уже сделала название меню готовым к переводу. Поэтому любой пользователь, говорящий на другом языке, будет видеть текст « Основное меню », переведенным для него с помощью файла перевода.
Нужно добавить код меню в файл sidebar.php темы, используя функцию wp_nav_menu() .
Как сделать предварительную регистрацию скриптов
Еще одной важной особенностью работы со скриптами является то, что скрипт можно только зарегистрировать c помощью функции wp_register_script() , а выполнять подключение уже в любом другом месте проекта по необходимым условиям. Рассмотрим на примере:
Сначала мы регистрируем скрипты библиотеки masonry для того, чтобы сделать красивые фото-галереи у нас на сайте. Эти скрипты не будут подключены в html-документ до тех пор, пока вы не используете функцию wp_enqueue_style() или wp_enqueue_script() .
Сами фото-галереи выводятся с помощью шорткодов и мы можем прямо здесь выполнить их подключение. Таким образом эти скрипты будут подключены в html-документе только в том случае, если на странице будет использован этот шорткод.
В WordPress одна из распространенных проблемных ситуаций — это правильный способ включения внешних файлов.
PHP предлагает четыре (!) Способа сделать это, а WordPress даже предлагает свой вариант.
В этой статье мы рассмотрим эти способы, а также рекомендации по использованию каждого из них.
Использование приоритета функции
Последний вариант - создать новую функцию с более высоким приоритетом, чем функция, которую нужно переопределить. То есть она будет выполняться после первоначальной функции. Вы должны сделать это, потому что по умолчанию WordPress запускает функции дочерней темы первыми. Только добавив номер приоритета, можно изменить это.
Допустим, что родительская тема содержит функцию parent_function() , которая активируется с помощью хука init с приоритетом 20 :
Можно написать функцию, которая переопределит родительскую функцию, а затем привязать ее к хуку init с более высоким приоритетом, например 30 :
Если родительская функция не имеет приоритета, то она будет использовать значение по умолчанию, равное 10 . Таким образом, можно использовать любое число больше 10 , чтобы функция дочерней темы выполнялась после родительской функции.
1. Использование плагина для добавления пользовательского JavaScript-кода
Использование плагина рекомендуется, если:
- не хотите напрямую редактировать исходные файлы CMS.
- Нужно добавить независимый от используемой темы оформления JavaScript-код.
Работа с родительскими и дочерними темами
functions.php может стать эффективным инструментом для работы с родительскими и дочерними темами. В дочерней теме можно использовать собственный файл функций для переопределения или удаления функций из родительской темы, или для добавления новых.
Существует три способа переопределения или добавления функций в дочернюю тему:
- Создание новой версии подключаемой функции;
- Деактивация функции родительской темы;
- Добавление собственной функции с использованием приоритета, чтобы переопределить функцию родительской темы.
Рассмотрим каждый из способов.
Читайте также: