Что включить в файл functions.php


Описание

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

Цели

После завершения этого урока вы сможете:

  • Распознавать и определять случаи использования functions.php по сравнению с использованием плагинов для добавления функциональности.
  • Объяснять, когда следует и когда не следует использовать функции.

Необходимые навыки

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

  • Базовые знания о том, как создавать тему и плагин
  • Базовое знакомство с PHP и кодом WordPress

Вопросы для подготовки

  • Знакомы ли вы с установкой и активацией тем через консоль WordPress?
  • Будет ли у вас локально или удалённо размещённый тестовый сайт WordPress для использования во время занятия?
  • Уверенно ли вы пользуетесь текстовым редактором для редактирования кода?
  • Добавляли ли вы когда-нибудь пользовательскую функциональность на свой сайт WordPress?
  • Знакомы ли вы с иерархией файлов тем WordPress?

Слайды

  • Для этого плана урока слайды не предусмотрены

Необходимые материалы

  • WordPress, установленный локально
  • Две или более установленные темы WordPress

Примечания для ведущего

  • Студентам проще всего работать с локально установленной копией WordPress. Если студентам потребуется помощь, выделите время до занятия для содействия в локальной установке WordPress. Дополнительную информацию о локальной установке WordPress можно найти на странице Installing on a Local Server.
  • Предпочтительный ответ на вопросы для предварительной проверки — «да». Участники, ответившие «нет» на все вопросы, могут быть не готовы к этому уроку.

План урока

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

Упражнения

Добавьте функциональность только в functions.php.

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

function themename_custom_excerpt_length( $length ) { 
    return 40; //number of words in excerpt 
} 
add_filter('excerpt_length','themename_custom_excerpt_length', 99 ); 

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

Проверка знаний

Что из перечисленного не следует размещать в function.php?

  1. Стилизация боковой панели
  2. Фавикон
  3. Пользовательский фон

Ответ: 2. Фавикон

Дополнительные ресурсы

Пример урока

Введение: что такое файл functions.php?

Файл functions.php используется для добавления, удаления или иного изменения стандартного поведения WordPress. Файл находится внутри папки темы. functions.php работает подобно плагину WordPress, позволяя автору добавлять на сайт WordPress пользовательские функции и возможности. У дочерней темы может быть собственный файл functions.php. Однако, в отличие от style.css, файл functions.php дочерней темы не переопределяет файл functions.php родительской темы. Вместо этого он загружается дополнительно к файлу functions.php родительской темы. (подробнее здесь)

Чем functions.php отличается от плагина?

Поскольку functions.php и плагины позволяют создавать пользовательскую функциональность и изменять стандартное поведение WordPress, бывает немного сложно понять, когда следует использовать functions.php, а когда создавать или использовать плагин для добавления функциональности. Более подробное рассмотрение обоих методов поможет лучше понять, когда уместно применять каждый из них. В целом плагины — это независимые модули, которые можно загрузить и установить на сайт WordPress. Цель плагина — расширить функциональность WordPress или добавить новые возможности. Для активации плагинов не требуется изменять активную тему. В отличие от них, темы представляют собой набор файлов, предназначенных для изменения внешнего вида WordPress. Хотя темы могут включать пользовательскую функциональность (пользовательские типы записей, панель визуальной настройки и т. д.), в большинстве случаев темы выбирают на основе того, как они изменяют взаимодействие пользователя с сайтом. Основные характеристики, определяющие и отличающие плагины WordPress от файла functions.php, таковы:

Плагин WordPress…

  • требует специального уникального текста заголовка.
  • хранится в wp-content/plugins, обычно во вложенной директории.
  • выполняется только после индивидуальной активации через панель «плагины».
  • применяется ко всем темам.
  • должен иметь единственное назначение, например преобразовывать записи в страницы, предоставлять функции поисковой оптимизации или помогать с резервным копированием.

Файл functions.php…

  • не требует уникального текста заголовка.
  • хранится вместе с каждой темой во вложенной директории темы в wp-content/themes.
  • выполняется только в директории текущей активированной темы.
  • применяется только к этой теме. Если тема меняется, функциональность утрачивается.
  • может содержать многочисленные блоки кода, предназначенные для разных целей.

Когда использовать functions.php

Можно предположить, что если пользовательская функциональность связана с визуальным представлением, её следует размещать в functions.php, а если она связана с поведением сайта, её следует хранить в плагине. Однако технически возможно хранить настройки визуального представления в плагине, поэтому как определить, что лучше? Ответ удивительно прост. Нам нужно спросить себя: должна ли эта функциональность быть привязана к одной конкретной теме или нет? Поскольку functions.php находится в папке темы, эта тема должна быть активной, чтобы пользовательская функциональность работала. Однако если такую функциональность хранить в плагине, можно сменить тему и сохранить пользовательскую функциональность. Таким образом, лучший способ определить, как добавить собственный код, — выяснить, относится ли функциональность к конкретной теме или поддерживает содержимое либо структуру сайта независимо от включённой темы. Например, для записей в конкретной теме может потребоваться уникальная длина отрывка, основанная на её дизайне и макете, поэтому функциональность отрывка следует добавить в functions.php. Если вы хотите реализовать ссылку «читать далее» для всех записей независимо от используемой темы, эту функцию следует добавить в виде плагина.

Что можно добавить в functions.php:

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

Что не следует добавлять в functions.php:

  • функции, связанные с SEO
  • скрипты Google Analytics
  • пользовательские типы записей и таксономии

Использование functions.php в блочных и классических темах

Классические темы WordPress требуют от разработчика добавления в тему поддержки функций WordPress. Типичный файл functions.php в классической теме содержит функцию настройки поддержки этих функций с помощью функции add_theme_support() (также называемой «поддержкой темы»).

В блочной теме некоторые виды поддержки темы включены по умолчанию и не требуют явного включения. Кроме того, некоторые виды поддержки темы включаются при добавлении настройки в файл theme.json блочной темы. Настройка в theme.json имеет приоритет над функцией, добавленной через add_theme_support(). Например, добавление настройки settings.layout в theme.json включит поддержку темы align-wide.

💡 Затем выполните указанные выше упражнения и проверку знаний.