Статьи

Инструментарий Smart WordPress Разработчик: Vafpress

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

Хотя всегда есть возможность создавать эти панели параметров с нуля, лучше использовать уже изобретенные колеса. В этой части серии «Инструментарий Smart WordPress Developer» мы рассмотрим Vafpress, основную структуру опций тем WordPress для вашего следующего проекта темы.

Время для некоторого противоречия: я не думаю, что Настройщик готов к темам — пока.

Несмотря на то, что я признаю, что Customizer — это просто потрясающий инструмент, я также вижу, что он просто не подходит для обслуживания всех функций даже простой многоцелевой темы. Я знаю, я знаю, многоцелевые темы — это бездушные, капиталистические темы, которые разрушают мир WordPress … или они? Я имею в виду, я признаю, что было бы лучше, если бы одноцелевые темы были более популярными, но можем ли мы игнорировать тот факт, что многоцелевые темы — это самый первый выбор большинства дизайнерских агентств, фрилансеров и даже начинающих пользователей WordPress, которые хотят создавать сайт для их бизнеса?

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

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

Я оставляю этот раздел коротким, потому что тема Vafpress как инструмент разработчика WordPress, и я могу говорить о «фреймворках опций настройщика и темы» для еще тысячи слов. Но не позволяйте мне прекратить это, не позволяйте вам комментировать: я хотел бы услышать ваше мнение об этом!

Излишне говорить об этом, но обычно каждый раздел открывается простым вступлением: Vafpress — это фреймворк опций темы. И очень хороший, я должен сказать. Созданная Vafour, индонезийской командой веб-разработчиков, Vafpress утверждает, что создание темы WordPress никогда не было таким простым и быстрым .

Просто скачайте Vafpress со своей официальной страницы загрузки или из своего репозитория GitHub , и давайте быстро перейдем к хорошему.

На день, когда я пишу этот урок, Vafpress имеет 19 полей управления, разделенных на две категории, называемые « Поля » и « Мультиполя ».

  • textbox : генерирует текстовый ввод.
  • textarea : генерирует поле textarea .
  • toggle : генерирует toggle да / нет.
  • slider : генерирует ползунок диапазона.
  • upload : генерирует поле загрузки с помощью WordPress Media Manager.
  • color : генерирует палитру цветов.
  • date : генерирует указатель даты.
  • codeeditor : генерирует редактор кода.
  • wpeditor : генерирует WYSIWYG-редактор.
  • fontawesome : генерирует средство выбора значков с помощью Font Awesome.
  • notebox : создает поле, которое вы можете использовать для информирования пользователей вашей темы.
  • html : позволяет отображать пользовательский HTML-код.
  • select : генерирует простое поле <select> .
  • multiselect : генерирует несколько выпадающих меню.
  • checkbox : генерирует группу флажков.
  • checkimage : генерирует группу выбираемых изображений, работающих как флажки.
  • radiobutton : генерирует группу переключателей.
  • radioimage : генерирует группу выбираемых изображений, работающих как радиоблоки.
  • sorter : генерирует сортируемое поле с множественным выбором.

Было бы неправильно, если бы я не закончил этот раздел без примера, давайте сделаем один простой пример. Следующие строки кода создают поле Color Picker:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
<?php
 
‘fields’ => array(
    array(
        ‘type’ => ‘color’,
        ‘name’ => ‘example_color_picker’,
        ‘label’ => ‘Color Picker’,
        ‘description’ => ‘Set a color for your headings here!’,
        ‘default’ => ‘rgba(255,255,255,.75)’,
        ‘format’ => ‘hex’,
    ),
    array(
        // another field
    ),
)
 
?>

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

Панель параметров, которую мы можем создать с помощью Vafpress, состоит из пары строительных блоков:

  • Поля — мы только что прошли через это.
  • Разделы сохраняют контрольные поля.
  • Меню или подменю содержат разделы.
  • Построитель страниц параметров строит панель параметров.

Давайте начнем с просмотра конструкции «компоновщика страниц параметров»:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?php
 
function my_options() {
     
    // initialize the object
    $theme_options = new VP_Option( array(
        // set it to TRUE if you don’t want the option values to be saved (in your theme demo, perhaps)
        ‘is_dev_mode’ => false,
        // the name for the settings in the database
        ‘option_key’ => ‘vpt_option’,
        // the slug of your options page
        ‘page_slug’ => ‘vpt_option’,
        // path to the template file or the array
        ‘template’ => get_template_directory() .
        // parent menu page
        ‘menu_page’ => ‘themes.php’,
        // decides whether to automatically name menus or not
        ‘use_auto_group_naming’ => true,
        // show (by default) or hide the «Export/Import» page
        ‘use_exim_menu’ => true,
        // minimum user role to view the options panel
        ‘minimum_role’ => ‘edit_theme_options’,
        // type of the layout (fixed by default)
        ‘layout’ => ‘fixed’,
        // title of the options page
        ‘page_title’ => __( ‘Theme Options’, ‘vp_textdomain’ ),
        // title of the main menu item
        ‘menu_label’ => __( ‘Theme Options’, ‘vp_textdomain’ ),
    ));
 
}
 
// hook it to the after_setup_theme action
add_action( ‘after_setup_theme’, ‘my_options’ )
 
?>

Хорошая вещь в «конструкторе страниц опций» заключается в том, что вы можете указать на отдельный файл, в котором хранятся все ваши меню (и разделы внутри меню, и поля внутри разделов). В приведенном выше примере мы указали на файл шаблона с именем options-template.php . Давайте посмотрим, чем заполнить этот файл:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
<?php
 
return array(
    ‘title’ => __(‘Vafpress Option Panel’, ‘vp_textdomain’),
    ‘logo’ => »,
    ‘menus’ => array(
        array(
            ‘title’ => __(‘Special Controls’, ‘vp_textdomain’),
            ‘name’ => ‘menu_2’,
            ‘icon’ => ‘/icon/special.png’,
            ‘controls’ => array(
                // … collection of Sections and or Control Fields …
            ),
        ),
    )
);
 
?>

Если вы хотите, вы можете сделать несколько «вложенных меню»:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?php
 
return array(
    ‘title’ => __(‘Vafpress Option Panel’, ‘vp_textdomain’),
    ‘logo’ => »,
    ‘menus’ => array(
        array(
            ‘title’ => __(‘Standard HTML Controls’, ‘vp_textdomain’),
            ‘name’ => ‘menu_1’,
            ‘icon’ => ‘font-awesome:icon-magic’,
            ‘menus’ => array(
                array(
                    ‘title’ => __(‘Regular’, ‘vp_textdomain’),
                    ‘name’ => ‘submenu_1’,
                    ‘icon’ => ‘font-awesome:icon-th-large’,
                    ‘controls’ => array(
                        // … collection of Sections and or Control Fields …
                    ),
                ),
                array(
                    ‘title’ => __(‘Image’, ‘vp_textdomain’),
                    ‘name’ => ‘submenu_2’,
                    ‘icon’ => ‘font-awesome:icon-picture’,
                    ‘controls’ => array(
                        // … collection of Sections and or Control Fields …
                    ),
                ),
            ),
        ),
    )
);
 
?>

А внутри массива аргументов 'controls' мы используем что-то вроде следующего:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
<?php
 
‘controls’ => array(
    array(
        ‘title’ => __(‘TextBox and TextArea’, ‘vp_textdomain’),
        ‘name’ => ‘section_1’,
        ‘description’ => __(‘TextBox and TextArea Showcase’, ‘vp_textdomain’),
        ‘fields’ => array(
            // … collection of control fields …
        ),
    ),
)
 
?>

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

Все эти функции должны быть достаточными для такой среды, как Vafpress, но Vafpress не останавливается на достигнутом — у него есть еще пара хитростей:

  • Тематический шаблон : Vafpress предлагает тематический шаблон для людей, которые хотят опробовать его, увидев живой пример на своих серверах.
  • Метабоксы: Vafpress позволяет создавать метабоксы для экранов ввода записей, чтобы вы могли обеспечить еще больше функциональности своей темой. Ознакомьтесь с документацией здесь .
  • Генератор шорткодов: Vafpress имеет встроенный генератор шорткодов ( здесь описано), так что вы можете помочь своим пользователям с легкостью вставлять шорткоды вашей темы.
  • Динамические источники данных: Вам когда-нибудь нужно было заполнять некоторые из ваших полей управления существующими данными? Вафпресс позволяет вам это делать. На этой странице вы можете научиться связывать динамические данные в свои «мультиполя».
  • Взаимодействия для управляющих полей. Возможно, вы захотите создать управляющие поля, которые зависят друг от друга, или связать их значения вместе. С функциональностью взаимодействия полей управления , можно сделать и то, и другое.

С Vafpress вы можете многого достичь — больше, чем мы рассмотрели в этом руководстве. Обязательно ознакомьтесь с документацией Vafpress, чтобы узнать больше об этом.

Что вы думаете о Vafpress? Как вы думаете, вы дадите ему шанс в вашем следующем тематическом проекте? Расскажите нам, что вы думаете в разделе комментариев ниже. И если вам понравилась статья, не забудьте поделиться ею с друзьями!

Увидимся в следующей части, где мы рассмотрим CMB2, метабокс, настраиваемые поля и библиотеку форм для WordPress.