Статьи

Руководство для начинающих по Titan: добавление опций Select, Select-Posts и Select-Pages

Когда вам нужно отобразить множество опций в форме раскрывающегося списка, вы можете использовать select типа с Titan Framework. Сегодня мы собираемся создать опцию выбора типа в пользовательской панели администратора, метабоксе и настройщике темы.

Опция select типа в Titan Framework помогает отображать множество опций через выпадающее меню. Вот как это выглядит.

Добавление параметров выбора типа в Titan

Этот тип опции поддерживает список настроек:

  • name : этот параметр назначает отображаемое имя опции.
  • id : определяет уникальное имя, которое возвращает значения сохраненных опций.
  • desc : добавляет однострочное описание с именем опции.
  • options : этот параметр принимает ассоциативный массив пар меток-значений, которые отображаются как опции в раскрывающемся меню. Вы даже можете добавить двумерный массив для отображения сгруппированных параметров (подробнее об этом позже).
  • default : (необязательно). Определяет значение по умолчанию для опции.
  • livepreview : (Необязательно) Этот параметр отображает предварительный просмотр изменений, когда опция select типа добавляется в раздел настройщика темы.
  • css : (Необязательно) Каждый раз, когда вы добавляете эту опцию на страницу администратора и / или в раздел настройщика темы, этот параметр автоматически генерирует CSS .

Все параметры имеют тип string кроме «Options», который по своей природе является array .

Вы можете добавить эту опцию внутри:

  • Панель администратора
  • Вкладки администратора
  • Metabox
  • Раздел настройки темы

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

  1. Сначала получите экземпляр с помощью функции getInstance() .
  2. Затем добавьте параметр с помощью функции createOption() .
  3. В конце getOption() сохраненные значения с помощью функции getOption() .

Все эти контейнеры могут быть легко добавлены с помощью Titan Framework. Прочтите предыдущие статьи этой серии, если не знаете как.

Давайте добавим эту опцию внутри админ-панели.

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
<?php
   /**
    *
    * Create select type option in an Admin Panel
    *
    */
     
   $aa_panel->createOption( array(
 
       ‘id’ => ‘aa_select’, // The ID which will be used to get the value of this option
       ‘type’ => ‘select’, // Type of option we are creating
       ‘name’ => ‘My Select Option’, // Name of the option which will be displayed in the admin panel
       ‘desc’ => ‘This is our option’, // Description of the option which will be displayed in the admin panel
       ‘options’ => array( //An array of value-label pairs which appears as options
 
                       ‘aa_theme_temp1’ => ‘Theme Template 1’,
 
                       ‘aa_theme_temp2’ => ‘Theme Template 2’,
 
                       ‘aa_theme_temp3’ => ‘Theme Template 3’
                          
                   ),
 
       ‘default’ => ‘aa_theme_temp2’
 
   ) );

Я добавляю select типа в админ-панели $aa_panel используя createOption() в строке № 9. Эта функция определяет список параметров, например, имя, идентификатор, тип, desc, параметры и значения по умолчанию . Я определил уникальный идентификатор для моей опции, то есть aa_select .

Теперь взгляните на строку # 15, где я добавил массив пар ключ-значение . Каждая пара добавляет отдельную опцию в раскрывающемся списке. Я создал три такие пары, то есть три записи select типа.

Следовательно, метки aa_theme_temp1 , aa_theme_temp2 и aa_theme_temp3 добавляют опции, названные « Шаблон темы 1 », « Шаблон темы 2 » и « Шаблон темы 3 », в список.

Добавление опций выбора типа к опциональным опциям

На снимке экрана показана опция «Мой выбор» внутри административной панели под названием « Опрятные параметры»

Давайте восстановим сохраненные значения параметров.

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
<?php
// 1. Get the titan framework instance and save it to a variable
$titan = TitanFramework::getInstance( ‘neat’ );
 
// 2. Get the value via ID using getOption function
$aa_select_val = $titan->getOption( ‘aa_select’ );
 
/**
 *
 * Print Admin Panel option values
 *
 */
  
if ( ‘aa_theme_temp1’ == $aa_select_val ) {
 
    echo «You’ve selected Theme Template #1.»;
     
} elseif ( ‘aa_theme_temp2’ == $aa_select_val ) {
 
    echo «You’ve selected Theme Template #2.»;
 
} else {
     
    echo «You’ve selected Theme Template #3.»;
 
}
?>

В строке № 3 получите экземпляр с помощью функции getInstance() . Он принимает уникальный параметр, предпочтительно название вашей темы (т.е. neat в моем случае). Затем используйте getOption() в строке № 6. Он регистрирует идентификатор опции aa_select и сохраняет его значение в переменной $aa_select_val .

Далее я использую операторы проверки if-else для печати выбранных значений во внешнем интерфейсе, хотя вы можете сделать много разных вещей с помощью этой опции. Согласно этим:

  • Если значение переменной $aa_select_val равно метке aa_theme_temp1 выведите: « Вы выбрали шаблон темы # 1.
  • Если значение переменной $aa_select_val равно метке aa_theme_temp2 выведите: « Вы выбрали шаблон темы № 2.
  • Если значение меток не aa_theme_temp1 или aa_theme_temp2 выведите: « Вы выбрали шаблон темы № 3.

Я выбираю Theme Template 1 в качестве настроек демо.

Выбор опций из опций

Давайте выясним, как сохраненные настройки печатаются в интерфейсе. Итак, вот скриншот.

Отображение результатов опций на интерфейсе

Теперь я создам эту опцию на вкладке администратора, но с другим подходом.

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
<?php
   /**
    *
    * Create select type option in an Admin Tab
    *
    */
   $aa_tab1->createOption( array(
 
       ‘id’ => ‘aa_select_in_tab1_panel2’, // The ID which will be used to get the value of this option
       ‘type’ => ‘select’, // Type of option we are creating
       ‘name’ => ‘My Select Option’, // Name of the option which will be displayed in the admin panel
       ‘desc’ => ‘This is our option’, // Description of the option which will be displayed in the admin panel
       ‘options’ => array( //An array of value-label pairs which appears as options
 
                       ‘aa_theme_temp1’ => ‘Theme Template 1’,
 
                       ‘aa_theme_temp2’ => ‘Theme Template 2’,
 
                       ‘aa_theme_temp3’ => ‘Theme Template 3’
                          
                   ),
 
       ‘default’ => ‘aa_theme_temp2’
        
   ) );

Я добавляю эту опцию во вкладку администратора $aa_tab1 с идентификатором aa_select_in_tab1_panel2 .

Добавление вариантов выбора на вкладки

Вы можете найти опцию My Select на вкладке 1 административной панели Neat Options 2 .

Теперь я восстановлю его значения.

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
<?php
// 1. Get the titan framework instance and save it to a variable
$titan = TitanFramework::getInstance( ‘neat’ );
 
// 2. Get the value via ID using getOption function
$aa_select_in_tab1_panel2_val = $titan->getOption( ‘aa_select_in_tab1_panel2’ );
 
/**
 *
 * Print Admin Tab option values
 *
 */
  
if ( ‘aa_theme_temp1’ == $aa_select_in_tab1_panel2_val ) {
 
    echo «You’ve selected Theme Template #1.»;
     
} elseif ( ‘aa_theme_temp2’ == $aa_select_in_tab1_panel2_val ) {
 
    echo «You’ve selected Theme Template #2.»;
 
} else {
     
    echo «You’ve selected Theme Template #3.»;
 
}

Мы получаем значения, выполнив следующие действия:

  • Получить экземпляр в строке # 3.
  • Получить сохраненные значения в строке № 6, зарегистрировав уникальный идентификатор.
  • Распечатайте сохраненные значения во внешнем интерфейсе с помощью операторов проверки if-else в строках с 16 по 27.

Теперь я выберу « Шаблон темы 2 » в качестве настроек демо. Вот скриншот внешнего интерфейса.

Отображение опций

Вот код:

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
<?php
   /**
    *
    * Create select type option in a Metabox
    *
    */
     
   $aa_metbox->createOption( array(
 
       ‘id’ => ‘aa_mb_select’, // The ID which will be used to get the value of this option
       ‘type’ => ‘select’, // Type of option we are creating
       ‘name’ => ‘My Select Option’, // Name of the option which will be displayed
       ‘desc’ => ‘This is our option’, // Description of the option which will be displayed
       ‘options’ => array( //An array of value-label pairs which appears as options
 
                       ‘aa_theme_temp1’ => ‘Theme Template 1’,
 
                       ‘aa_theme_temp2’ => ‘Theme Template 2’,
 
                       ‘aa_theme_temp3’ => ‘Theme Template 3’
                          
                         ),
 
       ‘default’ => ‘aa_theme_temp2’
 
   ) );

Здесь я добавляю select типа в метабокс $aa_metbox с идентификатором aa_mb_select . Здесь я использую тот же ассоциативный массив, который я определил внутри админ-панели.

Добавление вариантов выбора в мета-поле

Раскрывающееся меню с именем My Select Option отображается в конце экрана редактирования страницы в Metabox Options .

Давайте получим значения.

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
<?php
// 1. Get the titan framework instance and save it to a variable
$titan = TitanFramework::getInstance( ‘neat’ );
 
// 2. Get the value via ID using getOption function
$aa_mb_select_val = $titan->getOption( ‘aa_mb_select’, get_the_ID() );
 
/**
 *
 * Print Metabox option values
 *
 */
  
if ( ‘aa_theme_temp1’ == $aa_mb_select_val ) {
 
    echo «You’ve selected Theme Template #1.»;
     
} elseif ( ‘aa_theme_temp2’ == $aa_mb_select_val ) {
 
    echo «You’ve selected Theme Template #2.»;
 
} else {
     
    echo «You’ve selected Theme Template #3.»;
 
}
 
?>

Процесс получения сохраненных значений почти такой же, как я обсуждал в случае админ-панели. Единственное отличие заключается в строке № 6, которая извлекает сохраненное значение определенной страницы или идентификатора записи с помощью функции get_the_ID() .

Давайте выберем « Шаблон темы 3 » в качестве настроек демо. Вот скриншот внешнего интерфейса.

Отображение выбранной опции на внешнем интерфейсе

В конце я добавлю эту опцию в раздел настройщика темы.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
   /**
    *
    * Create select type option in a Theme Customizer Section
    *
    */
   $aa_section1->createOption( array(
 
       ‘id’ => ‘aa_sec_select’, // The ID which will be used to get the value of this option
       ‘type’ => ‘select’, // Type of option we are creating
       ‘name’ => ‘My Select Option’, // Name of the option which will be displayed
       ‘desc’ => ‘This is our option’, // Description of the option which will be displayed
       ‘options’ => array( //An array of value-label pairs which appears as options
 
                       ‘aa_red’ => ‘Red’,
    
                       ‘aa_blue’ => ‘Blue’,
    
                       ‘aa_green’ => ‘Green’
 
                   ),
 
        ‘default’ => ‘aa_blue’
   ) );

Здесь я добавил select типа в разделе настройщика темы $aa_section1 .

Вот как это выглядит в настройщике.

Добавление выбранного элемента в настройщик

На приведенном выше снимке экрана вы можете найти раскрывающийся список с цветами в разделе настройщика темы под названием Мой раздел .

Вот код

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
<?php
// 1. Get the titan framework instance and save it to a variable
$titan = TitanFramework::getInstance( ‘neat’ );
 
// 2. Get the value via ID using getOption function
$aa_sec_select_val = $titan->getOption( ‘aa_sec_select’ );
 
/**
 *
 * Print Customizer option values
 *
 */
 ?>
 
<div
    style=»color: <?php echo $aa_sec_select_val; ?>;»>
 
    <h1> My Site Header Text.
 
</div>

Сначала я зарегистрировал экземпляр с помощью функции getInstance() а затем сохраненные значения с помощью функции getOption() в строках № 3 и № 6. Далее в строке № 16 я создал тег div с каким-то фиктивным текстом. Наконец, я использовал встроенный CSS, чтобы напечатать значение цвета.

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

Просмотр выбранной опции в интерфейсе

При создании темы или плагина WordPress иногда мне нужно предоставить конечному пользователю возможность прикрепить конкретное сообщение с некоторыми пользовательскими функциями. Здесь вам пригодится опция select-posts типа select-posts в Titan Framework.

В Titan Framework вы можете создать раскрывающееся меню, содержащее список существующих сообщений. Это возможно с помощью опции типа select-posts . Также поддерживаются пользовательские типы сообщений, о которых я расскажу позже в этой статье.

Добавление опций избранных сообщений на панель инструментов

Давайте посмотрим на его параметры:

  • name : отображает название опции типа select-posts .
  • id : этот параметр назначает уникальное имя, которое получает сохраненные значения параметров.
  • desc : добавлено краткое описание
  • default : (Необязательно) Этот параметр настраивает идентификатор сообщения по умолчанию.
  • livepreview : (Необязательно) Когда вы добавляете select-posts типа select-posts в настройщик темы, вы можете просмотреть живые изменения с помощью этого параметра.
  • post_type: (необязательно). Указывает тип сообщений, которые отображаются в раскрывающемся списке. По умолчанию установлено post .
  • post_status: (Необязательно) Этот параметр управляет состоянием отображаемых сообщений, которые отображаются в списке параметров. Значением по умолчанию является any , но оно может быть установлено для публикации, ожидания, черновика и т. Д. Подробнее!
  • num: (необязательно). Указывает количество сообщений в раскрывающемся списке. По умолчанию установлено значение -1 , что относится ко всем сообщениям.
  • orderby: (Необязательно) Порядок отображения перечисленных сообщений контролируется этим параметром. Настройка по умолчанию перечисляет их по post_date . Вы можете установить его на автора, идентификатор, название, тип и т. Д. Узнайте больше!
  • order: (Необязательно) Этот параметр решает, будет ли порядок отображения параметров по возрастанию ( asc ) или по убыванию ( desc ). По умолчанию установлено значение desc .

Все параметры являются string по типу, за исключением num, который по своей природе является int .

Опция select-posts type добавлена ​​в:

  • Панель администратора
  • Вкладки администратора
  • Metabox
  • Раздел настройки темы

Чтобы добавить эту опцию, вы должны следовать единому шаблону шагов:

  • Получить экземпляр с помощью функции getInstance() .
  • Затем добавьте параметр с помощью функции createOption() .
  • В конце getOption() сохраненные значения с помощью функции getOption() .

Если вы не знаете, как создаются контейнеры в Titan Framework, прочтите предыдущие статьи этой серии.

Во-первых, я собираюсь добавить эту опцию в админ-панели.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
<?php
    /**
    *
    * Create the slect-posts type option in an Admin Panel
    *
    */
   $aa_panel->createOption( array(
 
           ‘id’ => ‘aa_select_posts_opt’, // The ID which will be used to get the value of this option
           ‘type’ => ‘select-posts’, // Type of option we are creating
           ‘name’ => ‘Select Posts Option’, // Name of the option which will be displayed in the admin panel
           ‘desc’ => ‘This is our option’ // Description of the option which will be displayed in the admin panel
 
       ) );

Этот код добавляет select-posts типа select-posts в административную панель $aa_panel через createOption() . Параметры, которые я использовал, довольно просты: id, name, type и desc . Среди этих параметров идентификатор всегда должен быть уникальным.

Итак, создается опция select-posts с идентификатором aa_select_posts_opt и именем « Select Posts Option », которая выглядит следующим образом:

Добавление опций выбора сообщений в Titan

На приведенном выше снимке экрана есть раскрывающееся меню « Выбор сообщений», в котором перечислены все сообщения. Обратите внимание, что эта опция находится внутри админ панели Neat Options .

Давайте восстановим сохраненные значения параметров.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
<?php
// 1. Get the titan framework instance and save it to a variable
$titan = TitanFramework::getInstance( ‘neat’ );
 
// 2. Get the value via ID using getOption function
$aa_panel_getpostid_val = $titan->getOption( ‘aa_select_posts_opt’ );
 
// 3. Get the post title from the saved post ID
$aa_panel_getpost_title_val = get_post_field(‘post_title’, $aa_panel_getpostid_val);
 
/**
 *
 * Print Admin panel options
 *
 */
?>
 
<div>
     The title of the selected post is: <?php echo $aa_panel_getpost_title_val;
</div>

В строке № 3 сначала получите ваш экземпляр с помощью функции getInstance() ; Я использовал название своей темы в качестве параметра здесь. Затем в строке № 6 getOption() сохраненные значения с помощью функции getOption() с идентификатором aa_select_posts_opt качестве параметра и сохраните его в переменной $aa_panel_getpostid_val .

Далее в строке № 9 я использовал get_post_field() , которая извлекает данные из поля сообщения на основе идентификатора сообщения. Таким образом, идентификатор сообщения предоставляется переменной $aa_panel_getpostid_val и вместе с параметром post_title заголовок выбранного сообщения сохраняется в новой переменной $aa_panel_getpost_title_val .

Затем я распечатал его во внешнем интерфейсе, используя команду echo внутри div (строка # 20). Довольно увлекательно, не правда ли? Вы можете сделать несколько вещей, когда у вас есть выбранный идентификатор сообщения.

Предположим, я выбрал Hello World в качестве настроек демо.

Выбор страницы из выпадающего

Внешний интерфейс будет выглядеть так:

Просмотр результатов выбранной страницы в интерфейсе

Давайте создадим эту опцию на вкладке администратора.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
<?php
   /**
    *
    * Create the select-posts type option in an Admin Tab
    *
    */
   $aa_tab1->createOption( array(
 
           ‘id’ => ‘aa_select_posts_opt_in_tab1’, // The ID which will be used to get the value of this option
           ‘type’ => ‘select-posts’, // Type of option we are creating
           ‘name’ => ‘Select Posts Option’, // Name of the option which will be displayed in the admin panel
           ‘desc’ => ‘This is our option’, // Description of the option which will be displayed in the admin panel
           ‘post_status’ => ‘draft’ //Status of the displayed options
 
       ) );

Теперь я добавляю эту опцию во вкладку администратора $aa_tab1 с идентификатором aa_select_posts_opt_in_tab1 . Обратите внимание, что в списке параметров есть новое дополнение. В строке # 14 я использовал параметр ‘ post_status’ , значение которого равно draft . Это означает, что теперь только select-posts отображаются в списке select-posts .

Добавление опции select-post в интерфейс с вкладками

На скриншоте есть список с именем Select Option Option внутри вкладки 1 панели Neat Options 2 . Вы также обнаружите, что по очевидным причинам вариантов списка меньше, чем раньше.

Давайте получим его значения.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
<?php
// 1. Get the titan framework instance and save it to a variable
$titan = TitanFramework::getInstance( ‘neat’ );
 
// 2. Get the value via ID using getOption function
$aa_tab_getpostid_val = $titan->getOption( ‘aa_select_posts_opt_in_tab1’ );
 
// 3. Get the post title from the saved post ID
$aa_tab_getpost_title_val = get_post_field(‘post_title’, $aa_tab_getpostid_val);
 
/**
 *
 * Print Admin Tab options
 *
 */
?>
 
<div>
    The title of the selected draft post is: <?php echo $aa_tab_getpost_title_val;
</div>

Процесс спасения практически одинаков, поэтому позвольте мне кратко суммировать все пункты:

  • Получите уникальный экземпляр в строке # 3.
  • Получить сохраненные значения с помощью функции getOption() в строке № 6.
  • Получить составленный заголовок сообщения с помощью функции get_post_field() в строке № 9.
  • $aa_tab_getpost_title_val результаты переменной $aa_tab_getpost_title_val используя команду echo в строке # 20.

На этот раз я выбираю « Портфолио », например. Вот скриншот внешнего интерфейса.

Отображение результатов выбранных постов в front-end

Теперь я создам эту опцию в метабоксе.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
<?php
   /**
    *
    * Create the select-posts type option in a Meta box
    *
    */
   $aa_metbox->createOption( array(
 
           ‘id’ => ‘aa_select_posts_opt_in_metabox’, // The ID which will be used to get the value of this option
           ‘type’ => ‘select-posts’, // Type of option we are creating
           ‘name’ => ‘Select Page Option’, // Name of the option which will be displayed
           ‘desc’ => ‘This is our option’, // Description of the option which will be displayed
           ‘post_type’ => ‘page’ //Type of the displayed options
 
       ) );

Теперь я добавляю эту опцию в метабокс $aa_metbox с идентификатором aa_select_posts_opt_in_metabox . Я использую параметр ‘ post_type’ в строке # 14 со значением, установленным на page . Это означает, что в раскрывающемся меню будут перечислены только страницы.

Добавьте опцию выбора сообщений в мета-поле

На приведенном выше снимке экрана показан экран редактирования страницы, а справа внизу есть опция выбора страницы, содержащая список страниц в метабоксе.

Используйте этот код.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
<?php
// 1. Get the titan framework instance and save it to a variable
$titan = TitanFramework::getInstance( ‘neat’ );
 
// 2. Get the value via ID using getOption function
$aa_metabox_getpostid_val = $titan->getOption( ‘aa_select_posts_opt_in_metabox’, get_the_ID() );
 
// 3. Get the post title from the saved post ID
$aa_metabox_getpost_title_val = get_post_field(‘post_title’, $aa_metabox_getpostid_val);
 
/**
 *
 * Print Metabox options
 *
 */
?>
 
<div>
    The title of the selected page in a metabox is: <?php echo $aa_metabox_getpost_title_val;
</div>

Весь код очень похож на то, что я использовал ранее. Вы найдете только дополнительный параметр в строке № 6, который является get_the_ID() .

Предположим, я выбрал страницу « Titan Framework». Внешний вид выглядит так:  

Просмотр результатов выбранных сообщений из мета-окна

Используйте код, написанный ниже.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
<?php
    
   /**
    *
    * Create the slect-posts type option in a Customizer Section
    *
    */
   $aa_section1->createOption( array(
 
           ‘id’ => ‘aa_select_posts_opt_in_sec’, // The ID which will be used to get the value of this option
           ‘type’ => ‘select-posts’, // Type of option we are creating
           ‘name’ => ‘Select Post Option’, // Name of the option which will be displayed
           ‘desc’ => ‘This is our option’ // Description of the option which will be displayed
 
       ) );

Наконец, в разделе настройщика темы $aa_section1 существует опция типа select-posts с идентификатором $aa_section1 .

Добавление опций выбора поста в настройщик

Изображение показывает эту опцию внутри секции настройщика под названием My Section .

Теперь я напишу код, чтобы получить сохраненные значения.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
<?php
// 1. Get the titan framework instance and save it to a variable
$titan = TitanFramework::getInstance( ‘neat’ );
 
// 2. Get the value via ID using getOption function
$aa_sec_getpostid_val = $titan->getOption( ‘aa_select_posts_opt_in_sec’ );
 
// 3. Get the post title from the saved post ID
$aa_sec_getpost_title_val = get_post_field(‘post_title’, $aa_sec_getpostid_val);
 
/**
 *
 * Print Customizer Section options
 *
 */
?>
 
<div>
     The title of the selected post in a theme customizer section is: <?php echo $aa_sec_getpost_title_val;
</div>

Еще раз, этот код такой же. Только ID и имена переменных здесь разные.

Вот скриншот.

Просмотр результатов выбранных сообщений в настройщике

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

Далее мы собираемся обсудить select-pages в Titan Framework. Давайте посмотрим, как вы можете добавить опцию для конечных пользователей, чтобы выбрать существующую страницу в пользовательской панели администратора, метабоксе или настройщике темы.

Подобно select-posts , в Titan Framework существует опция типа select-pages которая отображает раскрывающийся список, содержащий существующие страницы вашего веб-сайта. Это выглядит на приборной панели следующим образом:

Добавление опций выбора страниц в Titan

Давайте перечислим параметры, которые поддерживает эта опция:

  • name : этот параметр назначает отображаемое имя опции типа select-pages .
  • id : это уникальное имя, которое помогает получить сохраненные значения.
  • desc : добавляет однострочное описание
  • default : (необязательно) Этот параметр назначает идентификатор страницы по умолчанию.
  • livepreview : (Необязательно). Когда вы добавляете эту опцию в настройщик темы, вы можете просматривать живые изменения с помощью этого параметра.

Все параметры являются string по типу.

Вы можете добавить эту опцию в:

  • Панель администратора
  • Вкладки администратора
  • Metabox
  • Раздел настройки темы

Прочитайте предыдущие статьи этой серии, если вам нужно понять детали добавления контейнеров с помощью Titan Framework.

  • Получить экземпляр через функцию getInstance() .
  • Добавьте опцию, используя createOption() .
  • Получите сохраненные значения с помощью функции getOption() .

Во-первых, я собираюсь добавить эту опцию в админ-панели.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
<?php
   /**
    *
    * Create select-pages type option in an Admin Panel
    *
    */
   $aa_panel->createOption( array(
    
           ‘id’ => ‘aa_select_pages_opt’, // The ID which will be used to get the value of this option
           ‘type’ => ‘select-pages’, // Type of option we are creating
           ‘name’ => ‘Select Pages Option’, // Name of the option which will be displayed in the admin panel
           ‘desc’ => ‘This is our option’ // Description of the option which will be displayed in the admin panel
 
       ) );

В строке № 8 я использую createOption() чтобы добавить select-pages типа select-pages в админ-панели $aa_panel . Из всех параметров я использовал name, id, type и desc .

Значение идентификатора должно быть уникальным, поскольку позднее оно используется для получения сохраненных значений. Здесь идентификатор опции — это aa_select_pages_opt .

Добавление опций выбора страниц в Titan

На снимке экрана показана опция select-pages отображаемая под названием « Выбор страниц» в админ-панели Neat Options . Также посмотрите на список записей. Это названия существующих страниц.

Теперь я получу сохраненные значения.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
<?php
// 1. Get the titan framework instance and save it to a variable
$titan = TitanFramework::getInstance( ‘neat’ );
// 2. Get the value via ID using getOption function
$aa_getpageid_val = $titan->getOption( ‘aa_select_pages_opt’ );
// 3. Get the value of the page title via get_post_field function
$aa_panel_getpage_title_val = get_post_field(‘post_title’, $aa_getpageid_val);
 
/**
 *
 * Printing saved values of Admin Panel
 *
 */
?>
 
<div>
    Title of selected page in an Admin Panel is: <?php echo $aa_panel_getpage_title_val;
</div>

Прежде всего, получите экземпляр через функцию getInstance() в строке # 3. Затем в строке № 5 я использую getOption() которая получает сохраненные значения, регистрируя идентификатор параметра aa_select_pages_opt качестве его параметра. Результат этой функции сохраняется в переменной $aa_panel_getpageid_val .

В строке № 7 есть get_post_field() которую можно использовать для получения данных из поля сообщения на основе идентификатора сообщения.

Переменная $aa_panel_getpageid_val предоставляет идентификатор выбранной страницы и параметр post_title и извлекает заголовок, который я затем сохранил в новой переменной $aa_panel_getpage_title_val .

Наконец, в строке № 19 я печатаю заголовок страницы в интерфейсе с помощью команды echo в div .

Предположим, я выбрал страницу « О нас » из списка и сохранил настройки.

Выбор страниц из вариантов выбора

Название этой страницы печатается на внешнем интерфейсе следующим образом:

Результат выбора опции страницы в интерфейсе

Теперь я собираюсь добавить эту опцию на вкладке администратора.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
<?php
   /**
    *
    * Create select-pages type option in an Admin Tab
    *
    */
   $aa_tab1->createOption( array(
 
           ‘id’ => ‘aa_select_pages_opt_in_tab’, // The ID which will be used to get the value of this option
           ‘type’ => ‘select-pages’, // Type of option we are creating
           ‘name’ => ‘Select Pages Option’, // Name of the option which will be displayed in the admin panel
           ‘desc’ => ‘This is our option’ // Description of the option which will be displayed in the admin panel
 
       ) );

На этот раз я добавляю select-pages внутри вкладки администратора $aa_tab1 . Его идентификатор — aa_select_pages_opt_in_tab . Остальные параметры одинаковы.

Добавление элемента Select-Page в интерфейс с вкладками

На изображении вы можете найти выпадающий список, содержащий страницы внутри вкладки 1 административной панели Neat Options 2 .

Давайте восстановим сохраненные значения параметров.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
<?php
// 1. Get the titan framework instance and save it to a variable
$titan = TitanFramework::getInstance( ‘neat’ );
// 2. Get the value via ID using getOption function
$aa_tab_getpageid_val = $titan->getOption( ‘aa_select_pages_opt_in_tab’ );
// 3. Get the value of the page title via get_post_field function
$aa_tab_getpage_title_val = get_post_field(‘post_title’, $aa_tab_getpageid_val);
 
/**
 *
 * Printing saved values of Admin Tab
 *
 */
?>
 
<div>
    Title of selected page in an Admin Tab is: <?php echo $aa_tab_getpage_title_val;
</div>

Значения вкладки администратора можно получить, выполнив те же действия:

  • Получите уникальный экземпляр в строке # 3.
  • Зарегистрируйте идентификатор опции aa_select_pages_opt_in_tab в функции getOption() (строка № 5).
  • Сохраните результаты в переменной $aa_tab_getpageid_val .
  • Получить заголовок выбранной страницы с помощью функции get_post_field() в строке # 7.
  • Наконец, напечатайте заголовок страницы во внешнем интерфейсе с помощью команды echo в строке # 17.

На этот раз я выбрал страницу « Контакт », и ее заголовок во внешнем интерфейсе выглядит так:

Значения параметров в интерфейсе

Давайте создадим select-pages типа select-pages внутри метабокса.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
<?php
   /**
    *
    * Create select-pages type option in a Metabox
    *
    */
   $aa_metbox->createOption( array(
 
           ‘id’ => ‘aa_select_pages_opt_in_metabox’, // The ID which will be used to get the value of this option
           ‘type’ => ‘select-pages’, // Type of option we are creating
           ‘name’ => ‘Select Pages Option’, // Name of the option which will be displayed
           ‘desc’ => ‘This is our option’ // Description of the option which will be displayed
 
       ) );

Я создал select-pages типа select-pages с идентификатором aa_select_pages_opt_in_metabox внутри metabox $aa_metbox .

Добавление страниц выбора в мета-поле

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

Используйте этот код, чтобы получить значения.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
<?php
// 1. Get the titan framework instance and save it to a variable
$titan = TitanFramework::getInstance( ‘neat’ );
// 2. Get the value via ID using getOption function
$aa_metabox_getpageid_val = $titan->getOption( ‘aa_select_pages_opt_in_metabox’, get_the_ID() );
// 3. Get the value of the page title via get_post_field function
$aa_metabox_getpage_title_val = get_post_field(‘post_title’, $aa_metabox_getpageid_val);
 
/**
 *
 * Printing saved values of Metabox
 *
 */
?>
 
<div>
    Title of selected page in a Metabox is: <?php echo $aa_metabox_getpage_title_val;
</div>

В этом коде я зарегистрировал дополнительный параметр внутри функции getOption() (строка № 5). Это get_the_ID() . Остальная часть кода почти такая же.

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

Значения параметров в интерфейсе

Наконец, я добавлю эту опцию в раздел настройщика.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
<?php
   /**
    *
    * Create select-pages type option in a Theme Customizer Section
    *
    */
   $aa_section1->createOption( array(
 
           ‘id’ => ‘aa_select_pages_opt_in_sec’, // The ID which will be used to get the value of this option
           ‘type’ => ‘select-pages’, // Type of option we are creating
           ‘name’ => ‘Select Pages Option’, // Name of the option which will be displayed
           ‘desc’ => ‘This is our option’ // Description of the option which will be displayed
 
       ) );

Я создал select-pages типа select-pages с идентификатором aa_select_pages_opt_in_sec внутри секции настройщика темы под названием $aa_section1 .

Добавление опций выбора страниц в настройщик

Давайте получим сохраненные значения.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
<?php
// 1. Get the titan framework instance and save it to a variable
$titan = TitanFramework::getInstance( ‘neat’ );
// 2. Get the value via ID using getOption function
$aa_sec_getpageid_val = $titan->getOption( ‘aa_select_pages_opt_in_sec’ );
// 3. Get the value of the page title via get_post_field function
$aa_sec_getpage_title_val = get_post_field(‘post_title’, $aa_sec_getpageid_val);
 
/**
 *
 * Printing saved values of Customizer Section
 *
 */
?>
 
<div>
    Title of selected page in a Customizer Section is: <?php echo $aa_sec_getpage_title_val;
</div>

Вот скриншот изменений, которые были просмотрены в режиме реального времени.

Предварительный просмотр значений в настройщике

Рассмотрим ситуацию, когда конечный пользователь должен выбрать категорию для публикуемых сообщений. Вам понадобится выпадающий вариант выбора с категориями WordPress, заполненными в нем как параметры. Titan Framework может помочь вам создать такую ​​опцию с опцией типа, называемой select-categories . Давайте посмотрим, как его использовать.

В Titan Framework параметр типа select-categories Categories создает раскрывающееся меню, содержащее все существующие категории сообщений. Эта опция поддерживает и другие таксономии.

Добавление параметров выбора категорий в Titan

Эта опция определяет список параметров:

  • name : указывает имя опции.
  • id : этот параметр назначает уникальное имя, которое получает сохраненные значения.
  • desc : добавлено краткое описание с названием опции.
  • default : (Необязательно) Этот параметр устанавливает идентификатор категории по умолчанию.
  • livepreview : (Необязательно) Каждый раз, когда вы добавляете select-categories Categories в раздел настройщика темы, этот параметр позволяет вам предварительно просмотреть внесенные вами изменения.
  • orderby : (Необязательно). Определяет, в каких категориях заказа отображаются. По умолчанию установлено name . Вы можете изменить это соответственно.
  • order : (Необязательно) Этот параметр перечисляет категории в порядке возрастания или убывания. По умолчанию установлено значение asc .
  • Таксономия : (необязательно). Это помогает отобразить тип таксономии, который вы хотите показать. Значением по умолчанию является category .
  • hide_empty : (Необязательно) Если для этого параметра установлено значение true , все такие категории и / или таксономии, у которых нет сообщений, не будут отображаться. Значением по умолчанию является false .
  • show_count : (необязательно). Этот параметр отображает количество сообщений в каждой категории, если установлено значение true . По умолчанию установлено значение false .

Последние два параметра, hide_empty и show_count , являются boolean , а остальные — string по типу.

Давайте перечислим контейнеры, в которые вы можете добавить эту опцию:

  • Панель администратора
  • Вкладки администратора
  • Metabox
  • Раздел настройки темы

Независимо от типа контейнера, опция select-categories Categories добавляется с помощью следующих шагов:

  • Сначала получите экземпляр через функцию getInstance() .
  • Затем добавьте параметр через createOption() .
  • Затем получите сохраненные значения параметров с помощью функции getOption() .

Давайте сначала создадим эту опцию внутри админ-панели.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
<?php
   /**
    *
    * Create select-categories type option in an Admin Panel
    *
    */
   $aa_panel->createOption( array(
 
       ‘id’ => ‘aa_select_categories_opt’, // The ID which will be used to get the value of this option
       ‘type’ => ‘select-categories’, // Type of option we are creating
       ‘name’ => ‘Select Categories Option’, // Name of the option which will be displayed in the admin panel
       ‘desc’ => ‘This is our option’ // Description of the option which will be displayed in the admin panel
       
   ) );

В строке № 8 createOption() добавляет select-categories типа select-categories $aa_panel в административную панель с именем $aa_panel . Я определил несколько параметров, таких как имя, тип, id и desc . Значение ID, которое всегда должно быть уникальным, равно aa_select_categories_opt в строке # 10.

Добавление выпадающего списка категорий на панель инструментов

На приведенном выше снимке экрана показана панель « Neat Options» , внутри которой находится раскрывающийся список, в котором отображаются все категории сообщений.

Теперь я получу сохраненные значения параметров.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
<?php
// 1. Get the titan framework instance and save it to a variable
$titan = TitanFramework::getInstance( ‘neat’ );
 
// 2. Get the value via ID using getOption function
$aa_panel_getcategoryid_val = $titan->getOption( ‘aa_select_categories_opt’ );
 
// 3. Get title of the selected category
$aa_panel_getcategory_title_val = get_cat_name( $aa_panel_getcategoryid_val);
 
/**
 *
 * Print Saved Values in an Admin Panel
 *
 */
?>
 
<div>
    Title of the selected category in an Admin Panel is: <?php echo $aa_panel_getcategory_title_val;
</div>

В строке № 3 я использую функцию getInstance() , которая принимает уникальный параметр, предпочтительно имя вашей темы. Затем я использую getOption() в строке № 6, чтобы получить сохраненное значение, зарегистрировав идентификатор опции, то есть aa_select_categories_opt . Результат сохраняется в переменной $aa_panel_getcategoryid_val . До этого момента идентификатор выбранной категории помещается внутри этой переменной.

Допустим, я хочу отобразить заголовок своей категории на внешнем интерфейсе. Чтобы добиться этого, я собираюсь использовать get_cat_name() . Посмотрите на строку № 9, которая получает заголовок категории из переменной $aa_panel_getcategoryid_val .

Я сохранил заголовок в переменной $aa_panel_getcategory_title_val а затем повторил его.

Предположим, я выбрал категорию « Портфели » из списка и сохранил настройки.

Выбор варианта из выпадающего списка Select-Categories

Таким образом, в соответствии с кодом « Название выбранной категории на панели администратора: Портфолио » должно быть напечатано на внешнем интерфейсе.

Просмотр результатов выбранной категории в интерфейсе

Далее я добавлю это на вкладке администратора.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
<?php
   /**
    *
    * Create select-categories type option in an Admin Tab
    *
    */
   $aa_tab1->createOption( array(
 
       ‘id’ => ‘aa_select_categories_opt_in_tab’, // The ID which will be used to get the value of this option
       ‘type’ => ‘select-categories’, // Type of option we are creating
       ‘name’ => ‘Select Categories Option’, // Name of the option which will be displayed in the admin panel
       ‘desc’ => ‘This is our option’, // Description of the option which will be displayed in the admin panel
       ‘order’ => ‘desc’, // Display order of the categories
       ‘show_count’ => ‘true’ // Display no.
 
   ) );

Здесь я добавляю select-categories типа select-categories $aa_tab1 во вкладку администратора $aa_tab1 . Его уникальный идентификатор — aa_select_categories_opt_in_tab . Посмотрите на список параметров. Вы найдете несколько новых дополнений, например, параметры order и show_count . Их функции были обсуждены ранее.

Добавление типа select-Categories в интерфейс с вкладками

На скриншоте вы можете найти эту опцию с именем Select Category Option на вкладке 1 панели Neat Options 2 . Обратите внимание, что количество сообщений в каждой категории также отображается благодаря параметру show_count . Порядок отображения категорий также отличается от предыдущего.

Давайте восстановим сохраненные значения.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
<?php
// 1. Get the titan framework instance and save it to a variable
$titan = TitanFramework::getInstance( ‘neat’ );
 
// 2. Get the value via ID using getOption function
$aa_tab_getcategoryid_val = $titan->getOption( ‘aa_select_categories_in_tab’ );
 
// 3. Get title of the selected category
$aa_tab_getcategory_title_val = get_cat_name( $aa_tab_getcategoryid_val);
  
/**
 *
 * Print Saved Values in an Admin Tab
 *
 */
?>
 
<div>
    Title of the selected category in an Admin Tab is: <?php echo $aa_tab_getcategory_title_val;
</div>

Этот код очень похож; вот краткое изложение шагов:

  • Получить экземпляр в строке № 3.
  • Используйте getOption()функцию в строке № 6, чтобы получить сохраненные значения через идентификатор.
  • Получить название выбранной категории с помощью get_cat_name()функции в строке № 9.
  • Напечатайте заголовок категории во внешнем интерфейсе с помощью echoкоманды в строке # 22.

Я выбираю « Биографии » в качестве демонстрационного значения. Внешний вид выглядит так:

Просмотр типа выбранных категорий из интерфейса с вкладками

Теперь я добавлю select-categoriesопцию типа в метабокс.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
<?php
   /**
    *
    * Create select-categories type option in a Metabox
    *
    */
   $aa_metbox->createOption( array(
 
       'id' => 'aa_select_categories_opt_in_metabox', // The ID which will be used to get the value of this option
       'type' => 'select-categories', // Type of option we are creating
       'name' => 'Select Categories Option', // Name of the option which will be displayed
       ‘desc’ => ‘This is our option’ // Description of the option which will be displayed
 
   ) );

Я создал select-categoriesопцию типа внутри метабокса $aa_metboxс идентификатором aa_select_categories_opt_in_metabox.

Добавление типа выбора категории в мета-поле

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

Используйте следующий код.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
<?php
// 1. Get the titan framework instance and save it to a variable
$titan = TitanFramework::getInstance( ‘neat’ );
 
// 2. Get the value via ID using getOption function
$aa_metabox_getcategoryid_val = $titan->getOption( 'aa_select_categories_in_metabox', get_the_ID() );
 
// 3. Get title of the selected category
$aa_metabox_getcategory_title_val = get_cat_name( $aa_metabox_getcategoryid_val);
 
/**
 *
 * Print Saved Values in a Metabox
 *
 */
?>
 
<div>
    ?>
</div>

В строке № 6 я использовал get_the_ID()функцию в качестве параметра внутри getOption()функции. Этот дополнительный параметр предназначен для извлечения сохраненных значений через определенную страницу или идентификатор сообщения. Остальной код такой же.

На этот раз я выбираю « Истории », и результат выглядит так:

Просмотр результатов выбранных категорий из мета-поля

Наконец, я создам эту опцию в разделе настройщика темы.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
<?php
   /**
    *
    * Create select-categories type option in a Customizer Section
    *
    */
   $aa_section1->createOption( array(
 
       'id' => 'aa_select_categories_opt_in_sec', // The ID which will be used to get the value of this option
       'type' => 'select-categories', // Type of option we are creating
       'name' => 'Select Categories Option', // Name of the option which will be displayed
       ‘desc’ => ‘This is our option’ // Description of the option which will be displayed
 
   ) );

Я добавляю эту опцию в раздел настройщика темы $aa_section1с идентификатором aa_select_categories_opt_in_sec.

Добавление выбранных категорий в настройщик

На этом изображении есть раздел   настройщика « Мой раздел », содержащий раскрывающийся список категорий внутри настройщика.

Используйте следующий код для получения значений:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
<?php
// 1. Get the titan framework instance and save it to a variable
$titan = TitanFramework::getInstance( ‘neat’ );
 
// 2. Get the value via ID using getOption function
$aa_sec_getcategoryid_val = $titan->getOption( 'aa_select_categories_in_sec' );
 
// 3. Get title of the selected category
$aa_sec_getcategory_title_val = get_cat_name( $aa_sec_getcategoryid_val);
 
/**
 *
 * Print Saved Values in a Theme Customizer Section
 *
 */
?>
 
<div>
    ?>
</div>

Этот код почти такой же, как и выше. Только ID и имена переменных различны.

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

Просмотр результатов выбранных категорий в интерфейсе

К настоящему времени мы обсудили все типы опций, которые связаны с selectопцией в Titan Framework.

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

Дайте мне знать, если у вас есть креативный пользовательский вариант для этой опции. Вы можете связаться со мной в Twitter или оставить комментарии в поле ниже.