Дочерняя тема в WordPress: Пошаговое руководство
Доброго здравия, друзья!
В этом посте я бы хотел рассказать вам о том как создать дочернюю тему в WordPress.
Вы уже давно используете свой сайт WordPress, и он делает то, что вам нужно. Но теперь вы решили, что вам нужно настроить его.
Или, может быть, вы создаете свой сайт с темой, которую вы загрузили из каталога тем или купили, и понимаете, что она работает не так, как вам нужно.
Что вы делаете тогда?
Вы можете либо найти плагин, который обеспечит необходимую настройку, либо переключиться на новую тему.
Но что, если вы довольны своей текущей темой и не можете найти плагин, который добавляет то, что вам нужно с точки зрения функциональности?
Ответ: вам нужно будет настроить вашу тему.
И лучшие практики гласят: вы делаете это через дочерние темы (WordPress).
В этом посте я покажу вам, как именно создать дочернюю тему в WordPress, как использовать ее для настройки вашего сайта и как работают дочерние темы.
Я также объясню концепцию родительских тем и опишу, как родительская тема на вашем сайте взаимодействует с дочерней темой.
Прежде чем мы погрузимся в создание дочерней темы, давайте определим 3 метода, которые вы можете использовать для настройки своего сайта WordPress.
Способы настройки WordPress
Настройка темы сопряжена с риском.
Если вы редактируете код в сторонней теме (например, той, которую вы купили на торговой площадке), то при следующем обновлении темы все ваши изменения будут потеряны.
Это означает, что не только ваш сайт вернется к прежнему состоянию, но и вся ваша работа будет потрачена впустую.
Есть три способа настроить ваш сайт WordPress:
- Редактирование вашей темы напрямую;
- Установка плагина;
- Создание дочерней темы текущей темы.
Давайте рассмотрим каждый из них по очереди.
Редактирование вашей темы
Если на вашем сайте используется настраиваемая тема WordPress, что означает, что она была разработана специально для вашего сайта, у вас есть возможность безопасно редактировать ее, поскольку нет риска потерять свои настройки при следующем обновлении темы.
Вместо этого, если вы или ваш разработчик внесете изменения в тему в будущем, вы будете редактировать индивидуальную версию темы, а не исходную версию до этих изменений.
Это не значит, что редактирование вашей темы сопряжено с риском.
Если у вас нет опыта в программировании тем, возможно, будет безопаснее создать дочернюю тему (мы увидим, как это сделать через минуту).
Я так и делаю: у меня есть одна базовая тема, которую я использую на всех своих сайтах, со стандартным макетом, хуками и функциями, а затем я настраиваю ее на каждом сайте с помощью дочерней темы.
Если вы редактируете свою тему напрямую, убедитесь, что у вас есть резервная копия исходной темы, не редактируйте тему на действующем сайте (вместо этого используйте сайт разработки или промежуточный сайт) и используйте контроль версий, чтобы отслеживать свои изменения.
И если вы используете стороннюю тему, вам никогда не следует редактировать ее напрямую.
Вместо этого используйте плагин или создайте дочернюю тему.
Добавление плагина
Второй вариант настройки темы WordPress — это установка или кодирование плагина.
Если настройки, которые вы хотите сделать, являются функциональными, а не связаны с дизайном, плагин — более подходящий способ сделать это.
Поэтому, если вы хотите добавить дополнительный код, может быть лучше вместо этого создать плагин.
Плагины не обязательно должны быть большими или сложными: если вам нужно добавить дополнительный код в файл «functions.php» вашей темы, создайте простой плагин, чтобы добавить несколько строк кода на ваш сайт.
Хороший пример — регистрация произвольного типа сообщения.
Может возникнуть соблазн добавить код в файл «functions.php» вашей темы, но добавление типа сообщения — это функциональное изменение вашего сайта, а не изменение дизайна.
Если бы вы в будущем сменили тему, вы бы не хотели потерять эти типы сообщений и все сообщения, которые вы создали с их помощью.
Вот почему вам следует вместо этого установить или создать плагин.
Иногда вы сможете найти существующий плагин, который сделает то, что вам нужно, но иногда вам может потребоваться написать его самостоятельно.
Если вы сомневаетесь в том, следует ли вам создать плагин или настроить свою тему (или дочернюю тему), спросите себя: если бы я хотел изменить дизайн своего сайта в будущем и установил новую тему WordPress, хотел бы я, чтобы это изменение осталось?
Если ответ положительный, это означает, что изменение является функциональным, а не эстетическим, и оно должно быть внесено в плагин.
Создание дочерней темы
Третий вариант настройки темы WordPress — создание дочерней темы.
Вот несколько сценариев, в которых вы бы использовали дочернюю тему:
- Вы хотите внести изменения в дизайн сайта, а не в его функциональность;
- На вашем сайте запущена сторонняя тема или тема, которую вы хотите снова использовать в текущем состоянии;
- Вы не хотите напрямую редактировать существующую тему, если это вызывает проблемы (возможно, вы не опытный разработчик тем);
- На вашем сайте используется тема, предназначенная для родительской темы, например тема фреймворка. Это темы с множеством опций настройки, таких как хуки, которые вы можете добавить к своей собственной дочерней теме.
Таким образом, дочерние темы — это эффективный и безопасный способ добавления настроек на ваш сайт.
Итак, давайте рассмотрим их более подробно.
Что такое дочерняя тема WordPress?
Итак, что же такое дочерняя тема в WordPress? Как она работает?
Дочерняя тема — это тема, которая работает в тандеме с другой темой, называемой родительской темой.
Она содержит некоторые конкретные инструкции, чтобы сообщить WordPress, что это дочерняя тема и что это за родительская тема.
Затем WordPress в большинстве случаев использует код из родительской темы, но при необходимости заменяет его кодом из дочерней темы.
Файлы в дочерней теме WordPress
Каждая дочерняя тема WordPress должна иметь как минимум два файла: таблицу стилей и файл функций.
Таблица стилей будет содержать закомментированный текст вверху, сообщающий WordPress, что это дочерняя тема и что это за родительская тема.
Файл функций будет включать функцию, которая ставит таблицу стилей в очередь из родительской темы.
Примечание. Вы можете встретить руководства, которые советуют вызывать таблицу стилей родительской темы из таблицы стилей дочерней темы.
Это уже не правильный способ сделать это, и вам следует вместо этого использовать постановку в очередь в файле функций.
Я скоро покажу вам, как это сделать.
Ваша дочерняя тема не обязательно должна включать какие-либо другие файлы.
В отличие от родительской темы, ей не нужен файл index.php в качестве запасного варианта, если в теме нет более конкретных файлов.
Это связано с тем, что если файл шаблона не существует в дочерней теме, WordPress будет использовать файл из родительской темы.
Итак, в зависимости от того, что вы хотите, чтобы ваша дочерняя тема делала, вы либо добавите дополнительный код в таблицу стилей, в файл функций, либо создадите дополнительные файлы в дочерней теме, чтобы переопределить родительскую тему.
Они могут включать одно или несколько из:
- Файлы шаблонов для переопределения того же файла из родительской темы, например «page.php», если вы хотите настроить отображение статических страниц;
- Части шаблона, такие как «header.php» или «footer.php», если вы хотите настроить эти части дизайна сайта;
- Дополнительные части шаблона, которые вы вызываете из файлов шаблонов в дочерней теме. Поэтому, если вы хотите настроить заголовок при отображении статических страниц, вы должны создать в своей дочерней теме файл с именем «header-page.php» и файл шаблона с именем «page.php», который переопределит «page.php» из родительской темы. Этот файл шаблона будет идентичен файлу в родительской теме, за исключением вызова файла заголовка, который будет вызывать «header-page.php» вместо «header.php».
- Дополнительные включаемые файлы для функциональности. Если вы хотите добавить много функционального кода и организовать его, вы можете создать включаемые файлы для каждого набора функций, а затем вызывать их в файле «functions.php» вашей дочерней темы. Так, например, если вы хотите добавить дополнительные параметры настройщика, вы можете добавить включаемый файл с именем «customizer.php» в свою дочернюю тему, а затем вызвать этот файл из файла функций в дочерней теме.
Но если вы добавите дополнительные файлы и функции, как WordPress узнает, что использовать?
Те из родительской темы или те из дочерней темы?
Вот чем мы займемся дальше.
Как WordPress выбирает файлы шаблонов?
WordPress выбирает файлы шаблонов из вашей темы при отображении контента на вашем сайте по ссылке на иерархию шаблонов.
WordPress использует эту иерархию, чтобы работать с файлами шаблонов в вашей теме и находить нужный для использования при отображении определенного типа контента.
Он начнется сверху (слева на изображении выше) и по очереди будет искать каждый файл для данного типа содержимого.
Когда он найдет файл, который будет отображать это содержимое, он будет его использовать.
Представьте, что в вашей теме есть файл «archive.php» и файл «category.php», но нет файла «tag.php».
При отображении архива категорий WordPress будет использовать «category.php», поскольку он более специфичен для типа этого контента.
При отображении архива тегов вместо этого будет использоваться «archive.php».
Если WordPress не находит файл шаблона для данного типа контента, по умолчанию используется универсальный файл «index.php», поэтому каждая отдельная тема (то есть не дочерняя тема) должна иметь файл «index.php».
То же самое касается отдельных сообщений и страниц.
Допустим, в вашей теме есть файл «singular.php», который является универсальным для отдельных сообщений любого типа (включая страницы и пользовательские типы сообщений).
Также есть файл «page.php».
При отображении одной страницы будет использоваться «page.php».
При отображении сообщения будет использоваться файл «singular.php».
И если вы зарегистрируете пользовательский тип сообщения и не добавите файл шаблона для этого типа сообщения, он снова будет использовать «singular.php».
Когда вы используете дочернюю тему, WordPress по-прежнему использует иерархию шаблонов, чтобы решить, какой файл использовать при выводе контента на ваш сайт.
Он просматривает файлы как в родительской, так и в дочерней темах и использует первый обнаруженный файл.
Итак, представьте, что ваша дочерняя тема имеет «singular.php» и «post.php», а ваша родительская тема имеет «page.php» и «index.php».
При выводе одного сообщения WordPress будет использовать «post.php» из дочерней темы.
При выводе страницы он будет использовать «page.php» из родительской темы.
А при выводе отдельного сообщения произвольного типа он будет использовать файл «singular.php» из дочерней темы.
Но что, если и у вашей дочерней, и у родительской темы есть экземпляры одного и того же файла?
Представьте, что вы добавили файл «page.php» в дочернюю тему в предыдущем примере.
Поскольку эта тема находится в дочерней теме, она переопределяет тот же файл из родительской темы.
Поэтому при отображении одной страницы WordPress будет использовать новый файл «page.php» из дочерней темы.
Вот почему создание дочерней темы позволяет настраивать родительскую тему.
Если вы добавите копию файла шаблона из родительской темы в дочернюю тему, а затем отредактируете ее, чтобы включить необходимые настройки, WordPress будет использовать этот новый файл шаблона вместо файла из родительской темы.
Это означает, что ваши настройки будут использоваться при отображении контента без редактирования родительской темы.
Отлично!
Как WordPress запускает функции родительских и дочерних тем?
Что, если вы хотите настроить не файлы шаблонов в своей теме, а функции?
Вы тоже можете это сделать.
Во-первых, вам нужно убедиться, что правильный способ сделать это — использовать дочернюю тему, а не плагин.
Одним из примеров может быть то, что вы хотите отредактировать функцию, которая уже находится в родительской теме, например, функцию, которая выводит копирайт в подвале сайта.
Затем вы добавляете новую функцию(и) в файл функций в вашей дочерней теме или во включаемый файл, который вы вызываете из файла функций.
Чтобы ваша новая функция переопределяла функциональность родительской темы, вам необходимо понимать, как переопределять функции.
Это можно сделать тремя способами:
- Написав новую функцию с тем же именем, что и подключаемая функция в родительской теме;
- Отключить функцию в родительской теме от хука, к которому она была прикреплена, а затем написав новую функцию для ее замены;
- Путем написания новой функции с более высоким приоритетом, чем исходная функция, и вызова ее с помощью того же хука, что означает, что она вызывается после исходной функции и, следовательно, может переопределить или дополнить ее.
Мы рассмотрим, как вы это сделаете, позже в этом посте.
Но сначала давайте посмотрим на сценарии, когда вы использовали бы и не использовали бы дочернюю тему.
Когда использовать дочернюю тему в WordPress (преимущества)?
Теперь вы знаете, что такое дочерние темы и как их можно использовать для переопределения файлов или функций шаблонов в родительской теме.
Вкратце, вам следует использовать дочернюю тему, если вы запускаете тему на своем сайте и хотите выполнить одно или несколько из следующих действий:
- Отредактируйте один или несколько файлов шаблона;
- Добавьте дополнительные функции, связанные с отображением, а не с функциональностью;
- Переопределите одну или несколько функций из родительской темы;
- Добавьте дополнительный файл(ы) шаблона.
Некоторые преимущества включают:
- Легкое расширение и настройка: очевидно, что дочерняя тема расширяет функциональность своей родительской темы. У вас уже есть готовый шаблон к вашим услугам в виде родительской темы, и все, что вам нужно сделать, это создать отдельный файл «style.css» для вашей дочерней темы и добавить настройки в соответствии с вашими потребностями;
- Беспроблемные обновления: по мере развития WordPress темы и плагины необходимо обновлять очень часто. Если вы сделаете настройки и измените свою основную тему, вы можете потерять все свои изменения, если когда-нибудь обновите тему. Таким образом, рекомендуется вносить такие изменения в дочернюю тему, чтобы даже если вам когда-либо потребуется обновить родительскую тему, вы не боялись потерять свои изменения.
А как насчет того, чтобы не использовать дочернюю тему?
Когда не использовать дочернюю тему WordPress (недостатки)?
Бывают случаи, когда вы не будете использовать дочернюю тему и должны использовать другой метод настройки своего сайта. Это:
- Если ваша тема — это тема, которую вы разработали сами (или кто-то другой написал для вас), и вам не нужно использовать ее где-либо еще. Просто отредактируйте тему, убедившись, что вы используете контроль версий.
- Если настройки, которые вы хотите сделать, являются функциональными, например, добавление настраиваемого типа сообщения, и вы хотели бы сохранить их, если вы измените темы в будущем. Вместо этого используйте плагин.
К некоторым недостаткам можно отнести:
- Выбор идеальной родительской темы: не все темы действуют как хорошие родители! Например, некоторые темы WordPress могут не обновляться регулярно и, как правило, не иметь новейших функций. Точно так же не все темы WordPress созданы с учетом дочерних тем и, как таковые, могут служить плохими кандидатами на родительские темы. Вам нужно выбрать идеальную родительскую тему, чтобы должным образом расширить ее и заставить работать в качестве основы для ваших дочерних тем.
- Усилия по настройке: дочерняя тема в основном стремится расширить и настроить существующий дизайн шаблона. Таким образом, если вы уже создали веб-сайт вокруг своей родительской темы, вам может потребоваться пересмотреть настройку таких элементов, как меню, параметры темы, боковые панели, заголовок и т. д. при переходе к дочерней теме.
Теперь, когда вы знаете, когда (а когда нет) использовать дочернюю тему, пора приступить к работе и узнать, как создать дочернюю тему в WordPress.
Как создать дочернюю тему WordPress?
Настройка базовой дочерней темы в WordPress включает создание двух файлов: таблицы стилей и файла функций.
Давайте посмотрим на них обоих.
Таблица стилей
Перед созданием файла вам необходимо создать папку для хранения вашей темы.
Это находится в папке «wp-content / themes» вашей установки WordPress.
Помните: не делайте этого на своем действующем сайте.
Сначала добавьте код на сайт разработки, а затем протестируйте его на своем промежуточном сайте.
Как только вы будете довольны им, вы можете перенести его на свой действующий сайт.
В папке для вашей новой темы создайте файл с именем «style.css».
Добавьте к нему следующее:
/* Theme Name: My Child Theme. Child for Twenty Nineteen. Theme URI: https://rachelmccollin.com Description: Theme to support tutsplus tutorial. Child theme for the Twenty Nineteen theme. Author: Rachel McCollin Textdomain: mccollin Author URI: https://rachelmccollin.com/ Template: twentynineteen Version: 1.0 License: GNU General Public License v2 or later License URI: https://www.gnu.org/licenses/gpl-2.0.html */
Этот текст закомментирован.
Это не код, который запускает что-либо на вашем сайте или предоставляет какие-либо функции.
Вместо этого он сообщает WordPress о теме.
Такой текст необходим в каждой теме, иначе WordPress не сможет распознать его как тему.
Давайте проработаем каждую из этих строк, чтобы определить, что они делают:
- Theme Name (Название темы): уникальное имя темы;
- Theme URI (URI темы): где пользователи могут найти код или документацию по теме;
- Description (Описание): описательный текст, помогающий пользователям понять, что делает тема;
- Author (Автор темы): ваше имя например;
- Textdomain (Текстовый домен): используется для интернационализации. Используйте текстовый домен в качестве второго параметра в любых функциях интернационализации;
- Author URI (URI автора): веб-сайт автора;
- Template (Шаблон): папка, в которой хранится родительская тема. Используйте имя папки, а не название темы. Без этой строки ваша тема не будет работать как дочерняя.
- Version (Версия): номер версии темы;
- License (Лицензия): Лицензия, которая должна быть GNU;
- License URI (URI лицензии): ссылка на информацию о лицензии.
Самая важная строка для дочерней темы — это строка «Template:».
Без этого тема не будет работать как дочерняя.
Только дочерние темы будут включать эту строку.
Добавьте это в таблицу стилей своей темы, отредактировав ее, чтобы добавить свои собственные данные вместо моих.
Вам нужно будет отредактировать строку «Template:», чтобы добавить папку, в которой хранится ваша существующая тема, поскольку это будет ваша родительская тема.
Теперь сохраните файл.
Если бы вы сейчас посмотрели на экран сведений о теме на своем сайте, вы бы увидели все это:
Это не выглядит блестящим, потому что нет снимка экрана.
Это изображение, которое дает представление о том, как выглядит тема.
Если ваша тема не будет сильно отличаться от родительской темы, просто скопируйте файл «screenshot.png» из родительской темы в дочернюю тему.
Файл функций
Следующим шагом будет добавление файла функций в вашу дочернюю тему.
Это необходимо для того, чтобы вы могли поставить таблицу стилей в очередь из родительской темы.
Без него ваш сайт вообще не имел бы стиля и выглядел бы примерно так:
Не очень хорошо, я уверен, вы согласитесь!
Итак, давайте добавим стиль, чтобы он выглядел так, как должен.
В папке дочерней темы добавьте файл с именем «functions.php».
Откройте его и добавьте этот код:
<?php /* enqueue script for parent theme stylesheeet */ function childtheme_parent_styles() { // enqueue style wp_enqueue_style( 'parent', get_template_directory_uri().'/style.css' ); } add_action( 'wp_enqueue_scripts', 'childtheme_parent_styles');
При этом используется функция «wp_enqueue_style()» для постановки таблицы стилей в очередь из родительской темы, при этом функция «get_template_directory_uri()» определяет, где хранится этот файл.
Эта функция находится внутри созданной мной функции, вызываемой «childtheme_parent_styles()», которая привязана к хуку «wp_enqueue_scripts».
Вам может быть интересно, почему он использует вызываемую функцию «wp_enqueue_scripts» а не «wp_enqueue_styles»?
Это связано с тем, что «wp_enqueue_scripts» используется как для скриптов, так и для стилей, и не существует такого хука, как «wp_enqueue_styles».
Не стесняйтесь редактировать мой код, чтобы добавить свой собственный префикс к имени вашей функции.
Я использовал «childtheme» в качестве префикса, чтобы убедиться, что моя функция не конфликтует с другими функциями из родительской темы или из каких-либо плагинов.
Теперь сохраните ваш файл.
Как активировать дочернюю тему WordPress?
Когда ваша дочерняя тема будет готова, вам нужно активировать ее.
Если вы беспокоитесь о том, что активация дочерней темы отключит родительскую тему, не волнуйтесь: WordPress будет знать, что нужно использовать файлы из родительской темы, если вы не добавите новые файлы в дочернюю тему, которые переопределяют их.
До сих пор вы не добавляли никаких дополнительных файлов или функций в дочернюю тему, поэтому ваш сайт будет работать точно так же, как если бы была активирована родительская тема.
Помните: сначала сделайте это на своем разрабатываемом или промежуточном сайте.
Не активируйте дочернюю тему на своем действующем сайте, пока не протестируете ее.
В админке WordPress перейдите во вкладку «Внешний вид — Темы».
Вы найдете свою дочернюю тему в списке тем, установленных на вашем сайте.
Наведите указатель мыши на тему и нажмите кнопку «Активировать».
Это активирует вашу дочернюю тему.
Теперь, когда вы посещаете свой действующий сайт, он будет выглядеть так же, как и раньше:
Выглядит так же, потому что вы еще не добавили никаких настроек.
Но теперь у вас есть рабочая дочерняя тема. Отличная работа!
Как настроить дочернюю тему в WordPress?
Теперь, когда у вас есть рабочая дочерняя тема для вашего сайта WordPress, пришло время добавить свои настройки.
Здесь я покажу вам, как вы добавите файлы шаблонов, чтобы переопределить файлы в родительской теме, как добавить стиль в дочернюю тему и как добавить новые функции.
Начнем с файлов шаблонов.
Как добавить файлы шаблонов в вашу дочернюю тему WordPress?
Мы уже рассмотрели, как WordPress выбирает, какой файл шаблона использовать при отображении контента на вашем сайте.
Следует помнить о двух вещах:
- WordPress будет использовать файл, который идет первым в иерархии, либо из дочерней, либо из родительской темы;
- Если файл шаблона (или часть шаблона, такая как «header.php») с тем же именем существует как в родительской, так и в дочерней темах, WordPress будет использовать файл из дочерней темы.
Чтобы добавить настройки, мне легче начать с создания копии соответствующего файла из родительской темы, добавления ее в дочернюю тему и последующего редактирования.
Это применимо независимо от того, будет ли файл в вашей дочерней теме иметь то же имя, что и в родительской теме, или это будет новый файл для отображения другого типа контента, или файл, который находится выше по иерархии.
Поэтому, если я добавляю новую версию «page.php» в свою дочернюю тему, которая переопределит «page.php» в моей родительской теме, я скопирую «page.php» из родительской темы в свою дочернюю тему, а затем отредактирую его.
Убедитесь, что вы скопировали файл: не перемещайте его, так как вы не хотите вносить какие-либо изменения в родительскую тему.
И если мне нужен собственный шаблон страницы в моей дочерней теме, например, я скопирую «page.php» в свою дочернюю тему, переименую его, а затем отредактирую.
Таким образом, вы можете гарантировать, что все аспекты файла, которые вам не нужно настраивать, по-прежнему будут работать правильно.
То же самое и с частями шаблона.
Как добавить стиль в вашу дочернюю тему WordPress?
Вы также можете добавить стиль в файл «style.css» вашей дочерней темы, который дополнит или переопределит стиль в таблице стилей вашей родительской темы.
WordPress сначала вызовет таблицу стилей из родительской темы, а затем таблицу стилей из дочерней темы.
Это означает, что если вы добавляете стиль к дочерней теме, нацеленный на тот же элемент(-ы), что и стиль в родительской теме, он переопределит стиль родительской темы, если вы используете тот же селектор(-ы).
Итак, представьте, что вы хотите изменить цвет заголовка сайта.
В родительской теме это может быть оформлено примерно так:
h1.site-title { color: #000; }
Чтобы переопределить это в своей дочерней теме, вы должны добавить это:
h1.site-title { color: #303030; }
Поскольку браузер столкнется с этим после стилизации в родительской теме, он переопределит это и будет использоваться вместо этого.
Как добавить функции в вашу дочернюю тему WordPress?
Итак, вы создали дочернюю тему в WordPress не потому, что хотите отредактировать какой-либо из файлов шаблона, а потому, что хотите добавить дополнительную функциональность или переопределить одну или несколько функций в родительской теме.
Написание функций в вашей дочерней теме немного сложнее, чем добавление файлов шаблонов, но это возможно.
Если вы хотите добавить новую функцию, которая не взаимодействует ни с одной из функций в вашей родительской теме, вы можете просто сделать это.
Просто добавьте функцию в файл «functions.php» своей дочерней темы, подключите ее к соответствующему действию или перехватчику фильтра, и все готово.
Но если вы планируете переопределить или отредактировать функцию в родительской теме, вам необходимо понять методы, которые вы можете использовать для этого.
Есть три способа переопределить функцию родительской темы в дочерней теме:
- Если тема в родительской теме является подключаемой, вы просто пишете другую функцию в своей дочерней теме с тем же именем, и WordPress будет запускать эту функцию вместо функции в родительской теме;
- Если вы хотите, чтобы функция в родительской теме не выполнялась полностью, вы можете написать функцию в своей дочерней теме, которая отключит ее от хука, к которому она прикреплена;
- Если вы хотите расширить функцию, вы можете добавить другую функцию (с другим именем) в свою дочернюю тему и убедиться, что она запускается после функции в родительской теме.
Давайте подробнее рассмотрим, как вы это cделаете.
Переопределение подключаемой функции
Подключаемая функция идентифицируется условной проверкой, которая обернута вокруг нее.
Это проверяет, есть ли еще одна функция с тем же именем, которая уже была запущена.
Если да, то функция не запускается.
WordPress будет запускать функции из вашей дочерней темы раньше, чем из родительской темы.
Если в родительской теме встречается подключаемая функция, и вы добавили функцию в свою дочернюю тему с тем же именем, подключаемая функция не запустится.
Примером является функция, которая выводит копирайт в теме «Storefront» для сайтов WooCommerce.
Вот функция без содержимого:
if ( ! function_exists( 'storefront_credit' ) ) { function storefront_credit() { // Здесь будет тело функции } }
Если вы хотите переопределить это, вы должны написать другую функцию с тем же именем (storefront_credit()) и подключить ее к тому же хуку, что и в родительской теме.
Отключение функции от родительской темы
Если функция родительской темы не подключается, вы все равно можете запретить ее запуск.
Представьте, что ваша родительская тема имеет функцию с именем «parent_function()», которая привязана к хуку «init» с приоритетом 20.
Вы хотите предотвратить ее запуск, чтобы вы могли заменить ее собственной функцией.
Вот как может выглядеть функция родительской темы:
function parent_function() { // Здесь будет тело функции } add_action( "init", "parent_function", 20 );
Чтобы отключить ее, вы должны написать это в своей дочерней теме:
function remove_parent_function() { remove_action( "init", "parent_function", 20 ); } add_action( "wp_head", "remove_parent_function" );
Обратите внимание, что вы подключаете свою вторую функцию к хуку «wp_head», который запускается в верхней части каждой страницы, и что вы должны включить то же значение для параметра приоритета, что и в исходной функции.
Если исходная функция «add_action()» не имела приоритета, вы можете опустить его из функции «remove_action()» дочерней темы.
Дополнение функции другой функцией
Вместо того, чтобы переопределить или удалить функцию, иногда вы можете захотеть что-то добавить к ней.
В этом случае вы должны написать новую функцию с другим именем и присоединить ее к тому же хуку.
Давайте представим, что для подвала сайта в родительской теме есть хук «action» — «parent_footer».
Любая функция, которую вы прикрепляете к этому хуку, будет запускаться в том месте, где находится хук.
В родительской теме уже есть функция «parent_footer_content()», которая заполняет футер.
Но что, если вы захотите добавить к нему дополнительный код?
Вот как может выглядеть функция «parent_footer_content()» в родительской теме:
function parent_footer_content() { // Здесь будет тело функции } add_action( "parent_footer", "parent_footer_content" );
Теперь, если вы хотите добавить дополнительный контент после этого, вы должны создать функцию в своей дочерней теме, привязанную к тому же хуку «action», с приоритетом, который означает, что она запускается после первой функции.
Поскольку приоритет не установлен для функции родительской темы, по умолчанию он равен 10.
Поэтому вам нужно использовать большее число, чтобы она срабатывала после этого.
function child_footer_extra_content() { // Здесь будет тело функции } add_action( "parent_footer", "child_footer_extra_content", 20 );
Это добавит код из функции вашей дочерней темы после кода из функции вашей родительской темы.
Как устранить проблемы с дочерними и родительскими темами?
Итак, теперь вы знаете, как создать дочернюю тему в WordPress и как использовать ее для переопределения файлов шаблонов, добавления дополнительных стилей и функциональности вашего сайта.
Но что, если ваша дочерняя тема работает не так, как вы ожидали?
Что делать, если контент отображается не так, как вы ожидали, или функция не запускается?
Используйте этот контрольный список для устранения неполадок в дочерней теме:
- Убедитесь, что вы активировали свою дочернюю тему и что родительская тема еще не запущена. Забыть об этом шаге на удивление легко!
- Обновите кеш браузера и кеш, созданный любыми плагинами на вашем сайте.
- Установите для «wp-debug» значение «true» в файле «wp-config.php» вашей дочерней темы. Если вы смотрите на белый экран, должно появиться сообщение о том, какой код вызвал проблему и в каком файле он находится. Это поможет вам определить ошибку и какой файл используется.
- Проверьте выходной код для вашей страницы, публикации или архива. Найдите элемент «body» и посмотрите, какие у него классы. Они расскажут вам, какой тип контента вы просматриваете, что поможет вам определить, какой файл шаблона используется. Иногда это не то, чего вы ожидаете. Например, главная страница блога никогда не использует «archive.php», даже если отображает архив ваших сообщений.
- Убедитесь, что вы правильно назвали свои файлы. Обратитесь к иерархии шаблонов, чтобы убедиться, что вы использовали правильный синтаксис.
- Если вы скопировали файл из родительской темы и добавили его в дочернюю тему, убедитесь, что вы сохранили свои изменения.
- Если функция для переопределения подключаемой функции не работает, убедитесь, что вы дали ей точно такое же имя, что и подключаемая функция, и что функция в родительской теме действительно подключаемая.
- Если функция, которую вы удалили, все еще запускается, убедитесь, что вы добавили правильный приоритет и что ваше написание совпадает с написанием функции и хуками в родительской теме.
- Если вы использовали приоритет для переопределения или расширения функции, попробуйте увеличить значение приоритета, чтобы быть абсолютно уверенным, что она сработает последней. Убедитесь, что к этому хуку не прикреплены никакие другие функции, которые мешают вашему коду.
Надеюсь, один или несколько из этих шагов помогут вам определить проблему и исправить ее в дочерней теме.
Помните: не редактируйте родительскую тему напрямую.
Полезные советы при работе с дочерними темами WordPress
Уф! Дочерние темы — довольно интересная тема и невероятно ценная функция WordPress.
Я использую их на каждом сайте, который создаю.
Чтобы помочь вам найти методы, которые необходимо использовать для наиболее эффективного использования дочерних тем, вот мои советы, которые помогут вам с ними:
- Если вам нужно отредактировать стороннюю тему, всегда используйте вместо нее дочернюю тему. Таким образом, ваши изменения не потеряются при обновлении темы;
- Каждой дочерней теме нужны таблица стилей и файл функций;
- WordPress будет использовать иерархию шаблонов, чтобы определить, какой файл шаблона использовать при выводе контента. Если он найдет два файла с одинаковым именем, он будет использовать файл из дочерней темы;
- Вы можете переопределить подключаемую функцию в родительской теме, написав функцию с таким же именем в дочерней теме;
- Вы можете отключить функцию от родительской темы, используя функцию «remove_action()» с дочерней темой или «remove_filter()» в ней, а затем написать новую функцию;
- Вы можете расширить функцию в родительской теме, написав функцию в дочерней теме и привязав ее к тому же действию или хуку фильтра.
- Не забудьте активировать дочернюю тему после ее загрузки. И убедитесь, что никто не удаляет родительскую тему из вашей установки WordPress: без нее дочерняя тема работать не будет.
Резюме
Дочерние темы — это полезная функция WordPress, которая позволяет настраивать тему, не редактируя ее код напрямую.
Вы можете использовать один для добавления дополнительных функций к теме, для настройки стиля или для создания / редактирования файлов шаблонов.
Если вы последуете приведенному выше совету, вы сможете создавать дочерние темы в WordPress, следуя лучшим практикам, и использовать их для различных задач.
И все это без потери ваших изменений и настроек при обновлении родительской темы.
У меня на этом все.
Пробуйте делать дочерние темы и настраивать их, а не лезть в код к родительским темам.
И на этом я буду заканчивать — надеюсь вам понравилась моя статья о дочерних темах.
До скорых встреч, заходите чаще и не болейте!
Пока нет комментариев. Будь первым!
- Создание сайта на WordPress (31)
- WordPress для начинающих (22)
- Блог на WordPress (19)
- CMS Wordpress (16)
- Плагины Wordpress (16)
- WordPress SEO (15)
- Безопасность WordPress (12)
- Услуги More WP (1)
- Пожалуйста. Фигмой тоже можно, отличный графический редактор, но сервисы подойдут для все, так как не все смогут задизайнить картинку а редакторе. В общем главное чтоб было удобно и результативно :)
- Еще можно пользоваться Figma для того чтобы сделать нужные размеры. Спасибо вам за сервис по генерации иконок, не знал что пачкой можно сразу для всего сделать.
- Всегда пожалуйста, очень рад, что вам помогло :)
- Спасибо за материал! Даже такой полный чайник, коим я себя считаю, нашла ответы на свои проблемы с сайтом.
- Sitemap.xml сейчас в WP автоматически делается, правда работает не всегда. А для html карты использую обычно WP Sitemap Page, как по мне самый лучший он. И стараюсь как то оживить если можно так выразиться, https://sverchokcorm.ru/sitemap/ тут например пару картинок добавил)
- Спасибо, мне действительно помогло. Написано подробно и понятно, для непрограммистов идеально.