Где находится файл functions php в вордпресс
В PHP functions.php помещается функционал, необходимый вашей теме и который не относится лишь к конкретному шаблону.
В Кодексе WordPress дается следующее определения файла функций:
Файл functions.php ведет себя, как плагин, добавляя функции и функционал на WordPress- сайт. Его можно использовать для вызова как PHP-функций, так и встроенных функций WordPress, для определения собственных функций. Можно получить тот же результат, добавив код в плагин WordPress или в файл functions.php темы WordPress.
Между functions.php и файлом плагина существует сходство. Он используется для кода того же типа, который можно добавить в плагин.
Используйте functions.php , когда нужно добавить простые функции, связанные с отображением контента ( т. е. он не будет работать, если данная тема неактивна ).
Общее использование файла функций
Когда использовать functions.php :
Добавление кода в файл функций и его активация
Мы добавляем код в functions.php и указываем WordPress активировать его точно так же, как и в случае с плагином:
Создание файла функций
Если ваша тема не содержит functions.php , его нужно создать в корневом каталоге. Затем нужно добавить в файл открывающийся тег PHP , но закрывать его не нужно:
Теперь ваш файл функций готов к добавлению кода. Лучше добавлять перед каждым разделом большие блоки закомментированного текста, чтобы легко найти любой код:
Добавление кода в файл functions.php
Рассмотрим некоторые часто используемые функции.
Добавление поддержки темы
В WordPress есть определенные PHP static function , для которых нужно добавить поддержку темой, чтобы воспользоваться ими:
Таким образом, чтобы добавить, например, поддержку темы для форматов записей, необходимо использовать функцию add_theme_support() :
Некоторые из функций WordPress functions php , для которых добавляется поддержка темой, имеют дополнительные параметры. Например, при добавлении поддержки можно указать форматы записей, которые хотите использовать:
А для специальных изображений можно указать, в каких типах записей они будут поддерживаться:
Но ничего из этого не сработает, если вы не поместите свой код внутри функции и не привяжете к соответствующему хуку действия after_setup_theme . Можно добавить все функции add_theme_support() внутри одной более крупной функции, которую вы затем привяжете к after_setup_theme . Поэтому, если вы хотите добавить поддержку темой миниатюр записей, форматов записей, HTML5 и автоматических ссылок на каналы, добавьте следующий код в файл функций:
Добавление файла перевода
Перевод означает, что любой текст, который вы добавляете в панель администрирования через тему, будет переведен с использованием файла перевода.
С помощью 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() :
Обратите внимание : в коде, приведенном выше, я уже сделала название меню готовым к переводу. Поэтому любой пользователь, говорящий на другом языке, будет видеть текст « Основное меню », переведенным для него с помощью файла перевода.
Нужно добавить код меню в файл sidebar.php темы, используя функцию wp_nav_menu() .
Подведем итоги
Все функции, которые я описала выше, активируются с помощью одного хука действия: after_setup_theme . Это означает, что вместо написания нескольких отдельных функций, можно добавить их все в одну функцию, а затем активировать ее с помощью хука.
Можно создать одну большую функцию:
В моей функции добавлено много комментариев, поэтому пользователю легко разобраться, что происходит. Это упростит задачу, если в будущем нужно будет изменить или переопределить функцию WordPress functions php .
Включение файлов
Иногда functions.php становится трудно управляемым, и содержит блоки кода, которые хотелось бы хранить отдельно. В этом случае рекомендуется создать отдельные файлы, а затем вызвать их из functions.php .
Создайте в своей теме папку под названием includes , а затем добавьте в нее отдельные файлы PHP для каждого блока кода, который нужно отделить. Например, если нужно было переместить настройку темы в другой файл, я бы переместила весь приведенный выше код в файл с именем theme_setup.php , а затем вызвала его в functions.php :
Данный код вызывает код включаемого файла, а затем запускает его в том месте functions.php , в котором я добавила функцию include() . Обычно я помещаю все включаемые файлы в начале файла функций, чтобы их было легко найти.
Работа с родительскими и дочерними темами
functions.php может стать эффективным инструментом для работы с родительскими и дочерними темами. В дочерней теме можно использовать собственный файл функций для переопределения или удаления функций из родительской темы, или для добавления новых.
Существует три способа переопределения или добавления функций в дочернюю тему:
- Создание новой версии подключаемой функции;
- Деактивация функции родительской темы;
- Добавление собственной функции с использованием приоритета, чтобы переопределить функцию родительской темы.
Рассмотрим каждый из способов.
Подключаемые функции
Если вы работаете с хорошо проработанной родительской темой, то существует вероятность того, что в functions php ( где находятся функции ) они будут подключаемыми.
Функции дочерней темы выполняются раньше, чем те, которые содержит родительская тема. Если вы создаете в дочерней теме функцию с тем же именем, WordPress не будет запускать ее из родительской темы. Поэтому для переопределения родительской темы просто создайте в functions.php дочерней темы собственную функцию с тем же именем.
Деактивация функций
Чтобы деактивировать функцию, открепите ее от действия или фильтра, к которому она привязана. Например, если в родительской теме есть функция parent_function() , которая активируется с помощью хука init , можно деактивировать ее в дочерней теме следующим образом:
Это будет означать, что данная функция WordPress functions PHP больше не будет выполняться. Затем, если вы хотите иметь разные функции в дочерней теме, можно написать новую функцию. А затем привязать ее к тому же хуку, но не задавать для нее то же имя.
Примечание . Если родительская функция содержит параметр приоритета в add_action() выполняющей функцию, которую нужно деактивировать, вам нужно указать тот же приоритет при ее деактивации.
Использование приоритета функции
Допустим, что родительская тема содержит функцию parent_function() , которая активируется с помощью хука init с приоритетом 20 :
Можно написать функцию, которая переопределит родительскую функцию, а затем привязать ее к хуку init с более высоким приоритетом, например 30 :
Если родительская функция не имеет приоритета, то она будет использовать значение по умолчанию, равное 10 . Таким образом, можно использовать любое число больше 10 , чтобы функция дочерней темы выполнялась после родительской функции.
Файл PHP function темы работает очень похоже на плагин, но он специфичен для конкретной темы. Поэтому необходимо использовать его только для того, чтобы добавить функционал, который может быть отключен при активации другой темы. В этой статье вы узнали, для чего используется файл функций темы. Работайте с functions.php осторожно, избегайте его использования, когда все что нужно можно сделать с помощью плагина.
Пожалуйста, опубликуйте ваши отзывы по текущей теме материала. Мы очень благодарим вас за ваши комментарии, подписки, отклики, лайки, дизлайки!
Пожалуйста, оставляйте ваши отзывы по текущей теме статьи. За комментарии, дизлайки, отклики, подписки, лайки огромное вам спасибо!
Вступление: Здравствуйте! Один из важнейших файлов вашей рабочей темы является файл functions.php WordPress. Любой администратор сайта обязан знать назначение этого файла и правила работы с ним.
Что такое файл functions.php WordPress?
Файл functions.php не нужно создавать. Он создан разработчиком темы и включён в каталог темы. Работает файл, как плагин и активируется с активацией выбранной вами темы.
Написан файл functions.php на языке программирования PHP, с использованием функций и тегов разработанных для CMS WordPress.
Где находится файл functions.php?
Файла functions.php (файл функций) находится в папке вашей рабочей темы. Чтобы его найти откройте корневую папку вашего сайта. В нём откройте каталог wp-content , далее каталог themes . Теперь, открыв каталог с названием вашей рабочей темы вы найдёте файл functions . Однако не торопитесь его редактировать. Напрямую лучше этого не делать.
Ещё раз обращу ваше внимание: файл функций есть в любой теме WordPress. Он не является шаблонным. Каждый разработчик специально пишет его для своей темы. Однако вы можете его редактировать добавляя новые и изменяя старые возможности вашей темы (о редактировании чуть ниже).
Как редактировать файл functions.php WordPress?
В Интернет вы легко найдёте куски кодов php , которые нужно добавить в файл функций, чтобы изменить и дополнить функционал темы.
Структура этих кодов узнаваемо проста: в начале идёт function, далее название функции, далее код. В конце кода могут быть: add_action (хук действия) add_filter (хук фильтра).
Однако напрямую вставлять новую функцию в файл функций рабочего проекта я вам не рекомендую, и вот почему.
Во-первых, неправильный код или его неправильная вставка непосредственно в файл функций могут «убить» ваш сайт.
Примечание: Проблемы с доступностью сайта в результате ошибок на WordPress принято называть «Белый экран смерти». Самое простое решение проблемы «белого экрана» наличие резервной копии сайта. Читать: Резервное копирование сайта WordPress. О более сложных решениях поговорим в следующих статьях.
Ещё раз обращу ваше внимание: самая простая ошибка в коде в виде пропущенной точки с запятой, может заставить весь ваш сайт исчезнуть.
Во-вторых, если вставляемый код правильный и начнёт работать, он исчезнет после первого обновления вашей темы.
В-третьих, если вы смените тему все ваши новые добавленные функции перестанут работать.
Как правильно редактировать файл functions.php?
Есть два правильных варианты редактирования (добавления функций) файла functions.php . Один простой, второй более сложный.
Простой вариант
Есть великолепный плагин под названием «Code Snippets», автор Code Snippets pro.
Установив его на сайт единожды, вы сможете редактировать файла functions.php рабочей темы без выше перечисленных опасений. Как работать с этим плагином читайте в следующей статье.
Сложный вариант
Для этого создаёте в «дочке» файл functions.php , можно пустой. Далее просто вносите свои новые функции (хуки) в этот файл.
Создать пустой файл просто. В файле должен быть открывающий тег PHP в начале и закрывающий тег PHP в конце. Между ними вы должны вставлять ваши новые функции.
Обратите внимание, что файл functions.php «дочки» не подменяет такой же файл «родительской темы». В «дочке» он будет загружаться как дополнение к файлу функций родителя, но перед ним. Читать: Самый простой способ создать дочернюю тему.
Пример правки файла functions.php WordPress
Не все темы WordPress в customizer имеют настройки по фильтру рубрик, которые нужно показывать на главной странице последних записей. Это можно сделать с помощью такой функции с хуком фильтра. Вот она:
Итак, функция с хуком фильтра у нас есть. Теперь нужно проверить имеющийся код на синтаксис php (адрес сервиса проверок выше).
Как видим ошибок нет. Далее нужно вставить этот код на сайт при помощи плагина Code Snippets.
После активации сниппета указанные в коде рубрики не будут показаны в блоге последних записей.
В WordPress можно реализовать множество возможностей. Причём для этого можно использовать как плагины, так и непосредственно вписывать необходимый код в файлы, что относятся к WordPress. И одним из таких популярных файлов является functions.php.
Содержание:
Что за файл functions.php, каковы его задачи
Данный файл в обязательном порядке располагается в директории с используемой темой (дизайна) сайта. В большинстве своём в этом файле прописываются те или иные функции, отвечающие за дизайн и функционал используемой темы сайта (дизайна). Однако это далеко не весь перечень возможностей, что позволяет реализовать данный файл. Этот файл «подхватывается» при непосредственной инициализации движка WordPress, что означает, что имеющийся в файле код исполняется при вызове совершенно любой страницы сайта, включая даже консоль WordPress.
Давайте посмотрим, какие задачи можно решать с использованием файла functions.php:
- Внешний вид, функционал темы – как уже говорилось выше, изначально в этом файле размещается код, в первую очередь отвечает за дизайн и функционал темы. Он может быть самым различным, на усмотрение автора, что создал тему.
- Функционал сайта – в этом файле может размещаться код, что отвечает в целом за функционал сайта, логику его работы. Вы можете добавить самый различный код, затрагивающий все возможные области функционирования сайта.
- Консоль WordPress – да, размещаемый в файле код подхватывается и при использовании админ-панели WordPress. Можно что-либо изменить там с помощью всё того же functions.php.
По принципу работы файл functions.php практически идентичен добавленному на сайт плагину. Однако есть и свои особенности:
- Файл functions.php располагается в директории с файлами темы (дизайна сайта). Если, к примеру, вы переключите тему на другую, то будет обрабатываться уже имеющийся там файл functions.php.
- Плагин можно в любой момент включить или отключить, а код в functions.php обрабатывается всегда. И если вы туда что-то вписали для расширения функционала, то для его отключения впоследствии следует будет удалить вписанный ранее вами код.
- Файл расположен в папке с темой. И если выйдет новая версия темы и вами она будет установлена, то данный файл будет перезаписан, а все сделанные вами в нём изменения будут затёрты.
Где находится файл functions.php
Необходимый файл располагается в директории, где расположены другие основные файлы темы (header.php, footer.php, single.php и так далее). А сама директория располагается по пути wp-content/themes/<название_темы>/
Стоит сказать, что одноимённый файл ещё имеется в папке /wp-includes/, где располагаются файлы самого движка WordPress. И этот файл не подлежит редактированию.
Редактирование файла functions.php
Упоминание файла functions.php часто встречается в различных руководствах для WordPress, позволяющих расширить тот или иной функционал сайта.
Отредактировать файл можно двумя способами, давайте их рассмотрим:
-
Первый вариант заключается в использовании возможностей по редактированию файлов, что предлагает сам WordPress.
Необходимо в консоли WordPress зайти в меню Внешний вид и далее нажать по пункту Редактор тем и выбрать необходимый файл для правки.
Вписывать код необходимо после блока описания темы. На изображении ниже вы можете видеть пример данного блока.
В некоторых темах у файла functions.php данного блока нет. В этом случае вписываете желаемый код сразу после <?php. На изображении ниже наглядно это продемонстрировано.
Этот способ весьма удобен и предпочтителен, ведь если внести какую-либо некорректную запись в файл functions.php, то сайт может перестать функционировать, включая админ-панель WordPress. Но это никак не повлияет на работоспособность FTP. Вы всегда сможете моментально отменить все внесённые в файл изменения.
И так, используя FTP клиент (их существует множество, как платных, так и полностью бесплатных), настройте в нём доступ к файлам своего сайта (инструкцию по настройке можно получить у провайдера хостинга). Открыв в нём список вашего сайта, перейдите в папку wp-content/themes/<название_темы>/ и далее откройте на редактирование файл.
Впишите или отредактируйте необходимое и сохраните результат. Если что-то пойдёт не так, то вы сможете моментально отменить все внесённые изменения, для этого в верхнем меню имеется пункт Правка -> Отмена или стрелочки на панели инструментов.
Вот мы и рассмотрели детально, что за файл, который весьма часто упоминается в статьях и материалах, где приводятся различные твики и функциональные решения для сайта, работающего на движке WordPress.
Файл functions.php для WordPress неоднократно упоминался в данном блоге при решении тех или иных задач. Однако при этом я говорил о нем вскользь, подразумевая, что вы хорошо знакомы с его работой. Сегодня же наоборот, решил детально рассмотреть все нюансы, которые касаются файла функций functions.php: зачем он вообще нужен, как правильно и безошибочно с ним работать и т.п. Инструмент на самом деле весьма актуальный как при работе с админкой, так и в процессе редактирования темы. Пусть информация и немного теоретическая, почитать будет полезно (особенно новичкам).
Статья имеет 3 подраздела:
Что такое файл functions.php и зачем он нужен?
Как правило, в данном файле задаются дополнительные функции для шаблона, позволяющие менять внешний вид вашего сайта. Однако на самом деле его возможности значительно шире, поскольку functions.php в WordPress автоматически загружается при инициализации системы. То есть при вызове любой страницы, как фронтенда (сайта), так и бэкенда (админки), соответствующие функции из данного файла будут выполнены.
Следовательно, с помощью файла functions.php вы можете решить целый спектр абсолютно разных задач:
Вообще файл functions.php в WordPress по логике и скорости работы напоминает плагины. Хотя при этом у них есть принципиальные отличия. Модули используются, как правило, для решения каких-то конкретных задач и применяются к любой теме вашего сайта. Плюс для работы их нужно активировать. Что касается файла шаблона functions.php, то он может содержать много разных функций и выполняется только для той темы, в которой определен. То есть при смене шаблона, все ваши текущие наработки будут отключены, а система начнет считывать информацию из другого файла функций (об этом следует помнить).
Где находится functions.php и как его редактировать?
Сейчас в WordPress файл шаблона functions.php можно найти в 99% популярных тем, но раньше он был не везде. Если в вашей теме нет functions.php, то вы спокойно можете его создать.
Есть два способа редактирования файла функций:
- через WP админку;
- с помощью текстового редактора.
Если файл functions.php закрыт для записи, то воспользоваться встроенным редактором WordPress у вас не получится. В таком случае запускаете FTP клиент, например, Mozilla и скачиваете файл функций на локальный компьютер.
Вставка сниппетов (примеры кода и типичные ошибки)
Дабы у вас не возникало ошибок при работе с functions.php в WordPress, давайте рассмотрим основные правила вставки кода и возможные ошибки. Первым делом обратите внимание на глобальную структуру любого PHP файла:
<?php // . разный PHP код и функции . ?>
Здесь в начале идет специальный открывающий тег и в конце закрывающий. Важно чтобы не было никаких пробелов перед открывающимся и после закрывающегося тегов! Хотя в некоторых случаях вы можете встретить запись, когда последнего тега нет (для PHP это нормально). Давайте рассмотрим парочку примеров.
Ситуация 1
Допустим, вы нашли в интернете готовый сниппет для решения определенной задачи. И в описании сказано, что нужно вставить этот код в файл функций functions.php. В качестве примера выберем код удаления WP версии из wp_head:
Так размещать неправильно:
<?php // . разный PHP код и функции . <?php remove_action('wp_head','wp_generator'); ?> ?>
<?php // . разный PHP код и функции . remove_action('wp_head','wp_generator'); ?>
Следующий вариант также будет работать (между PHP блоками не должно быть пробелов):
<?php // . разный PHP код и функции . ?><?php remove_action('wp_head','wp_generator'); ?>
Ситуация 2
Допустим вы хотите обновить jQuery в WordPress для чего нашли соответствующий код:
Неправильный вариант использования:
Нельзя размещать код после закрывающего PHP тега. Вам нужно поставить всю функцию внутрь конструкции:
Кстати, если в functions.php закрывающего тега ?> нет (что допускается), то добавляете нужный сниппет просто в конец файла.
Ситуация 3
Нельзя вставлять сниппет внутрь другой функции. Допустим, в файле шаблона functions.php у вас имеется следующий код:
Неправильный вариант вставки:
Ситуация 4
Итого. Надеюсь, данное руководство по WordPress файлу functions.php вам пригодится. Данный инструмент в веб-разработке под WP весьма и весьма полезен. Нужно только внимательно с ним работать, так как ошибки могут привести к проблемам в работе сайта. Дабы ничего не нарушить я предпочитаю редактировать файл через текстовые редакторы, предварительно сохранив оригинальный вариант на всякий случай.
Если у вас остались вопросы по работе с functions.php в вордпресс, пишите их в комментариях.
Понравился пост? Подпишись на обновления блога по RSS, Email или twitter!Каждый знакомый с WordPress слышал про файл темы (шаблона) functions.php . Однако не все хорошо понимают его назначение, видя в нем лишь файл в котором хранятся различные php функции. В сети, как и у меня на этом сайте, часто предлагается добавлять PHP код в этот файл. Однако не каждый код подойдет для этого файла. Не потому что он не будет работать, а потому что он не подходит по логике использования.
Ищем WP-разработчика! Фулл-тайм, удаленка, хорошая зарплата, соц. пакет. Подробности.Компания Boosta.
Также при редактировании functions.php новички допускают ошибки из-за которых сайт перестает работать.
В этой статье я постараюсь рассмотреть все эти моменты: когда нужно использовать functions.php и когда этого лучше не делать, какие ошибки при редактировании functions.php могут возникнуть.
Возможности functions.php
functions.php располагается в папке темы и загружается каждый раз, во время просмотра внешней части сайта, в админ-панели и даже во время AJAX запросов. Нет случая, когда functions.php не будет подключен и это открывает широкие возможности перед разработчиками.
Для примера, следующий код, вставленный в файл темы functions.php расширит возможности темы - включит поддержку миниатюр поста:
Другой пример, код заменит текст в подвале админ-панели WordPress, на данные о количестве запросов к базе данных, времени генерации страницы и использовании памяти:
меню
functions.php против плагинов
— «Плагины работают медленнее чем код в файле functions.php», говорят неосведомленные - это не так!
Нет никакой разницы в скорости работы кода, не важно подключается он через плагин или через файл 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
functions.php подключается во время инициализации текущей темы, после того, как подключены все функции WordPress и все активные плагины. Опишу коротко хронологию загрузки WordPress, где видно, когда подключаются важные файлы:
Процесс загрузки WordPress, и functions.php в частности, хорошо показан на этом рисунке:
Схема загрузки WordPress меню
Ошибки в functions.php при вставке кода
Неоднократно встречал вопросы об ошибках, вроде: "После установки кода в файл functions.php сайт перестал работать - белый экран. Что делать?". Я и сам с подобным сталкивался когда-то.
Для меня некоторые решения этой проблемы, долгое время, оставались загадкой — вроде ничего не делал, и даже танца с бубном не было, но - раз и все заработало. Почему так происходит? Давайте рассмотрим возможные ситуации из-за которых может "ломаться" сайт и их объяснение:
Вставляете готовый код — сайт перестает работать.
Чаще всего, дело в открывающем и закрывающем тегах PHP <?php и ?> . Обычно, если вставляемый код имеет в начале и в конце эти теги, то их нужно удалить. Также, файл functions.php не должен выводить на экран никакой текст (HTML код или другой контент). Вывод текста допускается только внутри функции, которые в дальнейшем будут использоваться в шаблоне или которые прикрепляются к хукам (подробнее см. ниже).
Чтобы не было ошибок, учитывайте 4 момента:
Пример, у нас была такая структура:
Если Вы добавили php код так, то это вызовет ошибку или, что еще хуже, белый экран, когда показ ошибок отключен:
Такой код вызовет ошибку:
Логичнее его записать так:
Бывает что перенос строки ставят в самом конце functions.php, вот тогда это становится настоящей проблемой, потому что все казалось бы правильно, но сайт не работает. На самом деле после ?> или до <?php присутствуют невидимый символ переноса строки \n. Выглядит такая ошибка, крайне безобидно, вот так:
По этой причине многие разработчики вообще удаляют закрывающий тег ?> , это допустимо для PHP. Рекомендую всегда делать именно так:
Если в functions.php присутствует функция, то внутри этой функции можно использовать теги <?php и ?> , например, для того, чтобы визуально выделить HTML код внутри функции:
Читайте также: