Глубокая настройка дочерних тем Genesis

Источник этой статьи в дневнике я.ру.

Но т.к. яндекс закрывает блоговый сервис, то автор видимо здесь: http://blogcoding.ru/ 

 

Уже не в первый раз меня просят помочь внести специфические изменения в дочерние темы Genesis. Действительно, изменение дочерней темы фреймворка является делом специфическим, подчиняющимся определённым правилам и отличающимся от правки обычной темы для WordPress. Чтож, как говорится, по просьбам трудящихся, и в частности, пользователя shurche, попробую раскрыть секреты глубокой настройки дочерних тем Genesis.

Для того чтобы понимать, что и как делать, необходимо знать и понимать как работают дочерние темы Genesis. Не углубляясь в дебри, попробую объяснить на пальцах основное – необходимое для понимания процесса внесения изменений.

Если открыть папку дочерней темы Genesis, откроется, на первый взгляд, довольно странная картина — файлов практически нет. А в самих файлах практически отсутствует HTML-код, только PHP слегка разбавленный HTML. Это означает, что дочерние темы сами не строят HTML выводимой страницы, а всю основную работу перекладывают на сам фреймворк, что является абсолютно правильным подходом. “Своими” у дочерней темы, обычно, являются файлы style.css, functions.php и home.php.

Грубо говоря, алгоритм построения HTML страницы выглядит так:

  • Загружается таблица стилей style.css.
  • Загружаются и исполняются необходимые функции Genesis и текущей дочерней темы (functions.php)

Строится HTML код страницы либо на базе дочерней темы. Если есть соответствующий шаблон (например home.php) то по шаблону дочерней темы, если нет – по дефолтному шаблону Genesis.

 

Кроме того в Genesis есть очень много “действий” (actions) и фильтров (filters), практически на любой случай. Исходя из всего вышесказанного можно сделать вывод: самый лучший способ внести специфические изменения в шаблон дочерней темы Genesis – это использовать встроенные actions и filters и делать это нужно в файле functions.php! Конечно, можно править и файлы шаблонов страниц темы, но что там править-то … Кода практически нет … А вот править дефолтные шаблоны Genesis я Вам крайне не советую. Во-первых, при обновлении Вы потеряете все внесённые изменения. Во-вторых, потеряете универсальность фреймворка – при смене темы придётся всё править заново.

Перейдём к конкретным примерам использования actions и filters в дочерних темах Genesis.

 

Фильтры

 

Начнём с фильтров.

Задача: изменить строку копирайта в футере (убрать ссылки на StudioPress и вообще уменьшить количество ссылок – в оригинале их слишком много).

Что было сделано …

Обычно строка копирайта выводится с помощью Genesis, именно Genesis а не дочерней темой, по заданному шаблону, но перед выводом применяется фильтр “genesis_footer_creds_text“, если обработчик фильтра определён, выводится “фильтрованный” текст, если нет – выводится текст заданный по-умолчанию. Я задал фильтру “genesis_footer_creds_text“ обработчик – функцию “church_footer_creds_text” и сообщил об этом системе.

 

Согласно документации обработчик принимает один параметр (текст-оригинал) и должен возвратить переменную с обработанным текстом.

Для того, чтобы было интереснее, я привёл код реального обработчика фильтра из темы своего блога. Фильтр строит даты копирайта (год написания первой статьи – текущий год), имя блога, стандартная строка копирайта, ссылка на вход/выход (login/logout). Результат фыполнения фильтра Вы можете увидеть в футере моего блога.

Полный список фильтров (filters) фреймворка Genesis можно найти на сайте StudioPress.

 

Действия (actions)

 

Обычно, в темах StudioPress первичное и вторичное меню навигации располагаются под областью заголовка – это одно из общепринятых расположений. Другое общепринятое расположение подразумевает расположение первичного меню над областью заголовка, а вторичного меню под областью заголовка. Если Вам вдруг захочется иметь такое расположение меню навигации, Вы можете сделать следующее:

Что было сделано …

Всё очень просто … Я отключил вывод первичного меню навигации ниже области заголовка с помощью action genesis_after_header и включил вывод этого меню над областью заголовка с помощью action genesis_before_header. Вот и всё … И это действительно очень просто …

Полный список actions (hooks) фреймворка Genesis можно найти на сайте StudioPress.

 

 Дополнительные параметры дочерней темы

 

Иногда появляется необходимость добавить один два параметра к параметрам изменённой темы. В этом тоже нет ничего сложного – всё уже предусмотрено.

Что сделано …

Добавляем новый контейнер и новый параметр с помощью action WordPress “admin_menu” и функции add_meta_box. Затем определяем как будет выглядеть новый параметр на странице параметров с помощью HTML кода. Так же определяем значение по-умолчанию нового параметра с помощью фильтра “genesis_theme_settings_defaults“. И, конечно, определяем функцию для использования нового параметра.

Это пример реального параметра написанного мной для использования нескольких тем цветового оформления в модифицированной теме Church Child 1.0. Для версии Church Child 1.1+ этот код не актуален, так как выбор цветовой схемы в версиях 1.1+ задан разработчиком …

Я не даю готовых рецептов, но надеюсь, что примеры, приведённые выше, помогут Вам настроить Вашу дочернюю тему Genesis именно так, как Вам это надо. Удачи!

 

Мне очень понравилась публикация и я хочу еще дать ссылки на другие статьи этого автора:
Настройка Genesis http://blogcoding.ru/archives/nastrojka-genesis/
Genesis и его дети http://blogcoding.ru/archives/genesis-i-ego-deti/
WordPress темы Church Child и Lifestyle Child http://blogcoding.ru/archives/wordpress-temy-church-child-i-lifestyle-child/

 

Ссылка на скачивание фреймворка Genesis будет позже.