function php wordpress где находится
Файл functions.php шаблона WordPress
Добрый день, друзья-старатели! =)
В сегодняшней статье я хочу познакомить вас с общим принципом изменения функциональности вашей темы WordPress путем внесения изменений в файл functions.php.
Тема простая, но очень важная! Добавление собственных функций в файл functions.php поможет вам избавиться от использования ряда плагинов и реализовать какие-то свои оригинальные блоки. В дальнейшем мы будем активно использовать эти знания для развития сайта на WordPress.
Где расположен файл functions.php:
/wp-content/themes/название_шаблона/functions.php
Файл functions.php подобно плагинам расширяет функциональность сайта на WordPress.
Внутри файла functions.php можно использовать php-функции и встроенные функции WordPress, а также свои собственные.
В отличие от плагина, содержимое functions.php применяется только к той теме, к которой он принадлежит. Если активировать другой шаблон, то добавленной функциональности там уже не будет. В случае необходимости, нужно будет переносить код и сопутствующие настройки в новую тему.
В этом плане плагины более универсальны, но они требуют дополнительных ресурсов для проверки своей работоспособности (проверка наличия всех файлов плагина, его активации и т.п.).
Поскольку изменение шаблонов на сайтах происходит очень редко, то целесообразней функциональность плагинов переносить в файл functions.php. Для большинства простых плагинов это можно сделать без проблем. Об этом буду писать в следующих статьях.
Также functions.php может содержать функции, которые используются для различных задач. Плагины же, чаще всего имеют узкую направленность и применяются, чаще всего, для какой-то одной цели.
Как добавить свою функцию в файл functions.php?
Итак, вы нашли какую-то функцию, с помощью которой хотите расширить функциональность вашего WordPress блога и автор кода указал в описании, что её нужно вставить в functions.php. Как это сделать мы сейчас и разберемся.
В целях обучения не будем использовать какой-то громоздкий код, а возьмем классический пример “Привет, Мир!”
Вот код функции, которая выводит надпись “Привет, Мир!”:
Что такое файл functions.php WordPress?
Вступление: Здравствуйте! Один из важнейших файлов вашей рабочей темы является файл functions.php WordPress. Любой администратор сайта обязан знать назначение этого файла и правила работы с ним.
Что такое файл functions.php WordPress?
Файл functions.php не нужно создавать. Он создан разработчиком темы и включён в каталог темы. Работает файл, как плагин и активируется с активацией выбранной вами темы.
Написан файл functions.php на языке программирования PHP, с использованием функций и тегов разработанных для CMS WordPress.
Где находится файл functions.php?
Ещё раз обращу ваше внимание: файл функций есть в любой теме WordPress. Он не является шаблонным. Каждый разработчик специально пишет его для своей темы. Однако вы можете его редактировать добавляя новые и изменяя старые возможности вашей темы (о редактировании чуть ниже).
Как редактировать файл functions.php WordPress?
Структура этих кодов узнаваемо проста: в начале идёт function, далее название функции, далее код. В конце кода могут быть: add_action (хук действия) add_filter (хук фильтра).
Однако напрямую вставлять новую функцию в файл функций рабочего проекта я вам не рекомендую, и вот почему.
Во-первых, неправильный код или его неправильная вставка непосредственно в файл функций могут «убить» ваш сайт.
Примечание: Проблемы с доступностью сайта в результате ошибок на WordPress принято называть «Белый экран смерти». Самое простое решение проблемы «белого экрана» наличие резервной копии сайта. Читать: Резервное копирование сайта WordPress. О более сложных решениях поговорим в следующих статьях.
Ещё раз обращу ваше внимание: самая простая ошибка в коде в виде пропущенной точки с запятой, может заставить весь ваш сайт исчезнуть.
Во-вторых, если вставляемый код правильный и начнёт работать, он исчезнет после первого обновления вашей темы.
В-третьих, если вы смените тему все ваши новые добавленные функции перестанут работать.
Как правильно редактировать файл functions.php?
Простой вариант
Есть великолепный плагин под названием «Code Snippets», автор Code Snippets pro.
Установив его на сайт единожды, вы сможете редактировать файла functions.php рабочей темы без выше перечисленных опасений. Как работать с этим плагином читайте в следующей статье.
Сложный вариант
Если вы используете дочернюю тему для своего сайта, то править файл функций можно без плагина Code Snippets.
Создать пустой файл просто. В файле должен быть открывающий тег PHP в начале и закрывающий тег PHP в конце. Между ними вы должны вставлять ваши новые функции.
Обратите внимание, что файл functions.php «дочки» не подменяет такой же файл «родительской темы». В «дочке» он будет загружаться как дополнение к файлу функций родителя, но перед ним. Читать: Самый простой способ создать дочернюю тему.
Пример правки файла functions.php WordPress
Не все темы WordPress в customizer имеют настройки по фильтру рубрик, которые нужно показывать на главной странице последних записей. Это можно сделать с помощью такой функции с хуком фильтра. Вот она:
Итак, функция с хуком фильтра у нас есть. Теперь нужно проверить имеющийся код на синтаксис php (адрес сервиса проверок выше).
Как видим ошибок нет. Далее нужно вставить этот код на сайт при помощи плагина Code Snippets.
После активации сниппета указанные в коде рубрики не будут показаны в блоге последних записей.
Все про файл functions.php для вордпресс
Файл functions.php для WordPress неоднократно упоминался в данном блоге при решении тех или иных задач. Однако при этом я говорил о нем вскользь, подразумевая, что вы хорошо знакомы с его работой. Сегодня же наоборот, решил детально рассмотреть все нюансы, которые касаются файла функций functions.php: зачем он вообще нужен, как правильно и безошибочно с ним работать и т.п. Инструмент на самом деле весьма актуальный как при работе с админкой, так и в процессе редактирования темы. Пусть информация и немного теоретическая, почитать будет полезно (особенно новичкам).
Статья имеет 3 подраздела:
Что такое файл functions.php и зачем он нужен?
Как правило, в данном файле задаются дополнительные функции для шаблона, позволяющие менять внешний вид вашего сайта. Однако на самом деле его возможности значительно шире, поскольку functions.php в WordPress автоматически загружается при инициализации системы. То есть при вызове любой страницы, как фронтенда (сайта), так и бэкенда (админки), соответствующие функции из данного файла будут выполнены.
Следовательно, с помощью файла functions.php вы можете решить целый спектр абсолютно разных задач:
Вообще файл functions.php в WordPress по логике и скорости работы напоминает плагины. Хотя при этом у них есть принципиальные отличия. Модули используются, как правило, для решения каких-то конкретных задач и применяются к любой теме вашего сайта. Плюс для работы их нужно активировать. Что касается файла шаблона functions.php, то он может содержать много разных функций и выполняется только для той темы, в которой определен. То есть при смене шаблона, все ваши текущие наработки будут отключены, а система начнет считывать информацию из другого файла функций (об этом следует помнить).
Где находится functions.php и как его редактировать?
Файл функций расположен в корневой директории темы (вместе с index.php, single.php и другими). То есть вы заходите в папку wp-content/themes/название_темы/, и он будет там. Это не то же самое что одноименный файл ядра, который находится в системной директории /wp-includes/, нужный нам объект — в папке шаблона.
Сейчас в WordPress файл шаблона functions.php можно найти в 99% популярных тем, но раньше он был не везде. Если в вашей теме нет functions.php, то вы спокойно можете его создать.
Есть два способа редактирования файла функций:
Первый вариант достаточно простой и наглядный. Вы заходите в меню «Внешний вид» — «Редактор» и выбираете соответствующий файл для правки.
После внесения изменений нажмите кнопку «Обновить файл» в самом низу. Преимущество данного метода в том, что вам не нужно использовать какие-то дополнительные программы для работы, все происходит внутри панели администрирования. Однако не всегда это возможно сделать.
Если файл functions.php закрыт для записи, то воспользоваться встроенным редактором WordPress у вас не получится. В таком случае запускаете FTP клиент, например, Mozilla и скачиваете файл функций на локальный компьютер.
Для работы с php файлом советую использовать специальные бесплатные редакторы — Notepad++ или Sublime Text. При этом важно чтобы кодировка редактируемого файла была UTF-8 без BOM. Вот как можно ее выбрать в Notepad++:
Если этого не сделать, то из-за BOM может возникнуть глюк в WordPress. Для Sublime Text 2 в меню «File» есть опция «Reopen With Encoding», позволяющая открыть файл в нужной кодировке. Однако при запуске functions.php автоматически срабатывает UTF-8 (т.к. файл сохранен именно в ней), поэтому ничего дополнительно делать не нужно.
После внесения изменений в файл, загружаете его обратно на FTP в ту же самую корневую папку активного шаблона. Второй метод, как видите, чуть более сложный, но иногда без него не обойтись. Если вдруг, редактируя functions.php в WordPress админке вы допустили ошибку, то весь сайт может перестать работать (увидите белый экран). В таком случае исправить код можно будет лишь, скачав файл функций на локальный компьютер и отредактировав его в текстовом редакторе.
Вставка сниппетов (примеры кода и типичные ошибки)
Дабы у вас не возникало ошибок при работе с functions.php в WordPress, давайте рассмотрим основные правила вставки кода и возможные ошибки. Первым делом обратите внимание на глобальную структуру любого PHP файла:
Здесь в начале идет специальный открывающий тег и в конце закрывающий. Важно чтобы не было никаких пробелов перед открывающимся и после закрывающегося тегов! Хотя в некоторых случаях вы можете встретить запись, когда последнего тега нет (для PHP это нормально). Давайте рассмотрим парочку примеров.
Ситуация 1
Допустим, вы нашли в интернете готовый сниппет для решения определенной задачи. И в описании сказано, что нужно вставить этот код в файл функций functions.php. В качестве примера выберем код удаления WP версии из wp_head:
Так размещать неправильно:
Возникает ошибка, поскольку система встречает тег открытия из найденного сниппета (так правильно):
Следующий вариант также будет работать (между PHP блоками не должно быть пробелов):
Ситуация 2
Допустим вы хотите обновить jQuery в WordPress для чего нашли соответствующий код:
Неправильный вариант использования:
Нельзя размещать код после закрывающего PHP тега. Вам нужно поставить всю функцию внутрь конструкции:
Ситуация 3
Нельзя вставлять сниппет внутрь другой функции. Допустим, в файле шаблона functions.php у вас имеется следующий код:
Неправильный вариант вставки:
Добавить код можно только после закрывающего тега «>» первой функции. Вот так будет правильно:
Ситуация 4
Тут нужно учитывать 2 нюанса. Во-первых, не должно быть ошибок в последовательности открывающих и закрывающих PHP тегов — каждый открытый блок должен быть закрыт. Во-вторых, внутри функции <…>пробелы и переносы строк между тегами не критичны. В любом случае нужно быть очень внимательным в процессе редактирования. Плюс редакторов Notepad++ и Sublime Text в том, что они подсвечивают теги/функции, и так проще ориентироваться в коде.
Файл темы functions.php в WordPress
Также при редактировании functions.php новички допускают ошибки из-за которых сайт перестает работать.
В этой статье я постараюсь рассмотреть все эти моменты: когда нужно использовать functions.php и когда этого лучше не делать, какие ошибки при редактировании functions.php могут возникнуть.
Возможности functions.php
functions.php располагается в папке темы и загружается каждый раз, во время просмотра внешней части сайта, в админ-панели и даже во время AJAX запросов. Нет случая, когда functions.php не будет подключен и это открывает широкие возможности перед разработчиками.
Другой пример, код заменит текст в подвале админ-панели WordPress, на данные о количестве запросов к базе данных, времени генерации страницы и использовании памяти:
меню
functions.php против плагинов
Нет никакой разницы в скорости работы кода, не важно подключается он через плагин или через файл functions.php. Подробнее читайте в отдельной заметке.
Теоретически вставка кода в functions.php равносильна установке плагина, но это не одно и тоже. Ведь при смене темы, мы получим совершенно другой functions.php и все внесенные изменения будут потеряны, а вот плагин останется, сколько тему не меняй. С этих соображений и нужно относится к файлу functions.php. Если добавляемый функционал относится не только к теме, но и к сайту в целом, то стоит задуматься о подключении его в виде плагина.
Второй пример выше «Данные о количестве запросов к базе данных в подвале админки». По логике не подходит для использования в файле functions.php. Потому что, если мы сменим шаблон, то мы потеряем этот функционал, а он используется в админке и нужен независимо от того какая тема используется.
Чтобы создать плагин нужно создать файл с кодом ниже (название файла может быть любое), добавить его в каталог плагинов wp-content/plugins/ и активировать плагин в админ-панели:
Если нет желания видеть еще один плагин в админ-панели, то можно использовать Must-Use плагины.
Для чего на самом деле нужен functions.php
Как я писал выше: functions.php необходим для того, чтобы расширить функциональность темы и только для этого! В этот файл нужно добавлять всякий код, который нужен для шаблона непосредственно, но не для сайта в целом.
Как подгружается functions.php
functions.php подключается во время инициализации текущей темы, после того, как подключены все функции WordPress и все активные плагины. Опишу коротко хронологию загрузки WordPress, где видно, когда подключаются важные файлы:
Процесс загрузки WordPress, и functions.php в частности, хорошо показан на этом рисунке:
Схема загрузки WordPress меню
Ошибки в functions.php при вставке кода
Вставляете готовый код — сайт перестает работать.
Чтобы не было ошибок, учитывайте 4 момента:
#1 Правильная вложенность
Пример, у нас была такая структура:
Если Вы добавили php код так, то это вызовет ошибку или, что еще хуже, белый экран, когда показ ошибок отключен:
Такой код вызовет ошибку:
Логичнее его записать так:
Как вставить PHP код в WordPress
Здравствуйте, дамы и господа! Сегодня мы рассмотрим с вами как правильно добавлять/вставлять в functions.php WordPress код PHP, то есть, безопасным и практичным способом. Не спешите редактировать файл functions.php. Есть гораздо более безопасные способы вставки своего кода в данный файл. В этом руководстве я покажу вам простой способ добавить / вставить собственный PHP код WordPress. Без редактирования файла functions.php и не нарушая работу вашего сайта WP (ВордПресс).
В некоторых случаях вам может понадобиться добавить новую функцию на свой веб-сайт, либо подключить что-либо к теме WP.
Сделать это можно разными способами: вставить PHP код WordPress напрямую в файл functions.php вашей темы (не безопасно и не практично). Или с помощью специального php плагина WP (легко, быстро, надёжно и безопасно).
Совет: Если вы редактируете файл functions.php, используемую в настоящий момент, подумайте о возможном нарушении работоспособности сайта.
При обновлении темы сделанные вами изменения будут перезаписаны. Чтобы избежать этого, можно создать дочернюю тему.
Файл functions.php WordPress
Вы можете использовать functions.php для добавления любых функций на ваш сайт (как это делают плагины). Однако новички часто не знают, как безопасно добавлять код в functions.php в WordPress. Обычно в статьях по WordPress вы найдете фрагменты кода с инструкциями (из уроков без плагина) по вставке их в файл functions.php темы или в плагин для конкретного сайта напрямую. Мол «необходимо будет вносить правки в файл функции темы сайта (functions.php)». Так делать не рекомендуется.
Проблема в том, что даже малюсенькая ошибочка в пользовательском PHP коде может поломать ваш сайт и сделать его недоступным. Или файл functions.php становится большим (сборная солянка) и не читаемым, а при смене активной темы пропадает часть функционала, которая вовсе не относится к внешнему виду сайта.
Безопасное добавление фрагментов кода в файл functions.php с помощью бесплатных плагинов.
Как добавить / вставить PHP код в WordPress
Универсальный способ добавить код в functions.php WordPress — это использовать плагин My Custom Functions, Code Snippets или создать собственный. Они решают задачу интеграции PHP функций, и добавляют их так, будто они были написаны в файле темы functions.php. При этом ни обновление темы, ни даже её изменение на новую, данную интеграцию не нарушают.
Больше не нужно редактировать файл functions.php вашей темы или какой-либо из ваших файлов плагинов для добавления собственного кода PHP. Просто добавьте свой собственный PHP-код в поле на странице плагина, и этот плагин сделает все остальное за вас. Он автоматически добавит ваш PHP-код на ваш сайт, без изменения каких-либо файлов вашей темы и без замедления вашего сайта.
Плагин работает полностью независимо от темы, поэтому вы можете использовать его с любой темой и независимо от того, имеет ли тема файл functions.php или нет. Код, который вы разместите на странице плагина, не изменится, если вы отредактируете содержимое файла functions.php темы или даже полностью измените тему.
Это действительно полезно в случае обновления темы или плагинов WordPress, потому что ваш собственный PHP-код никогда не будет перезаписан. Ваш собственный PHP-код будет продолжать работать независимо от того, сколько раз вы обновляете или переключаете тему и плагины.
Установка плагина My Custom Functions
После установки и активации в разделе Настройки появится пункт PHP Inserter. Кликните по нему, откроется страница настроек плагина My Custom Functions:
На странице плагина вы найдете редактор кода на базе CodeMirror. Этот редактор кода имеет такие параметры, как выделение синтаксиса, нумерация строк и многое другое.
Вставка кода PHP в WordPress
Чтобы добавить свой собственный PHP-код на свой веб-сайт, просто выполните следующие действия: на вкладке Главная, вставьте свой собственный код PHP в поле редактора.
Установите переключатель в положение ON (Включить) и нажмите кнопку «Сохранить изменения». Наслаждайтесь результатом применения вашего собственного кода PHP. Это так просто! Да, если будите добавлять ещё один код, тогда сделайте один пробел после первого и вставляйте следующий.
Можно ли использовать код HTML / CSS / JS, интегрированный в код PHP? Да, можно. Но делать это нужно правильно, вот так:
Пока не забыл, поделюсь. На скриншоте добавлена функция только один логин на пользователя. Для чего это?
У вас есть сайт WordPress на основе платной подписки (членство)? И пользователи могут делиться своей учетной записью со своими друзьями или кем угодно, что делает ее для них бесплатной. Но вы этого не желаете.
Вы хотите, чтобы к одной учетной записи мог входить только один человек. Можно реализовать функцию, которая предотвращает одновременный вход в систему более одного пользователя.
Переходим к следующему плагину. Он мне нравится больше и я его использую на двух моих блогах. Шикарный модуль.
Плагин Code Snippets (фрагменты кода)
Плагин Code Snippets позволяет использовать на своём сайте сниппеты кода (хуки, хаки и другие), не редактируя файлы темы functions.php. Такой метод имеет много преимуществ – при обновлении темы код пользователя не теряется, нет необходимости в создании дочерних тем, хаки работают на любой теме.
Code Snippets предоставляет графический интерфейс, аналогичный меню Plugins, для управления сниппетами. Фрагменты можно активировать и деактивировать, как и плагины. Редактор фрагментов включает поля для имени, описание с поддержкой визуального редактора, теги, позволяющие категоризировать фрагменты, и полнофункциональный редактор кода.
Установка плагина Code Snippets
После активации плагин добавит новый пункт меню с надписью Сниппеты (Snippets) в панель администратора WordPress. Нажав на нее, вы увидите список всех фрагментов пользовательского кода. По умолчанию в плагине добавлены фрагменты кода для примера. Это:
Они все деактивированы. Не удаляйте их. Они могут пригодится вам в качестве инструкции, как встроить HTML, CSS и JavaScript в PHP код:
Этот плагин предоставляет графический интерфейс для управления сниппетами, что упрощает добавление кода.
Как добавить фрагменты PHP кода в functions.php WordPress
Кликните на пункт Добавить новый. Для добавление сниппета нужно заполнить поля названия и кода. Обязательно укажите заголовок для фрагмента кода. Таким образом, вы сможете легко идентифицировать коды в будущем:
После присвоения фрагменту имени и добавления PHP кода вы также можете написать описание, которое поможет вам запомнить цель кода, где вы его нашли и почему вы добавляете его на свой веб-сайт. Это может быть полезно другим пользователям, которые работают над вашим сайтом сейчас или в будущем:
После этого, нажмите Сохранить изменения и активировать. Будьте внимательны, перед добавление сниппета убедитесь в том, что он является корректным PHP кодом, и не приведет к сбоям. Хотя добавляемый Snippets сразу не активизируется, это поможет сократить вероятность включения не исправного сниппета в будущем.
Как было уже сказано, вы можете легко управлять своими фрагментами PHP кода, включать, выключать, редактировать, удалять, клонировать или экспортировать их.
Как создать свой плагин дополнительного файла functions.php
Хорошим решением будет создать свой кастомный мини плагинчик.
Если нужно добавить на сайт свои пользовательские функции, но при этом вам не хочется устанавливать предложенные готовые модули или разбираться с дочерними темами, то сделать это можно при помощи своего личного плагина. Создаём плагин — отдельный файл функций для сайта WP. Создайте файл с кодом:
Сохраните данный файл в формате PHP с уникальным названием например, my-functions.php и загрузите его в директорию wp-content/plugins. Никакая пара используемых плагинов не должна иметь одинаковое имя файла. Далее перейдите в раздел Плагины в панели администрирования WordPress и просто активируйте его:
А давайте создадим настоящий плагин как положено, со стандартной информацией о нём:
Мой плагин активирован