Статьи

Быстрые настройки WordPress с Кирки

Одна вещь, к которой привыкли пользователи WordPress, — это простота, не требующий кода опции настройки темы. Идея состоит в том, чтобы загрузить тему, активировать ее на панели «Темы», получить доступ к панели «Настройка» и начать настройку цветов, макета, шрифтов и т. Д. Всего одним щелчком мыши.

WordPress предлагает разработчикам темы API Customizer . Это чистый, объектно-ориентированный набор методов, которые облегчают создание согласованного интерфейса настройки. На панели «Настройка» пользователи могут легко вносить изменения и просматривать их в режиме реального времени без необходимости связываться с кодом PHP или CSS.

Разработка параметров темы с использованием API-интерфейса Customizer, будучи простым и логичным процессом, предполагает написание определенного количества повторяющегося кода. Чтобы сократить некоторые шаги, необходимые для создания функциональных и безопасных опций Customizer, Aristeides Stathopoulos разрабатывает бесплатный плагин с открытым исходным кодом, Kirki .

В этом посте я собираюсь показать, как интегрировать Kirki в вашу тему WordPress и как использовать ее для создания нескольких опций Customizer.

Что такое Кирки?

Давайте послушаем, о чем говорит Kirki от разработчика:

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

Кирки Документация

Я хотел бы рассказать о двух основных моментах этого инструментария.

  • Кирки не заменяет API WordPress Customizer. Он создает «оболочку для стандартных методов WordPress, упрощая синтаксис и позволяя писать больше с меньшим количеством кода». Вы все еще можете использовать собственные методы Customizer вместе с Kirki API. Более того, вам настоятельно рекомендуется ознакомиться с API настройщика, прежде чем обращаться к Кирки. Если вы ищете полезное введение в объект Customizer , перейдите к началу работы с API настройки темы WordPress от Narayan Prusty.
  • Кирки находится в состоянии постоянного развития и совершенствования, мало чем отличающегося от самого WordPress Customizer. Поэтому любые сообщения об ошибках или запросы на новые функции размещаются в репозитории GitHub , где вы можете скачать версию плагина для разработки и внести свой вклад в его разработку.

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

Как включить Кирки в вашу тему

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

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

  • Скопируйте каталог kirki в папку вашей темы.
    Структура каталогов тем
    В демонстрационной теме для этой статьи файлы Kirki находятся в каталоге с именем inc .

  • Сделайте вашу тему «поговорите» с Кирки, добавив эту строку в functions.php (убедитесь, что вы изменили путь к папке kirki в соответствии с файловой структурой вашей темы).

 if ( ! class_exists( 'Kirki' ) ) { include_once( dirname( __FILE__ ) . '/inc/kirki/kirki.php' ); } 
  • Добавьте функцию для включения параметров конфигурации Kirki и подключите ее к фильтру kirki/config . Вам решать, что вы хотите добавить к этой функции. Для этого поста давайте сведем его к минимуму, добавив код, который нужен Кирки, чтобы «узнать» о его новом расположении, то есть папке темы, а не папке плагина.

 function superminimal_customizer_config() { $args = array( // Only use this if you are bundling the plugin with your theme 'url_path' => get_stylesheet_directory_uri() . '/inc/kirki/', ); return $args; } add_filter( 'kirki/config', 'superminimal_customizer_config' ); 

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

Давайте начнем добавлять параметры

Кирки теперь готов помочь нам создать некоторые опции Customizer. Вы можете использовать functions.php или создать специальный файл для задачи, это ваше дело.

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

 function superminimal_demo_panels_sections( $wp_customize ) { /** * Add Panel */ $wp_customize->add_panel( 'sitepoint_demo_panel', array( 'priority' => 10, 'title' => __( 'SitePoint Demo Panel', 'superminimal' ), 'description' => __( 'Kirki integration for SitePoint demo', 'superminimal' ), ) ); //More code to come } add_action( 'customize_register', 'superminimal_demo_panels_sections' ); 

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

 /** * Add a Section for Site Text Colors */ $wp_customize->add_section( 'superminimal_text_colors', array( 'title' => __( 'Site Text Colors', 'superminimal' ), 'priority' => 10, 'panel' => 'sitepoint_demo_panel', 'description' => __( 'Section description.', 'superminimal' ), ) ); /** * Add a Section for Site Layout */ $wp_customize->add_section( 'superminimal_site_layout', array( 'title' => __( 'Site Layout', 'superminimal' ), 'priority' => 10, 'panel' => 'sitepoint_demo_panel', 'description' => __( 'Section description.', 'superminimal' ), ) ); /** * Add a Section for Footer Text */ $wp_customize->add_section( 'superminimal_footer_text', array( 'title' => __( 'Footer Text', 'superminimal' ), 'priority' => 10, 'panel' => 'sitepoint_demo_panel', 'description' => __( 'Section description.', 'superminimal' ), ) ); 

Теперь вы готовы добавить первый вариант с питанием от Kirki.

Вариант цвета текста

Весь ваш код, связанный с опциями, должен быть размещен внутри функции. Затем эта функция фильтруется через фильтр kirki/fields .

 function superminimal_demo_fields( $fields ) { //Add code here return $fields; } add_filter( 'kirki/fields', 'superminimal_demo_fields' ); 

Давайте дадим пользователям вашей темы WordPress простой способ изменить цвет текста. Это быстро делается с Кирки. Добавьте следующий фрагмент кода внутри функции superminimal_demo_fields() , чуть выше return $fields; заявление.

 /** * Add a Field to change the body text color in the Text Colors Section */ $fields[] = array( 'type' => 'color', 'setting' => 'superminimal_body_color', 'label' => __( 'Body Color', 'superminimal' ), 'description' => __( 'Description here', 'superminimal' ), 'section' => 'superminimal_text_colors', 'priority' => 10, 'default' => '#555555', 'output' => array( array( 'element' => 'body, p', 'property' => 'color' ), ); 

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

Давайте разберем массив $fields[] .

  • type относится к конкретному элементу управления, где пользователи вводят значение выбранного параметра, в данном случае элемент управления «Цвет».
  • setting относится к id параметра Customizer, который выполняет предварительный просмотр, сохранение и очистку объектов Customizer в режиме реального времени.
  • label и description есть для общения с пользователями. Метка отображает заголовок для опции, а описание предлагает некоторое указание того, что делает опция.
  • section ссылается на id Раздела, в котором размещен этот конкретный элемент управления Цвет.
  • priority относится к позиции этого конкретного элемента управления цветом относительно других элементов управления в том же разделе.
  • default установлено значение цвета CSS по умолчанию.
  • Наконец, output — это замечательный способ Кирки применить значение параметра. Просто передайте ему селектор и свойство CSS, и Кирки обрабатывает все необходимые операции.

Следуя приведенному выше примеру, вы можете добавить цветовую опцию и для ссылок.

Далее давайте дадим пользователям вашей темы возможность настроить макет сайта.

Вариант размещения сайта

Кирки предлагает кучу сложных элементов управления Customizer. Мой любимый — радиоуправление изображениями .

Раздел макета сайта

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

 /** * Add a Field to change the site layout */ $fields[] = array( 'type' => 'radio-image', 'setting' => 'superminimal_layout', 'label' => __( 'Site Layout', 'superminimal' ), 'description' => __( 'Description here', 'superminimal' ), 'section' => 'superminimal_site_layout', 'default' => 'fullwidth', 'priority' => 10, 'choices' => array( 'sidebar-left' => trailingslashit( get_template_directory_uri() ) . 'inc/kirki/assets/images/2cl.png', 'fullwidth' => trailingslashit( get_template_directory_uri() ) . 'inc/kirki/assets/images/1c.png', 'sidebar-right' => trailingslashit( get_template_directory_uri() ) . 'inc/kirki/assets/images/2cr.png', ), ); 

Поместите код выше сразу после предыдущего фрагмента массива $fields[] . Обратите внимание, что ни один output параметр не был добавлен в код. Это так, потому что значение каждого ввода радиоизображения не является значением свойства CSS.

Вы можете извлечь значение из параметра get_theme_mod помощью get_theme_mod метода Customizer get_theme_mod . Затем вы используете это значение в качестве значения атрибута класса подходящего HTML-элемента в файле шаблона. Наконец, это просто вопрос написания соответствующего CSS для достижения желаемого макета для .fullwidth , .sidebar-left и .sidebar-right в вашей таблице стилей.

Ознакомьтесь с подробной информацией о том, как реализовать параметр макета в демонстрационной теме Superminimal .

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

 /** * Add a Field to change the footer text only if checkbox is checked */ $fields[] = array( 'type' => 'textarea', 'setting' => 'superminimal_footer_text', 'label' => __( 'Footer Text', 'superminimal' ), 'description' => __( 'Add some text to the footer', 'superminimal' ), 'section' => 'superminimal_footer_text', 'default' => 'Superminimal Theme – Kirki Toolkit Demo for SitePoint', 'priority' => 20, ), ); 

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

Раздел текста нижнего колонтитула

Чтобы извлечь и отобразить текст, введенный в текстовую область, используйте собственный метод Customizer get_theme_mod в footer.php следующим образом.

 <footer id="footer"> <?php echo get_theme_mod( 'superminimal_footer_text', __( 'Default text here', 'superminimal' ) ); ?> <?php wp_footer(); ?> </footer> 

Далее, давайте посмотрим, что еще может сделать Кирки, чтобы улучшить пользовательский опыт с WordPress Customizer.

Как добавить условные параметры

Как дизайнеру темы, вам не нравится перегружать пользователей множеством запутанных вариантов. Некоторые выборы не нужно делать, пока пользователи не выберут какую-то конкретную опцию. Настройщик предлагает удобный параметр active_callback для панелей, секций и элементов управления. Вы можете установить для этого параметра определенное условие, которое должно быть выполнено до отображения панели, раздела или элемента управления в настройщике.

Что Кирки может предложить в этом отношении?

API Kirki использует обязательный параметр, чтобы скрыть или отобразить элемент управления в настройщике на основе значения другого элемента управления.

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

 'required' => array( array( 'setting' => 'superminimal_reveal_footer_text', 'operator' => '==', 'value' => 1, ), ), 

Добавление приведенного выше фрагмента к коду для элемента управления textarea гарантирует, что значение superminimal_reveal_footer_text управления superminimal_reveal_footer_text должно быть равно 1, прежде чем элемент управления textarea отобразится в настройщике. Давайте добавим элемент управления superminimal_demo_fields() функцию superminimal_demo_fields() .

 $fields[] = array( 'type' => 'checkbox', 'setting' => 'superminimal_reveal_footer_text', 'label' => __( 'Change Footer Text', 'superminimal' ), 'description' => __( 'Description here', 'superminimal' ), 'section' => 'superminimal_footer_text', 'default' => 0, 'priority' => 10, ); 

Элемент управления superminimal_reveal_footer_text — это флажок, который по умолчанию имеет значение 0, то есть он не отмечен. Это предотвращает отображение текстовой области.

Флажок текста нижнего колонтитула

Только после установки флажка, то есть путем изменения его значения с 0 на 1, текстовое поле появляется в настройщике.

Условный флажок управления

Улучшение Live Preview

Customizer поставляется с мощным JavaScript API для добавления возможности AJAX в область предварительного просмотра. Это усовершенствование позволяет пользователям проверять свои изменения в режиме реального времени, не дожидаясь обновления всей страницы предварительного просмотра Настройщика.

Мы можем достичь того же результата с Кирки, просто добавив несколько удобных параметров в массив $fields[] .

Например, чтобы добавить ajaxified live preview в настройку superminimal_body_color, добавьте следующий фрагмент в соответствующий массив $fields[] .

 'transport' => 'postMessage', 'js_vars' => array( array( 'element' => 'body, p', 'function' => 'css', 'property' => 'color', ), ) 

Позвольте мне объяснить, что делает код выше.

  • Во-первых, приведенный выше код изменяет метод транспорта с Refresh (по умолчанию) на postMessage . Это сигнализирует настройщику, что он должен использовать JavaScript для предварительного просмотра в реальном времени.
  • Затем js_vars параметра js_vars указывают, что элементы body и p должны быть изменены с использованием свойства цвета CSS.

Кирки предлагает два предопределенных значения для параметра function . Используйте значение css если добавляемый параметр хранит правила CSS, такие как background-color , color , font-size и т. Д. Используйте значение html если параметр хранит строку HTML-разметки для вставки на страницу.

В качестве примера того, как вы можете использовать значение html , давайте добавим функциональность предварительного просмотра AJAX в параметр, который управляет изменениями текста нижнего колонтитула. Добавьте этот фрагмент в конец массива $fields[] который содержит параметр superminimal_footer_text .

 'transport' => 'postMessage', 'js_vars' => array( array( 'element' => 'footer', 'function' => 'html' ), ), 

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

Предварительный просмотр Ajax с помощью Radio Image Control

Могут быть случаи, когда ни css ни html не подходят для параметра function который включает предварительный просмотр AJAX в реальном времени. В качестве примера можно привести настройку макета сайта. Использование css в качестве значения для параметра функции не имеет большого смысла, потому что рассматриваемый параметр не хранит никакого значения свойства CSS. Аналогично, использование html не совсем помогает. Фактически, он будет только выплевывать на полную ширину , влево или вправо на странице предварительного просмотра, в зависимости от того, какая кнопка управления радиоизображением выбрана. Но это не может быть тем, чего вы хотели бы достичь.

Хорошей новостью является то, что вы можете подключить собственное имя функции JavaScript в качестве значения параметра функции, и это работает!

 'js_vars' => array( array( 'element' => '#content', 'function' => 'superminimal_customizer_live_preview' ), ), 

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

 function superminimal_customizer_live_preview() { wp_enqueue_script( 'superminimal_css_preview', get_template_directory_uri().'/js/superminimal-customizer-preview.js', array( 'customize-preview', 'jquery' ), '', true ); } add_action( 'customize_preview_init', 'superminimal_customizer_live_preview' ); 

Наконец, напишите функцию JavaScript, которая обрабатывает предварительный просмотр в реальном времени, используя собственный API JavaScript Customizer.

 (function( $ ) { "use strict"; wp.customize( 'superminimal_layout', function( value ) { value.bind( function( to ) { $( '#content' ).removeClass().addClass( to + ' clearfix' ); } ); }); })( jQuery ); 

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

Ресурсы

Хотите больше? Вот несколько замечательных ресурсов.

Вывод

Я показал, как интегрировать Kirki Toolkit в тему WordPress.

Кирки активно развивается и поддерживается. Его API и пользовательские элементы управления уже значительно оптимизируют время, необходимое для разработки параметров темы Customizer. Это становится особенно важным, если вы хотите, чтобы ваша тема была указана в репозитории тем WordPress.org . Фактически, темы, которые предоставляют параметры настройки, должны делать это через настройщик, а не страницы пользовательских параметров.

Чтобы углубиться в детали кода, обсуждаемого в этом посте, не стесняйтесь загружать демонстрационную тему Superminimal с GitHub.

Я с нетерпением жду ваших отзывов!