Что такое functions.php
Это главный файл в вашей теме WordPress. Располагается в /wp-content/themes/{тут название вашей темы}/functions.php
.
В нём определяются важные свойства темы, кастомизируются хуки, внешний вид и её функциональность, а также добавляются некоторые необходимые вам функции. Этот файл загружается каждый раз при открытии любой страницы WordPress, поэтому с его помощью можно изменить любой элемент сайта. В связи с этим, многие советы а-ля «как изменить что-то в WordPress без плагинов» часто касаются именно внесения изменений в functions.php, вместо того, чтобы создать под этот функционал отдельный плагин или воспользоваться готовым решением. Зачастую это приводит к информационной перегрузке этого файла, код становится тяжело разобрать, а внести исправления ещё сложнее. Но не это самое опасное. Самое опасное — это то, что при смене активной темы пропадёт часть или весь необходимый функционал сайта.
Чем отличается functions.php от плагина
Ничем. По своей сути, functions.php и есть эдакий глобальный неотключаемый плагин, который привязан к текущей теме. Как он подключается в WordPress, можно посмотреть в wp-settings.php. Как видно из исходного кода, его загрузка происходит после всех плагинов, однако, это не даёт никаких недостатков или преимуществ, разве что возможность переопределить что-то в подключенных плагинах. На скорость исполнения кода это также никак не повлияет. Влияет только содержание плагинов и functions.php. Поэтому, будьте внимательны при выборе активных плагинов для своей темы и откажитесь от ненужных, малополезных вам, тогда вы сможете облегчить ваш сайт и ускорить его работу.
Когда нужно использовать functions.php
Руководствуйтесь следующим правилом: если функционал напрямую связан с текущей темой, но не с работой сайта, записывайте его в functions.php.
К примеру, это может быть
- Настройка миниатюр
- Установка размеров сайдбаров
- Настройка мест под виджеты
- Объявление мест под навигационное меню
- Настройки темы
- Дополнительные функции вашей темы
Когда стоит избегать использования functions.php
Если функционал должен работать даже при смене активной темы, стоит позаботиться об его вынесении в отдельный плагин.
Сюда можно отнести:
- Определение счётчиков посещаемости (Google Analytiсs, Yandex.Metrika, Liveinternet)
- Настройка дополнительного функционала админки (например, дополнительные кнопки в текстовый редактор)
- Конфигурирование исходного кода (убрать лишнее из кода: ссылки на RSS, wlwmanifest, xmlrpc, generator, т.д.)
- Определение шорткодов
- Регистрация произвольных типов записей и произвольных таксономий
- Отключение функций pingback/trackback, ревизий, JSON REST API, Emoji
Списки неполные, вы можете определить их содержание сами под себя.
Куда внести данный код, если не в functions.php? Вы можете написать специальные плагины под них, однако, есть способ интереснее и проще.
mu-plugins как альтернатива functions.php
К нам в современные версии WordPress из WordPress MU(Multi-User) пришёл интересный функционал, называемый MU Plugins. Суть его заключалась в следующем. Администратору WordPress MU порой требовалось определить плагины для всей сети сайтов. Обычным функционалом этого было не добиться, поэтому ввели специальный раздел: /wp-content/mu-plugins/
, где они и определялись. Ещё что интересно, файлы плагинов из этой директории загружаются раньше всех остальных, что даёт возможность предопределить некоторые константы или настройки.
Позже WPMU упразднили, его код интегрировали с основным блоговым, и теперь любой WordPress может использовать функционал MU-plugins, который теперь расшифровывается как Must Use, то есть обязательный к использованию.
Как использовать mu-plugins
Вначале нужно создать специальный раздел /wp-content/mu-plugins/
В него мы помещаем нужные файлы-плагины. В отличие от обычных плагинов, здесь не нужно выдерживать специальный синтаксис, а функционал можно объявлять напрямую
Здесь для примера создан файл с кодом счётчиков посещаемости.
Внутри этот файл выглядит вот так
<?php add_action('wp_footer', 'sheensay_counters', 100); function sheensay_counters() { ?> // ... Вместо этой строки вставляем код счётчиков ... <?php }
В админке он будет выглядеть как Необходимые
В отличие от обычных плагинов, здесь подключаться будут только файлы, непосредственно находящиеся в разделе
mu-plugins
. Если вы хотите подключить файлы из подразделов, создайте загрузчик этих файлов
Создаём загрузчик файлов для mu-plugins
Допустим, у нас есть такая иерархия директорий
Создадим wp-content/mu-plugins/load.php
и запишем в него
<?php require_once 'custom-mu-plugin/plugin.php';
Это всё, подключение готово.
В завершение
Помните, нельзя пихать всё подряд в functions.php, это захламляет код и создаёт опасную зависимость функционала сайта от его активной темы. Будьте разумны и выносите код сайта, который не должен зависеть от темы, в mu-plugins, он отлично подходит для этого.
Свежие комментарии