Как создать собственный виджет в WordPress с помощью дочерней темы Genesis

Опубликовано: 2018-02-15
wordpress-genesis-child-the
Следуйте @Cloudways

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

В этой статье я продемонстрирую, насколько легко настроить дочернюю тему Genesis, создав 4 области виджетов внутри темы Genesis Sample, которая поставляется бесплатно с Genesis Framework.

1. Настройка среды разработки

Чтобы установить Genesis Framework, у вас должен быть установлен WordPress локально или на сервере. Я предполагаю, что вы уже установили WordPress на свой сервер, а если нет, запустите WordPress с помощью Cloudways Platform.

Теперь загрузите копию Genesis Framework и Sample Theme из StudioPress и активируйте структуру на своем веб-сайте WordPress.

Примечание. Для настройки темы Genesis я использую Sublime Text 3 в качестве текстового редактора. Однако вы можете выбрать любой другой текстовый редактор.

2. Настройка дочерней темы

Откройте тему Sample Genesis в текстовом редакторе и создайте новый файл front-page.php в корневом каталоге .

Теперь откройте файл front-page.php и добавьте следующий фрагмент.

 <? php

генезис ();

Это инициализирует Genesis Framework.

превосходный текстовый редактор

Образец темы не поставляется с front-page.php , поэтому я должен явно создать эту страницу, чтобы зарегистрировать области наших виджетов.

Планирование пользовательского виджета Genesis

Пользовательские области виджетов

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

Здесь я объявляю функцию, которая принимает массив параметров:

  1. id - для идентификации нашего кода.
  2. name - это то, что мы увидим в нашей панели управления WordPress.
  3. описание - это также будет отображаться на панели управления WordPress.

Примечание: «id» и «name» функции должны быть уникальными.

Теперь откройте function.php и добавьте следующие фрагменты кода в конец файла.

Для виджета слайдера

 genesis_register_sidebar (массив (
           'id' => 'первая-страница-1',
           'name' => __ ('Виджет слайдера домашней страницы', 'genesis-sample'),
           'description' => __ ('Это виджет, который отображается на первой странице.', 'genesis-sample'),
));

Для виджета содержимого 1

 genesis_register_sidebar (массив (
   'name' => __ ('Домашний контент вверху слева', 'genesis-sample'),
   'id' => 'content-1',
   'description' => __ ('Верхний левый экран', 'genesis-sample'),
 ));

Для Content Widget 2

 genesis_register_sidebar (массив (
   'name' => __ ('Home Content Top Middle', 'genesis-sample'),
   'id' => 'content-2',
   'description' => __ ('Верхний средний дом', 'genesis-sample'),
 ));

Для Content Widget 3

 genesis_register_sidebar (массив (
   'name' => __ ('Домашний контент вверху справа', 'genesis-sample'),
   'id' => 'content-3',
   'description' => __ ('Top Right Home', 'genesis-sample'),
 ));

Как видно ниже, я успешно создал 3 разных виджета. Теперь давайте загрузим настроенную тему в панель управления WordPress.

Панель инструментов GenesCustom Widget

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

Чтобы добавить разметку для отображения виджетов, я объявляю настраиваемую функцию в файле front-page.php . В этой функции я вызываю виджет по его «id», который был ранее создан в файле function.php вместе с некоторой разметкой HTML.

Хотя добавление этой функции по-прежнему ничего не даст, поскольку мы еще не прикрепили эту функцию ни к какому действию.

Для этого я объявляю действие, которое содержит перехватчик «genesis-meta», и в нем я вызываю функцию «my_homepage_setup» . В этой функции я проверяю, активна ли область виджетов. Если да, то я должен привязать этот виджет к указанному месту, а затем вызвать эту функцию виджета для отображения разметки виджета.

Теперь я добавлю следующий фрагмент кода в файл front-page.php .

Виджет слайдера

 add_action ('genesis_meta', 'my_homepage_setup');

function my_homepage_setup () {

     if (is_active_sidebar ('front-page-1')) {
            // * Добавить виджет слайдера
           add_action ('genesis_after_header', 'display_front_page_1_widget');
     }
}

// Добавляем разметку для отображения виджетов слайдера.

function display_front_page_1_widget () {
     genesis_widget_area ('первая страница-1', массив (
           'before' => '<div class = "front-page-1-widget"> <div class = "wrap">',
           'after' => '</div> </div>',
     ));
}

Виджеты контента (1, 2 и 3)

 add_action ('genesis_before_content', 'ng_home_page_widgets');

// * Добавляем домашние виджеты на место

function ng_home_page_widgets () {
           если (is_front_page (''))
           genesis_widget_area ('контент-1', массив (
                'before' => '<div class = "треть первого hometopcol toplefthome">',
                'after' => '</div>',));
           если (is_front_page (''))
           genesis_widget_area ('контент-2', массив (
                'before' => '<div class = "одна треть hometopcol topmiddlehome">',
                'after' => '</div>',));
           если (is_front_page (''))
           genesis_widget_area ('контент-3', массив (
                'before' => '<div class = "одна треть hometopcol toprighthome">',
                'after' => '</div>',));
           }

Наконец, немного стилей CSS внутри вашего файла style.css

Я добавляю CSS в области виджетов стиля. Однако вы можете укладывать как хотите.

Для простоты я определяю только размер и заполнение виджетов содержимого: цвет границы и фона для контейнера веб-сайта.

 .first {margin-left: 0px;}

.site-container {background: #fff;}
.site-inner {padding-top: 0px;}

homecontent {
           цвет: # 7e7467;
           размер шрифта: 16 пикселей;
           высота строки: 1,3;
           коробка-тень: 1px 2px 5px 0px rgba (0, 0, 0, 1);
           маржа сверху: 25 пикселей;
           позиция: относительная;}

.textwidget {отступ: 12%; выравнивание текста: центр;}

.hometopcol {
     маржа сверху: 0 пикселей;
     высота: 280 пикселей;
     border: 4px solid rgb (255,69,0);}

.widgettitle {
           цвет: # c4421b;
           отступ: 15px 0px 0px 15px;
           border-bottom: сплошной rgba 4 пикселя (162, 152, 135, 1);
           нижнее поле: 10 пикселей;
           текст-преобразование: нет;
           размер шрифта: 16 пикселей;}

.widgettitle: after {
           содержание: " ";
           позиция: абсолютная;
           верх: 43px;
           слева: 5 пикселей;
           справа: 5 пикселей;
           border: 1px solid rgba (162, 152, 135, 1);}

Вернемся на сайт WordPress и посмотрим, что изменилось. В качестве виджета слайдера я буду использовать Smart Slider 3. Вы можете использовать любой виджет слайдера по вашему выбору. Для виджетов содержимого я просто буду использовать текст.

Список пользовательских виджетов Genesis

Окончательный вид

В конце этой статьи я могу создать 4 пользовательских виджета для дочерней темы Genesis Sample. По умолчанию в теме Genesis нет виджета заголовка, но теперь у меня есть собственный виджет, который можно использовать для слайдера или для отображения любой другой информации. Остальные 3 виджета контента можно использовать для выделения продуктов, услуг или любой другой функции.

После активации всех виджетов главная страница должна выглядеть примерно так:

Резюме

В начале этой статьи мы знали только, как использовать тему Genesis WordPress в качестве дочерней темы Sample, но по мере продвижения мы узнали, как создавать настраиваемые области виджетов внутри темы WordPress Genesis Sample и как размещать их в дизайне главной страницы.

Я уверен, что эта статья вселила в вас достаточно уверенности, чтобы самостоятельно настроить или создать собственную дочернюю тему Genesis. Для получения лучших практик рекомендуется проверить официальную документацию Genesis и WordPress.