Как открыть functions php в wordpress
Перейти к содержимому

Как открыть functions php в wordpress

  • автор:

Начало работы с WordPress: настройка функциональности сайта посредством редактирования functions.php

Итак, настало время восьмой и заключительной части из цикла статей, посвященных пошаговому созданию своего сайта на WordPress . Я надеюсь, что после прочтения предыдущих статей вы уже достаточно уверенно чувствуете себя в вопросах создания и настройки собственного сайта. Я заметил одну интересную вещь: как только вы начинаете понимать основные взаимосвязи между компонентами WordPress , то для вас открывается широчайшее поле для экспериментов.

В сегодняшней статье мы рассмотрим последний мистический файл, который входит в нашу тему и с которым вам часто придется иметь дело. Это один из тех файлов, вносить изменения в который можно не боясь в глобальных масштабах нарушить работу темы. Сегодня мы будем разбираться с данным файлом – шаблоном функций ( functions.php ).

Если вкратце, то этот файл отвечает за переопределение стандартного функционала нашего сайта. Помимо этого, мы также можем добавлять новые функции. Это очень мощный инструмент! И сегодня мы рассмотрим несколько способов, используя которые можно расширить возможности нашего тестового сайта.

Перед тем как мы начнем, нам понадобится :

  • FTP-доступ к нашему сайту;
  • текстовый редактор;
  • иконка сайта размером 32 на 32 пикселя, сохраненная в формате .ico с именем favicon.ico.

Чем мы будем заниматься:

  • привязывать к нашему сайту код отслеживания Google Analytics для учета статистики;
  • добавлять иконку на наш сайт.

Перед тем, как мы продолжим, надо разобраться в том, как шаблон функций ведет себя в контексте нашей дочерней темы, потому что его поведение несколько отлично от других шаблонов.

В дочерней теме, вместо того, чтобы заменять функциональность в соответствующих файлах родительской темы, как это делалось в предыдущих статьях цикла, файл functions.php позволяет добавлять новый или расширять имеющийся функционал. Он не заменяет имеющиеся функции, но позволяет переопределить их поведение.

Поэтому, когда вызывается наша страница, и сервер производит магическую операцию, собирая все шаблоны в один файл, то сначала исполняется код, написанный в functions.php дочерней темы, а потом уже родительской.
Так как файл функций написан на языке PHP, нам доступны все средства языка разметки HTML.

Что ж, давайте приступим!

Привязка трекинг-кода Google Analytics к нашему сайту для учета статистики

В этой части статьи, мы научимся добавлять к нашему сайту функции статистики. Помимо описанного способа, можно воспользоваться специальными плагинами. Скажу сразу, что использование плагинов это не менее правильный способ, чем тот, о котором рассказывается ниже.

Суть дела заключается в том, что большинство плагинов, которые предоставляют данные возможности, будут (в основном) не сильно отличаться в установке и настройке. Они просто будут хранить код, реализующий функции, в отдельных файлах в своих папках. Тот способ, который описан ниже, очень практичен, не слишком сложен и нагляден для целей данной статьи. Итак, давайте подробнее.

Создание собственного файла функций

Шаг 1 . Откройте ваш FTP-клиент и перейдите в директорию дочерней темы .

Шаг 2 . В списке файлов на удаленном сервере нажмите правой кнопкой мыши и выберите « Создать новый файл » (Create new file).

Создание собственного файла функций

Шаг 3 . Введите имя вашего будущего файла функций — functions.php – и нажмите OK .

Создание собственного файла функций - 2

Шаг 4 . Откройте созданный файл functions.php в текстовом редакторе.

Шаг 5 . На этом шаге вам нужно настроить только что созданный файл так, чтобы сервер распознавал его, как содержащий код PHP. Для этого, добавьте открывающий тег

OK, давайте разберемся с этим кодом.

// Вставка кода Google Analytics в футер

Строка 1 у нас начинается с двух символов //. Это означает начало комментария, который не несет в себе функциональности, но дает информацию о назначении той или иной части кода для человека, который его читает. Использования двух идущих подряд символов слэша (//) это быстрый способ создать однострочный комментарий в коде PHP. Если мы хотим создать блок комментариев, расположенных более чем на одной строке, то следует использовать конструкцию — /* здесь комментарий */ — аналогично комментариям в CSS. Очень полезно добавлять комментарии и заметки, чтобы потом самому разобраться в своем коде, что особенно актуально для больших проектов.

add_action( 'wp_footer', 'mytheme_add_googleanalytics' );

Строка 4, начинающаяся с функции add_action, выглядит на первый взгляд непонятно.

add_action это функция PHP, которая исполняет нужные нам действия в заданных местах кода. Это называется « ловушка » или « крючок » (hook). В интернете можно найти множество примеров функций, которые позволяют добавлять или удалять функционал с использованием механизма ловушек. В данном случае, мы используем функцию add_action чтобы « подцепить » код функции mytheme_add_google_analytics к функции wp_footer.

function mytheme_add_googleanalytics() 

Строка 5 определяет и открывает тело функции mytheme_add_google_analytics.

и в строке 7 следует место, оставленное под вставку кода с сайта сервиса Google Analytics. Пока это лишь HTML-комментарий, но скоро мы это исправим.

В строке 9 мы закрываем функцию с помощью фигурной скобки.

Шаг 7 . Теперь пришло время войти в наш аккаунт Google Analytics и скопировать код для вставки. Зарегистрируйте аккаунт в Google и войдите в сервис Google Analytics.

Шаг 8 . Теперь, вставьте в строку 7 скопированный код вместо HTML-комментария.

Шаг 9 . Теперь сохраните файл и обновите страницу в браузере, чтобы увидеть изменения.
Исследуйте код страницы с помощью « инспектора », чтобы увидеть ваш динамический вставленный код:

Добавление иконки к вашему сайту

Вы ведь знаете что такое favicon , верно? Если хотите освежить память или узнать, то воспользуйтесь поиском по запросу « Что такое favicon ». Вкратце, это маленькая иконка, которую вы часто можете увидеть справа от названия сайта в открытых закладках вашего браузера, либо в списке сохраненных закладок.

Шаг 1 . Создайте свою иконку favicon.ico , используя специальную программу (например, IcoFX), либо скачайте готовый вариант в интернете.

Шаг 2 . Загрузите значок в директорию с вашей дочерней темой через FTP-клиент.

Шаг 3 . Вставьте следующий код в ваш файл functions.php :

// Добавление favicon на ваш сайт add_action( 'wp_head', 'mytheme_add_favicon' ); function mytheme_add_favicon() < echo ''; >

Шаг 4 . Сохраните файл на удаленный сервер и обновите ваш сайт в браузере, чтобы увидеть изменения.

В строке 1 записана уже известная вам функция add_action (смотрите выше), но мы её определяем по-другому. В данном случае, крючок мы вешаем на функцию wp_head (в противовес предыдущей функции add_action, которая была привязана к футеру, здесь мы привязываемся к шапке нашего сайта), а привязываемой функцией является mytheme_add_favicon .

Обратите внимание на принцип записи имен функций:

Вы можете заметить, что в обоих случаях, я начинал название функции по первой части имени нашей дочерней темы mytheme _ и оканчивал писанием того, что делает данная функция, то есть add_favicon . Это делается по нескольким причинам:

  1. так легче сразу же понять, что делает данная функция;
  2. это существенно снижает риск совпадения имен создаваемых функций с уже имеющимися в родительской теме или в самом WordPress и, соответственно, не дает нарушить нормальную работу всей системы.

В любом случае, если у вас в директории с дочерней темой имеется файл favicon.ico, то код, приведенный выше, должен отлично работать. Немного пояснений:

  1. В строке 8 мы говорим нашей теме вставить HTML-строку в шапку нашего сайта. Эта строка также сообщает, где искать файл favicon.ico .
  2. Маленький кусочек кода на PHP в этой строке - функция get_stylesheet_directory_uri( ) - получает путь к нашему файлу значка, который находится в папке с дочерней темой.

Если код написан правильно и файл значка находится в нужном месте, браузер в свою очередь отобразит значок нашего сайта в открытой вкладке, там, где вы обычно видите все подобные иконки.

Обратите внимание на принцип записи имен функций:

Можно заметить, что в этом примере нам не нужно было повторно открывать и закрывать теги , как мы делали это на шаге 7 и 8 первого примера. Это потому, что во втором примере, все было написано на коде PHP от начала и до конца. И даже несмотря на то, что туда включались кусочки на HTML, это была лишь PHP-строка. Если вам это пока непонятно, то, как только вы освоитесь с функциями, подобными приведенным выше, а также научитесь писать их самостоятельно, вы поймете разницу, о которой я говорю. Главное надо понимать, что код, приведенный выше, корректен и в подобных случаях вы можете использовать аналогичные приёмы.

Заключение

Теперь вы начинаете осознавать потенциал файла functions.php , и вскоре вас невозможно будет остановить даже самой сложной задачей! С ростом опыта и знаний, вы сможете реализовать на своем сайте практически любой функционал, который захотите, и, в конце концов, возьмете весь свой ресурс под полный контроль!

Помните! Перед внесением изменений в файлы на сервере, обязательно сохраняйте их копии на рабочий стол. Неверный код в файле functions.php может вызвать возникновение проблем, которые нарушат нормальную работу сайта, а если вы будете сохранять копии файлов ДО внесения в них изменений, то всегда сможете сделать « откат » до предыдущей версии и начать сначала.

Редакция Перевод статьи « Beginning With WordPress: Customising Our Site’s Functionality Using functions.php »

Файл functions.php в теме WordPress

В большинстве тем оформления WordPress можно обнаружить файл functions.php. Он находится в корневой папке темы. Файл подключается автоматически на каждой странице сайта, в панели администирования и даже на AJAX запросах.

Этот файл хранит в себе функций, которые применяются в теме. Рассмотрим этот файл подробнее, чтобы понять какой код он хранит и какой код не стоит записывать в него.

Что стоит хранить в functions.php

  • Подключение файлов темы. В том числе файлов локализации.
  • Настройки темы и дополнительные вспомогательные функции темы.
  • Изменение параметров боковых панелей.
  • Функции для вывода миниатюр.
  • Изменение параметров отображения виджетов.
  • Определение мест под меню навигации.

В файл functions.php стоит записывать только тот код, те функции, которые непосредственно связаны с текущей темой. К примеру, не стоит писать в него код, который влияет на работу панели администрирования.

Что не надо хранить в functions.php

  • Функции для панели администрирования (добавление кнопки в панель, редактирование панели).
  • Отключение функций WordPress (к примеру, функций pingback/trackback).
  • Роли пользователей и привилегии.
  • Код виджетов.

В файл functions.php лучше писать только тот код, отключение которого при смене темы не принесёт к сбою в работе сайта. Если код не подходит для включения в файл functions.php, то стоит оформить его в виде плагина.

Белый экран после изменения functions.php

После редактирования файла functions.php может произойти неприятная ситуация - вместо сайта будет показан белый экран. Часто ошибка кроется в том, что программисты пытаются сделать вывод HTML кода непосредственно при подключении этого файла. Но так делать нельзя: необходимо помещать вывод внутрь функции и делать её вызов в других файлах темы сайта.

Файл functions.php может содержать функции, которые делают вывод (к примеру, кода HTML). Но он не может непосредственно выводить его при подключении файла. Потому что файл functions.php вызывается до установки заголовков страницы. Поэтому даже если в файле будет вывод символа пробела или переноса строки, то браузер отобразит пользователю пустую страницу.

Файл functions.php должен содержать PHP код от начала до конца.

Вывод может быть сделан в функции, но вызывать такую функцию надо в дргуом файле темы, а не в functions.php:

Если переживаете, что после закрывающего тега ?> останется пробел или перенос строки, то уберите весь тег. Компилятор закончит работу с окончанием файла, ошибки не будет:

Временные изменения в functions.php

Существуют некоторые приёмы ремонта сайтов на WordPress, при которых используется вызов функций в файле functions.php. К примеру, если перенести сайт с одного домена на другой и забыть изменить адрес сайта в настройках через панель администрирования, то будет срабатывать перенаправленние на старый домен при попытке загрузки любой страницы сайта. Чтобы решить эту проблему, можно вызвать функции изменения адреса сайта непосредственно в файле functions.php. А так как он загружается при открытии любой страницы сайта, то при первом же срабатывании значения настроек будут изменены.

Для этого откройте файл functions.php текущей темы сайта и добавьте две строчки с функцией "update_option" в самое начало:

Где вместо "https://www.mousedc.ru" поставьте новый адрес своего сайта. Затем загрузите страницу. Адрес пропишется в настройках: исчезнет перенаправление, появится возможность войти в панель администрирования.

После совершения операции удалите обе строки с "update_option". Иначе при каждой загрузке страницы будет выполняться два бесполезных запроса к базе данных, снижая быстродействие сайта.

Настройка функциональности WordPress с помощью functions.php

Итак, мы находимся на восьмом и последнем этапе нашего квеста о том, как попасть на сайт WordPress. Я надеюсь, что теперь вы чувствуете себя намного комфортнее, играя с собственными сайтами. Одна из замечательных вещей, которые я нашел в WordPress, – это огромное количество вещей, которые вы можете сделать с ним, как только вы начнете знакомиться с тем, как все складывается вместе.

В сегодняшнем уроке мы рассмотрим последний загадочный файл нашей темы, который вы часто будете видеть в ловушках; тот, в который вы, возможно, уже вставили фрагменты кода, не зная, почему или почему. Сегодня мы будем возиться с шаблоном функций ( functions.php ).

Для углубленного обсуждения этого загадочного документа вы не можете пройти мимо того, что обсуждается в Кодексе , но вкратце, файл «Функции» – это средство, с помощью которого мы можем изменить функциональность по умолчанию на некоторых наших сайтах. Используя этот файл, мы также можем расширить функциональность сайта. Это довольно мощный инструмент, и сегодня мы рассмотрим лишь несколько способов его использования для расширения нашего тестового веб-сайта.

Прежде чем мы начнем

  • FTP доступ к вашему сайту
  • Ваше программное обеспечение для редактирования текста
  • Изображение favicon размером 32×32 пикселей, сохраненное в формате .ico, с именем favicon.ico.

Что мы будем делать

  • Добавление в код отслеживания Google Analytics (вы можете использовать плагин для этого, но мы используем это в качестве примера)
  • Добавление в избранное на ваш сайт

Прежде чем мы продолжим, мы должны немного рассказать о том, как файл функций ведет себя в контексте вашей дочерней темы. Это немного отличается от других шаблонов, с которыми мы работали.

В дочерней теме вместо того, чтобы заменять функциональность соответствующего файла в родительской теме, как мы делали в нашем предыдущем уроке, functions.php добавляет или расширяет функциональность родителя. Он не заменит его, что, если вы помните, так ведут себя другие шаблоны в дочерней теме.

Итак, когда наша страница вызывается, и сервер делает свое волшебство, собирая все шаблоны вместе, он ищет функции в дочерней теме, выполняет их, а затем ищет родительский элемент и выполняет эти функции.

Во-вторых, файл функций также является файлом PHP, и функции, которые мы вставляем / пишем, будут включать код PHP, а также, возможно, некоторый HTML. Так что они помогают нам завоевать популярность у нас! (высокие пятерки со всех сторон!)

Давайте углубимся в это.

Добавление кода отслеживания Google Analytics

Сразу скажу, что нет ничего плохого в добавлении кода аналитики с помощью плагина. Фактически, большинство плагинов, которые предлагают эту функциональность, (по сути) не будут сильно отличаться от этого процесса, они просто убирают код из файла плагина. Тем не менее, это полезная и не слишком сложная иллюстрация для целей этого упражнения. Итак, давайте посмотрим.

1. Создание файла наших функций

Шаг 1. Откройте ваш FTP-клиент и перейдите в каталог дочерней темы .

Шаг 2. В списке файлов на удаленном сервере щелкните правой кнопкой мыши и выберите « Создать новый файл» .

1-bwwp_8 создать новый файл-

Шаг 3. Введите имя вашего файла функций как functions.php и нажмите ОК .

2-bwwp_8 создать-новый-файл-б

Шаг 4. Откройте новый файл functions.php в текстовом редакторе.

Шаг 5. На этом этапе нам нужно настроить файл так, чтобы наш сервер распознал его как файл PHP. Поэтому добавьте открывающий тег PHP, например

3-bwwp_8 создать-новый-файл-с

Шаг 6. Теперь мы готовы вставить некоторый код в наш functions.php .

Вот код, который мы вставим, и ниже это объяснение того, на что мы смотрим:

// Inserting Google Analytics Code to the Footer
add_action( ‘wp_footer’, ‘mytheme_add_google_analytics’ );
function mytheme_add_google_analytics() <

Хорошо, давайте разберемся.

// Inserting Google Analytics Code to the Footer

В строке 1 у нас есть предложение, начинающееся с двух // знаков. Это комментарий, который ничего не делает программно, он просто предназначен для информации о человеке, редактирующем файл. Форматирование его с помощью косой черты – это быстрый способ закомментировать одну строку кода PHP. Если мы /* comment here */ целый блок, который пересекает более одной строки, мы будем использовать обычный /* comment here */ метки, которые мы также используем в CSS. Хорошей практикой является добавление комментариев в виде заметок при написании кода, чтобы вы могли быть в курсе того, где вы находитесь и чем занимались.

add_action( ‘wp_footer’, ‘mytheme_add_googleanalytics’ );

В строке 4 у нас есть немного сложный код, начинающийся с add_action .

add_action – это функция PHP, которая связывает действия с местами в коде, называемыми хуками. Мы можем найти целую кучу фрагментов кода в Интернете, которые фактически являются функциями PHP для добавления или удаления функциональности для различных хуков в нашем коде. В этом случае мы используем это add action add, чтобы добавить функцию wp_footer ловушку wp_footer .

function mytheme_add_googleanalytics() <

Строка 5 фактически определяет и открывает функцию mytheme_add_google_analytics :

и от линии 7, которая следует, является тяжелой подъемной частью, которая фактически там, где мы обеспечим функциональность. На данный момент это всего лишь комментарий HTML (), мы исправим это в ближайшее время.

Шаг 7. Теперь пришло время войти в свой аккаунт Google Analytics и получить код для встраивания. Я подожду здесь, пока ты это сделаешь …

Шаг 8. Теперь идите и вставьте это в строку 7 поверх нашего HTML-комментария.

4-bwwp_8 паста-G-аналитика

Шаг 9. Теперь сохраните ваш файл и загрузите его на свой сервер.

Вы должны быть в состоянии проверить код вашей страницы и увидеть, что код счастливо сидит внизу вашего исходного кода:

5-bwwp_8 паста-G-аналитика-б

Добавить Favicon на ваш сайт

Вы знаете, что такое значок, верно? Если вам нужен переподготовка, отправляйтесь в Кодекс за дополнительной информацией . Короче говоря, это маленькая иконка, которую вы часто видите, отображая логотип или пользовательское изображение на вкладках браузера или когда ссылка на ваш сайт сохраняется в виде закладки.

Шаг 1. Создайте файл favicon.ico в своем любимом программном обеспечении для редактирования изображений.

Шаг 2. Загрузите ваш favicon в каталог вашей темы (ваша дочерняя тема) через FTP.

Шаг 3. Вставьте следующий код в ваш файл functions.php :

// Add a Favicon to the Site
add_action( ‘wp_head’, ‘mytheme_add_favicon’ );
function mytheme_add_favicon() <

Шаг 4. Сохраните файл и загрузите его обратно на свой сервер.

Описав, что происходит в функции WordPress ранее, вы должны довольно просто понять, что происходит в этой следующей функции. Во-первых, давайте посмотрим на код …

Для начала в строке 4 мы видим, что мы создаем еще одну функцию add_action . Хук, на который мы wp_head наш код, это wp_head (поэтому, в отличие от предыдущего хука, мы добавляем его в верхний колонтитул нашего сайта, а не в нижний колонтитул), а имя нашей функции – mytheme_add_favicon .

Примечание о функциях именования:

Возможно, вы заметили, что в обоих этих случаях я назвал функции, начиная с нашей пользовательской темы имени mytheme_ и заканчивая описанием того, что делает наша функция, например, add_favicon . Причина этого двоякая:

  1. Это позволяет сразу увидеть, чего именно должен достичь наш код, и …
  2. Это исключает риск использования имен функций, которые уже существуют в нашей родительской теме или в самом WordPress, и, таким образом, снижает риск разрушения нашей темы.

В любом случае, если у вас есть файл favicon.ico в каталоге вашей темы, приведенный выше код должен работать «из коробки», но для пояснения:

  1. В строке 8 мы говорим нашей теме вставить строку HTML в head нашего сайта. Это говорит браузеру, где найти favicon.ico .
  2. Немного PHP в этой строке ( get_stylesheet_directory_uri() вставляет путь к нашему файлу в каталоге темы.

Предполагая, что весь код верен, и файл находится в каталоге темы, браузер, в свою очередь, отобразит этот значок для нашего сайта в углу наших вкладок и в других подобных местах, где обычно отображается значок.

6-bwwp_8 паста-G-аналитика-с

Возможно, вы заметили, что в этом примере нам не нужно было закрывать и открывать теги PHP, как мы это делали в шагах 7 и 8 предыдущего примера. Это связано с тем, что во втором примере код, который мы использовали, представляет собой PHP от начала до конца, и хотя он включает в себя биты HTML, он не является отдельным HTML, потому что PHP создает часть строки URL. Когда вы познакомитесь с подобными функциями и научитесь создавать функции самостоятельно, вы поймете разницу, но эта мысль просто даст вам понять, что код верен, на тот случай, если вы хотите добавить в тегах в этом примере также в фигурных скобках!

Вывод

Как только вы начнете понимать всю мощь файла functions.php, вы не сможете его остановить, это средство для выполнения самых разных задач и добавления некоторых замечательных и мощных функций на ваш сайт. Поэтому в следующий раз, когда вы будете добавлять учебник или фрагмент, который вы читаете, в ваш файл functions.php , вы теперь сможете уверенно добавлять и контролировать все области своего сайта!

Помнить! Прежде чем вносить новые изменения в свой файл, сохраните копию на рабочем столе для сохранности перед загрузкой новых изменений. Неправильный код в файле functions.php может вызвать проблемы, поэтому сохранение рабочей версии на рабочем столе означает, что если что-то пойдет не так, вы можете просто загрузить свой файл безопасности и начать заново.

Файл темы functions.php в WordPress

Каждый знакомый с WordPress слышал про файл темы (шаблона) functions.php . Однако не все хорошо понимают его назначение, видя в нем лишь файл в котором хранятся различные php функции. В сети, как и у меня на этом сайте, часто предлагается добавлять PHP код в этот файл. Однако не каждый код подойдет для этого файла. Не потому что он не будет работать, а потому что он не подходит по логике использования. Также при редактировании functions.php новички допускают ошибки из-за которых сайт перестает работать. В этой статье я постараюсь рассмотреть все эти моменты: когда нужно использовать functions.php и когда этого лучше не делать, какие ошибки при редактировании functions.php могут возникнуть.

Оглавление:

  • Возможности functions.php
  • functions.php против плагинов
  • Для чего на самом деле нужен functions.php
  • Как подгружается functions.php
  • functions.php дочерней темы
  • Ошибки в functions.php при вставке кода
  • Чтобы не было ошибок, учитывайте 4 момента:
  • #1 Правильная вложенность
  • #2 Никаких переносов строк, пробелов, текста до
  • #3 Использование внутри PHP функции
  • #4 Кодировка

Возможности functions.php

functions.php располагается в папке темы и загружается каждый раз, во время просмотра внешней части сайта, в админ-панели и даже во время AJAX запросов. Нет случая, когда functions.php не будет подключен и это открывает широкие возможности перед разработчиками.

Для примера, следующий код, вставленный в файл темы functions.php расширит возможности темы - включит поддержку миниатюр поста:

add_action( 'after_setup_theme', 'wp_kama_theme_setup' ); function wp_kama_theme_setup() < // Поддержка миниатюр add_theme_support( 'post-thumbnails' ); >

Миниатюра записи

Другой пример, код заменит текст в подвале админ-панели WordPress, на данные о количестве запросов к базе данных, времени генерации страницы и использовании памяти:

## Данные о количестве запросов к базе данных в подвале админки add_filter( 'admin_footer_text', 'wp_usage' ); // в админке add_filter( 'wp_footer', 'wp_usage' ); // на сайте function wp_usage()< echo sprintf( __( 'SQL: %d за %s сек. %s MB', 'km' ), get_num_queries(), timer_stop( 0, 3 ), round( memory_get_peak_usage()/1024/1024, 2 ) ); >

query

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, где видно, когда подключаются важные файлы:

index.php wp-blog-header.php wp-load.php wp-config.php wp-settings.php // Подключаются самые базовые функции (подключение к БД $wpdb и система фильтров) // Подключаются базовые фильтры // SHORTINIT: Остановка загрузки, где есть только самое базовое: if ( SHORTINIT ) return false; // подключается вся среда WordPress: базовые функции, фильтры // подключаются must-use плагины, затем срабатывает событие: do_action( 'muplugins_loaded' ); // подключаются активированные плагины, затем срабатывает событие: do_action( 'plugins_loaded' ); // устанавливаются глобальные переменные: wp_the_query, wp_query, wp_rewrite, wp, wp_widget_factory, wp_roles . do_action( 'setup_theme' ); // устанавливается текущая тема Подключение functions.php дочерней темы Подключение functions.php родительской темы do_action( 'after_setup_theme' ); // событие, когда среда WP, все плагины и тема полностью подключены, но на экран еще ничего не выведено: do_action( 'init' ); // проверка статуса сайта для мультисайтовой сборки // тоже самое что init только после проверки статуса (до этой строки работа PHP может не дойти) do_action( 'wp_loaded' ); wp() // заполняет основной запрос WP и все глобальные переменные связанные с ним wp-includes/template-loader.php // подключает нужный файл шаблона

Процесс загрузки WordPress, и functions.php в частности, хорошо показан на этом рисунке:

Порядок загрузки ядра WordPress

functions.php дочерней темы

В отличие от других файлов дочерней темы, functions.php не заменяет родительский файл, а дополняет его: он автоматически загружается прямо перед файлом functions.php родительской темы.

Это значит, что для изменения родительской темы, в functions.php можно использовать хуки и можно «переопределять» функции, если они на это рассчитаны в functions.php родительской темы.

Ошибки в functions.php при вставке кода

Неоднократно встречал вопросы об ошибках, вроде: "После установки кода в файл functions.php сайт перестал работать - белый экран. Что делать?". Я и сам с подобным сталкивался когда-то.

Для меня некоторые решения этой проблемы, долгое время, оставались загадкой — вроде ничего не делал, и даже танца с бубном не было, но - раз и все заработало. Почему так происходит? Давайте рассмотрим возможные ситуации из-за которых может "ломаться" сайт и их объяснение:

  1. Вставляете готовый код — сайт перестает работать.
  2. Редактируете functions.php — сайт перестает работать.

Чаще всего, дело в открывающем и закрывающем тегах PHP . Обычно, если вставляемый код имеет в начале и в конце эти теги, то их нужно удалить. Также, файл functions.php не должен выводить на экран никакой текст (HTML код или другой контент). Вывод текста допускается только внутри функции, которые в дальнейшем будут использоваться в шаблоне или которые прикрепляются к хукам (подробнее см. ниже).

Нельзя допускать никаких символов до , в том числе невидимые символы (перенос строки), потому что functions.php подключается до установки http заголовков (в таких заголовках передаются различные данные, например, что это html документ; что кодировка utf-8 другое). По правилам PHP, контент должен выводится на экран после того, как отправлены заголовки. А все что за пределами это и есть контент - текст выводимый на экран, даже невидимый символ \n. Поэтому такой текст вызывает ошибку.

Чтобы не было ошибок, учитывайте 4 момента:

#1 Правильная вложенность

Пример, у нас была такая структура:

Если Вы добавили php код так, то это вызовет ошибку или, что еще хуже, белый экран, когда показ ошибок отключен:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *