Когда в последний раз вы были в восторге от создания панели администрирования для своей темы WordPress? Скорее всего, вы все еще строите это вручную и тоже тратите на это много времени. Цель этой статьи — познакомить вас с OptionTree, сборкой пользовательского интерфейса параметров темы для WordPress.
Какой вариант дерева позволит вам сделать
OptionTree позволит вам создать мощную страницу администрирования тем, содержащую все виды функций, от простого текстового поля до сборщиков дат и полей загрузки файлов. Также можно создавать повторяемые поля, вкладки, настраиваемые галереи, редактор CSS и многое другое. Подумайте о создании целых параметров администрирования и пользовательских метабоксов для пользовательских типов сообщений и таксономий в течение часа Это то, чем занимается OptionTree, он предоставляет в ваше распоряжение множество предварительно настроенных типов опций, которые вы можете использовать в своих Темах за минуты, а не часы.
Установка OptionTree на ваш сайт
Есть два возможных режима установки при использовании OptionTree. Первый вариант — режим плагинов , который будет традиционным способом, которым WordPress хотел бы, чтобы вы использовали плагины. Это означает, что OptionTree устанавливается и активируется через страницу плагинов и обновляется через каталог плагинов WordPress. Второй вариант — Theme Mode , здесь вы включаете OptionTree где-то в каталоге вашей темы и используете гибкость и контроль, которыми вы будете обладать в процессе обновления ваших тем.
Ниже я расскажу, как настроить OptionTree для каждого режима установки.
Плагин режим
- Установите OptionTree и активируйте плагин. Для получения справки об этом обратитесь к странице « Управление плагинами» в Кодексе WordPress.
- Создайте параметры темы.
- Theme Options UI Builder ( не рекомендуется для премиум тем ).
- Просто создайте свои параметры темы с помощью Theme Options UI Builder — простой в использовании интерфейс перетаскивания.
- Ручная сборка.
- Создайте каталог включений в вашей теме.
- Создайте файл theme-options.php в новом каталоге incclude.
- Загрузите файл theme-options.php через файл functions.php вашей темы.
- Theme Options UI Builder ( не рекомендуется для премиум тем ).
Тематический режим
В двух режимах установки используются одни и те же шаги, но режим тем имеет 3 ключевых различия.
- OptionTree входит в каталог вашей темы.
- Вы должны отфильтровать ot_theme_mode, чтобы он возвращал true.
- Вы должны деактивировать и / или удалить версию плагина OptionTree.
Установка
- Загрузите последнюю версию OptionTree и разархивируйте каталог .zip.
- Поместите каталог дерева опций в корень вашей темы. Например, путь к серверу будет / wp-content / themes / your-theme / option-tree /.
- Добавьте следующий код в самое начало вашего functions.php, чтобы он выполнялся раньше всего.
/**
* Activates Theme Mode
*/
add_filter( 'ot_theme_mode', '__return_true' );
/**
* Loads OptionTree
*/
require( trailingslashit( get_template_directory() ) . 'option-tree/ot-loader.php' );
Загрузка параметров вашей темы в вашу тему
Загрузите файл theme-options.php, добавив следующий код в файл functions.php
/**
* Loads Theme Options
*/
require( trailingslashit( get_template_directory() ) . 'inc/theme-options.php' );
интеграция
Интеграция с вашими опциями темы в вашу тему осуществляется через функцию ot_get_option (). Если значение не было сохранено, возвращается $ default или false.
<?php echo ot_get_option( $option, $default ); ?>
Изучение типов опций OptionTree
Давайте рассмотрим некоторые типы опций OptionTree, которые поставляются по умолчанию с OptionTree.
Текст
Тип параметра Text используется для сохранения в основном строковых значений. Например, любой необязательный или обязательный текст, который имеет достаточно короткую длину символа
// OptionTree Text Option Type
// Example code when being used as a Metabox or
// Exported OptionTree file to be used in Theme Mode
array(
'id' => 'spyr_demo_text',
'label' => __( 'Text', 'text-domain' ),
'desc' => __( 'Your description', 'text-domain' ),
'type' => 'text',
'section' => 'your_section',
)
// Get the value saved on Theme Options Page
$spyr_demo_text = ot_get_option( 'spyr_demo_text' );
// Get the value saved for a Page, Post or CPT ( Within the loop )
$spyr_demo_text = get_post_meta( $post->ID, 'spyr_demo_text', true );
// Wrap the value in a P tag and echo it
echo wpautop( $spyr_demo_text );
Textarea
Тип параметра Textarea представляет собой большое строковое значение, используемое для пользовательского кода или текста в теме, и имеет редактор WYSIWYG, который можно фильтровать для изменения способа его отображения. Например, вы можете фильтровать wpautop , media_buttons , tinymce и quicktags .
// OptionTree Textarea Option Type
// Example code when being used as a Metabox or
// Exported OptionTree file to be used in Theme Mode
array(
'id' => 'spyr_demo_textarea',
'label' => __( 'Textarea', 'text-domain' ),
'desc' => __( 'Your description', 'text-domain' ),
'type' => 'textarea',
'section' => 'your_section',
'rows' => '5',
)
// Get the value saved on Theme Options Page
$spyr_demo_textarea = ot_get_option( 'spyr_demo_textarea' );
// Get the value saved for a Page, Post or CPT ( Within the loop )
$spyr_demo_textarea = get_post_meta( $post->ID, 'spyr_demo_textarea', true );
// Whether to use wpautop for adding in paragraphs
// Defaults to True
add_filter( 'ot_wpautop' , 'spyr_textarea_ot_wpautop', 10, 1 );
function spyr_textarea_ot_wpautop( $field_id ) {
if( 'spyr_demo_textarea' == $field_id ) {
return false;
}
}
// Remove the Media upload buttons for a particular field
// Defaults to True
add_filter( 'ot_media_buttons' , 'spyr_textarea_ot_media_buttons', 10, 1 );
function spyr_textarea_ot_media_buttons( $field_id ) {
if( 'spyr_demo_textarea' == $field_id ) {
return false;
}
}
// Disable the Visual and Text views for a particular field
// Defaults to True
add_filter( 'ot_tinymce' , 'spyr_textarea_ot_tinymce', 10, 1 );
function spyr_textarea_ot_tinymce( $field_id ) {
if( 'spyr_demo_textarea' == $field_id ) {
return false;
}
}
Текстовая Простота
Тип опции Textarea Simple — это большое строковое значение, используемое для пользовательского кода или текста в теме. В Textarea Simple нет редактора WYSIWYG, вы можете использовать его для хранения своего кода Google Analytics и быть уверенным, что он будет отображаться правильно, без добавления тегов p.
// OptionTree Textarea Simple Option Type
// Example code when being used as a Metabox or
// Exported OptionTree file to be used in Theme Mode
array(
'id' => 'spyr_demo_textarea_simple',
'label' => __( 'Textarea Simple', 'text-domain' ),
'desc' => __( 'Your description', 'text-domain' ),
'type' => 'textarea-simple',
'section' => 'your_section',
'rows' => '5',
),
// Get the value saved on Theme Options Page
$spyr_demo_textarea_simple = ot_get_option( 'spyr_demo_textarea_simple' );
// Get the value saved for a Page, Post or CPT ( Within the loop )
$spyr_demo_textarea_simple = get_post_meta( $post->ID, 'spyr_demo_textarea_simple', true );
// Whether to use wpautop for adding in paragraphs
// Defaults to False in Textarea Simple
add_filter( 'ot_wpautop' , 'spyr_textarea_simple_ot_wpautop', 10, 1 );
function spyr_textarea_simple_ot_wpautop( $field_id ) {
if( 'spyr_demo_textarea_simple' == $field_id ) {
return true;
}
}
Текстовый блок с названием
Тип параметра «Текстовый блок с заголовком» используется только на странице «Параметры темы». Это позволит вам создавать и отображать HTML, и имеет заголовок над текстовым блоком. Затем вы можете использовать текстовый блок с заголовком, чтобы добавить более подробный набор инструкций о том, как параметры используются в вашей теме. Вы никогда не будете использовать это в своих файлах шаблонов тем, поскольку это не сохраняет значение.
Радио
Тип параметра «Радио» отображает группу вариантов. Он позволяет пользователю выбрать один и вернет это значение в виде строки для использования в пользовательской функции или цикле.
// OptionTree Radio Option Type
// Example code when being used as a Metabox or
// Exported OptionTree file to be used in Theme Mode
array(
'id' => 'spyr_demo_radio',
'label' => __( 'Radio', 'text-domain' ),
'desc' => __( 'Your description', 'text-domain' ),
'type' => 'radio',
'section' => 'your_section',
'choices' => array(
array(
'value' => 'yes',
'label' => __( 'Yes', 'text-domain' ),
),
array(
'value' => 'no',
'label' => __( 'No', 'text-domain' ),
),
array(
'value' => 'maybe',
'label' => __( 'Maybe', 'text-domain' ),
)
)
)
// Get the value saved on Theme Options Page
$spyr_demo_radio = ot_get_option( 'spyr_demo_radio' );
// Get the value saved for a Page, Post or CPT ( Within the loop )
$spyr_demo_radio = get_post_meta( $post->ID, 'spyr_demo_radio', true );
флажок
Тип опции Checkbox отображает группу вариантов. Он позволяет пользователю проверять несколько вариантов и возвращает это значение в виде массива для использования в пользовательской функции или цикле.
// OptionTree Checkbox Option Type
// Example code when being used as a Metabox or
// Exported OptionTree file to be used in Theme Mode
array(
'id' => 'spyr_demo_checkbox',
'label' => __( 'Checkbox', 'text-domain' ),
'desc' => __( 'Your description', 'text-domain' ),
'type' => 'checkbox',
'section' => 'your_section',
'choices' => array(
array(
'value' => 'no',
'label' => __( 'No', 'text-domain' ),
),
array(
'value' => 'Yes',
'label' => __( 'Yes', 'text-domain' ),
)
)
)
// Get the value saved on Theme Options Page
// This will always return an array
$spyr_demo_checkbox = ot_get_option( 'spyr_demo_checkbox' );
// Get the value saved for a Page, Post or CPT ( Within the loop )
// This will always return an array
$spyr_demo_checkbox = get_post_meta( $post->ID, 'spyr_demo_checkbox', true );
Почтовый флажок
Тип опции Post Checkbox отображает список идентификаторов записей. Это позволяет пользователю проверять несколько идентификаторов сообщений для использования в пользовательских функциях или циклах.
// OptionTree Post Checkbox Option Type
// Example code when being used as a Metabox or
// Exported OptionTree file to be used in Theme Mode
array(
'id' => 'spyr_demo_post_checkbox',
'label' => __( 'Post Checkbox', 'text-domain' ),
'desc' => __( 'Your description', 'text-domain' ),
'type' => 'post-checkbox',
'section' => 'your_section',
),
// Get the value saved on Theme Options Page
// This will always return an array
// Only the Post IDs will be returned
$spyr_demo_post_checkbox = ot_get_option( 'spyr_demo_post_checkbox' );
// Get the value saved for a Page, Post or CPT ( Within the loop )
// This will always return an array
// Only the Post IDs will be returned
$spyr_demo_post_checkbox = get_post_meta( $post->ID, 'spyr_demo_post_checkbox', true );
// Display only the latest 3 posts from a specific category (14)
add_filter( 'ot_type_post_checkbox_query', 'spyr_post_checkbox_custom_query', 10, 2 );
function spyr_post_checkbox_limit_posts( $query, $field_id ) {
if( 'spyr_demo_post_checkbox' == $field_id ) {
return array_merge( $query, array( 'posts_per_page' => 3, 'cat' => 14 ) );
}
}
Флажок страницы
Тип параметра «Флажок страницы» отображает список идентификаторов страниц. Это позволяет пользователю проверять несколько идентификаторов страниц для использования в пользовательской функции или цикле.
// OptionTree Page Checkbox Option Type
// Example code when being used as a Metabox or
// Exported OptionTree file to be used in Theme Mode
array(
'id' => 'spyr_demo_page_checkbox',
'label' => __( 'Page Checkbox', 'text-domain' ),
'desc' => __( 'Your description', 'text-domain' ),
'type' => 'page-checkbox',
'section' => 'your_section',
),
// Get the value saved on Theme Options Page
// This will always return an array
// Only the Page IDs will be returned
$spyr_demo_page_checkbox = ot_get_option( 'spyr_demo_page_checkbox' );
// Get the value saved for a Page, Post or CPT ( Within the loop )
// This will always return an array
// Only the Page IDs will be returned
$spyr_demo_page_checkbox = get_post_meta( $post->ID, 'spyr_demo_page_checkbox', true );
// Display only top level pages
add_filter( 'ot_type_page_checkbox_query', 'spyr_page_checkbox_top_level_only', 10, 2 );
function spyr_page_checkbox_top_level_only( $query, $field_id ) {
if( 'spyr_demo_page_checkbox' == $field_id ) {
return array_merge( $query, array( 'post_parent' => 0 ) );
}
}
// Display only sub-pages from a parent page
add_filter( 'ot_type_page_checkbox_query', 'spyr_page_checkbox_sub_pages', 10, 2 );
function spyr_page_checkbox_sub_pages( $query, $field_id ) {
if( 'spyr_demo_page_checkbox' == $field_id ) {
return array_merge( $query, array( 'post_parent' => 7 ) );
}
}
Флажок «Пользовательский тип сообщения»
Тип опции Выбор типа пользовательской записи отображает список идентификаторов из любого доступного типа записи WordPress или пользовательского типа записи. Это позволяет пользователю проверять несколько идентификаторов сообщений для использования в пользовательских функциях или циклах. Требуется хотя бы один действительный post_type в поле post_type .
// OptionTree Custom Post Type Checkbox Option Type
// Example code when being used as a Metabox or
// Exported OptionTree file to be used in Theme Mode
array(
'id' => 'spyr_demo_custom_post_type_checkbox',
'label' => __( 'Custom Post Type Checkbox', 'text-domain' ),
'desc' => __( 'Your description', 'text-domain' ),
'type' => 'custom-post-type-checkbox',
'section' => 'your_section',
'post_type' => 'movie',
)
// Get the value saved on Theme Options Page
// This will always return an array
// Only the Page IDs will be returned
$spyr_demo_page_checkbox = ot_get_option( 'spyr_demo_custom_post_type_checkbox' );
// Get the value saved for a Page, Post or CPT ( Within the loop )
// This will always return an array
// Only the Page IDs will be returned
$spyr_demo_page_checkbox = get_post_meta( $post->ID, 'spyr_demo_custom_post_type_checkbox', true );
// Add a second CPT to the list
add_filter( 'ot_type_custom_post_type_checkbox_query', 'spyr_cpt_checkbox_include_trailers', 10, 2 );
function spyr_cpt_checkbox_include_trailers( $query, $field_id ) {
if( 'spyr_demo_custom_post_type_checkbox' == $field_id ) {
return array_merge( $query, array( 'post_type' => 'movie_trailers' ) );
}
}
Флажок категории
Тип параметра «Флажок категории» отображает список идентификаторов категорий. Это позволяет пользователю проверять несколько идентификаторов категорий и возвращает это значение в виде массива для использования в пользовательской функции или цикле.
// OptionTree Category Checkbox Option Type
// Example code when being used as a Metabox or
// Exported OptionTree file to be used in Theme Mode
array(
'id' => 'spyr_demo_category_checkbox',
'label' => __( 'Category Checkbox', 'text-domain' ),
'desc' => __( 'Your description', 'text-domain' ),
'type' => 'category-checkbox',
'section' => 'your_section',
),
// Get the value saved on Theme Options Page
// This will always return an array
// Only the Category IDs will be returned
$spyr_demo_category_checkbox = ot_get_option( 'spyr_demo_category_checkbox' );
// Get the value saved for a Page, Post or CPT ( Within the loop )
// This will always return an array
// Only the Category IDs will be returned
$spyr_demo_category_checkbox = get_post_meta( $post->ID, 'spyr_demo_category_checkbox', true );
// Hide categories without a post
add_filter( 'ot_type_category_checkbox_query', 'spyr_ot_type_category_checkbox_hide_empty', 10, 2 );
function spyr_ot_type_category_checkbox_hide_empty( $query, $field_id ) {
if( 'spyr_demo_category_checkbox' == $field_id ) {
return array_merge( $query, array( 'hide_empty' => true ) );
}
}
Флажок
Тип опции Tag Checkbox отображает список идентификаторов тегов. Он позволяет пользователю проверять несколько идентификаторов тегов и возвращает это значение в виде массива для использования в пользовательской функции или цикле.
// OptionTree Tag Checkbox Option Type
// Example code when being used as a Metabox or
// Exported OptionTree file to be used in Theme Mode
array(
'id' => 'spyr_demo_tag_checkbox',
'label' => __( 'Tag Checkbox', 'text-domain' ),
'desc' => __( 'Your description', 'text-domain' ),
'type' => 'tag-checkbox',
'section' => 'your_section',
)
// Get the value saved on Theme Options Page
// This will always return an array
// Only the Category IDs will be returned
$spyr_demo_tag_checkbox = ot_get_option( 'spyr_demo_tag_checkbox' );
// Get the value saved for a Page, Post or CPT ( Within the loop )
// This will always return an array
// Only the Category IDs will be returned
$spyr_demo_tag_checkbox = get_post_meta( $post->ID, 'spyr_demo_tag_checkbox', true );
Флажок таксономии
Тип опции флажка Таксономия отображает список идентификаторов таксономии. Он позволяет пользователю проверять несколько идентификаторов таксономии и возвращает это значение в виде массива для использования в пользовательской функции или цикле.
// OptionTree Taxonomy Checkbox Option Type
// Example code when being used as a Metabox or
// Exported OptionTree file to be used in Theme Mode
array(
'id' => 'spyr_demo_taxonomy_checkbox',
'label' => __( 'Taxonomy Checkbox', 'text-domain' ),
'desc' => __( 'Your description', 'text-domain' ),
'type' => 'taxonomy-checkbox',
'section' => 'your_section',
'taxonomy' => 'category,post_tag', // Comma separated list
)
// Get the value saved on Theme Options Page
// This will always return an array
// Only the Category IDs will be returned
$spyr_demo_taxonomy_checkbox = ot_get_option( 'spyr_demo_taxonomy_checkbox' );
// Get the value saved for a Page, Post or CPT ( Within the loop )
// This will always return an array
// Only the Category IDs will be returned
$spyr_demo_taxonomy_checkbox = get_post_meta( $post->ID, 'spyr_demo_taxonomy_checkbox', true );
// Hide categories and tags not having a post
add_filter( 'ot_type_taxonomy_checkbox_query', 'spyr_ot_type_taxonomy_checkbox_hide_empty', 10, 2 );
function spyr_ot_type_taxonomy_checkbox_hide_empty( $query, $field_id ) {
if( 'demo_taxonomy_checkbox' == $field_id ) {
return array_merge( $query, array( 'hide_empty' => false ) );
}
}
// Override taxonomy via code
add_filter( 'ot_type_taxonomy_checkbox_query', 'spyr_ot_type_taxonomy_checkbox_add_genre', 10, 2 );
function spyr_ot_type_taxonomy_checkbox_add_genre( $query, $field_id ) {
if( 'demo_taxonomy_checkbox' == $field_id ) {
return array_merge( $query, array( 'taxonomy' => 'genre' ) );
}
}
Выбрать
Тип параметра «Выбор» используется для отображения списка всего, что вы хотите, из списка выбора.
// OptionTree Select Option Type
// Example code when being used as a Metabox or
// Exported OptionTree file to be used in Theme Mode
array(
'id' => 'spyr_demo_select',
'label' => __( 'Select', 'text-domain' ),
'desc' => __( 'Your description', 'text-domain' ),
'type' => 'select',
'section' => 'your_section',
'choices' => array(
array(
'value' => 'yes',
'label' => __( 'Yes', 'text-domain' ),
),
array(
'value' => 'no',
'label' => __( 'No', 'text-domain' ),
),
array(
'value' => 'maybe',
'label' => __( 'Maybe', 'text-domain' ),
)
)
)
// Get the value saved on Theme Options Page
$spyr_demo_select = ot_get_option( 'spyr_demo_select' );
// Get the value saved for a Page, Post or CPT ( Within the loop )
$spyr_demo_select = get_post_meta( $post->ID, 'spyr_demo_select', true );
Выбор сообщения
Тип параметра Выбор сообщения отображает список идентификаторов сообщений. Он вернет один идентификатор сообщения для использования в пользовательской функции или цикле.
// OptionTree Post Select Option Type
// Example code when being used as a Metabox or
// Exported OptionTree file to be used in Theme Mode
array(
'id' => 'spyr_demo_post_select',
'label' => __( 'Post Select', 'text-domain' ),
'desc' => __( 'Your description', 'text-domain' ),
'type' => 'post-select',
'section' => 'option_types',
)
// Get the ID value saved on Theme Options Page
$spyr_demo_post_select = ot_get_option( 'spyr_demo_post_select' );
// Get the ID value saved for a Page, Post or CPT ( Within the loop )
$spyr_demo_post_select = get_post_meta( $post->ID, 'spyr_demo_post_select', true );
// Get the Post's title
$title = get_the_title( $spyr_demo_post_select );
// Get the permalink
$link = get_permalink( $spyr_demo_post_select );
// Limit the number of posts displayed on the drop down for selection
add_filter( 'ot_type_post_select_query', 'spyr_ot_type_post_select_query_set_limit', 10, 2 );
function spyr_ot_type_post_select_query_set_limit( $query, $field_id ) {
if( 'spyr_demo_post_select' == $field_id ) {
return array_merge( $query, array( 'posts_per_page' => 10 ) );
}
}
// Populate the drop down select from posts belonging to this category (14)
add_filter( 'ot_type_post_select_query', 'spyr_ot_type_post_select_query_set_cat', 10, 2 );
function spyr_ot_type_post_select_query_set_cat( $query, $field_id ) {
if( 'spyr_demo_post_select' == $field_id ) {
return array_merge( $query, array( 'cat' => 14 ) );
}
}
Выбор страницы
Тип параметра «Выбор страницы» отображает список идентификаторов страниц. Он вернет один идентификатор страницы для использования в пользовательской функции или цикле.
// OptionTree Page Select Option Type
// Example code when being used as a Metabox or
// Exported OptionTree file to be used in Theme Mode
array(
'id' => 'spyr_demo_page_select',
'label' => __( 'Page Select', 'text-domain' ),
'desc' => __( 'Your description', 'text-domain' ),
'type' => 'page-select',
'section' => 'option_types',
)
// Get the ID value saved on Theme Options Page
$spyr_demo_page_select = ot_get_option( 'spyr_demo_page_select' );
// Get the ID value saved for a Page, Post or CPT ( Within the loop )
$spyr_demo_page_select = get_post_meta( $post->ID, 'spyr_demo_page_select', true );
// Get the Post's title
$title = get_the_title( $spyr_demo_page_select );
// Get the permalink
$link = get_permalink( $spyr_demo_page_select );
// Populate the drop down select with subpages from a pre-defined Parent page (7)
add_filter( 'ot_type_page_select_query', 'spyr_ot_type_page_select_query_set_parent', 10, 2 );
function ot_type_page_select_query_set_parent( $query, $field_id ) {
if( 'spyr_demo_page_select' == $field_id ) {
return array_merge( $query, array( 'post_parent' => 7 ) );
}
}
Выбор типа сообщения
Тип опции Выбор типа пользовательской записи отображает список идентификаторов из любого доступного типа записи WordPress или пользовательского типа записи. Он вернет один идентификатор сообщения для использования в пользовательской функции или цикле. Требуется хотя бы один действительный post_type в поле post_type .
// OptionTree Custom Post Type Select Option Type
// Example code when being used as a Metabox or
// Exported OptionTree file to be used in Theme Mode
array(
'id' => 'spyr_demo_custom_post_type_select',
'label' => __( 'Custom Post Type Select', 'text-domain' ),
'desc' => __( 'Your description', 'text-domain' ),
'type' => 'custom-post-type-select',
'section' => 'your_section',
'post_type' => 'movie',
)
// Get the ID value saved on Theme Options Page
$spyr_demo_custom_post_type_select = ot_get_option( 'spyr_demo_custom_post_type_select' );
// Get the ID value saved for a Page, Post or CPT ( Within the loop )
$spyr_demo_custom_post_type_select = get_post_meta( $post->ID, 'spyr_demo_custom_post_type_select', true );
// Get the Post's title
$title = get_the_title( $spyr_demo_custom_post_type_select );
// Get the permalink
$link = get_permalink( $spyr_demo_custom_post_type_select );
// Override Custom Post Type via code
add_filter( 'ot_type_custom_post_type_select_query', 'spyr_ot_type_cpt_select_query_set_cpt', 10, 2 );
function spyr_ot_type_cpt_select_query_set_cpt( $query, $field_id ) {
if( 'spyr_demo_custom_post_type_select' == $field_id ) {
return array_merge( $query, array( 'post_type' => 'movie' ) );
}
}
Выбор категории
Тип параметра «Выбор категории» отображает список идентификаторов категорий. Это позволяет пользователю выбрать только один идентификатор категории и вернет это значение для использования в пользовательской функции или цикле.
// OptionTree Category Select Option Type
// Example code when being used as a Metabox or
// Exported OptionTree file to be used in Theme Mode
array(
'id' => 'spyr_demo_category_select',
'label' => __( 'Category Select', 'text-domain' ),
'desc' => __( 'Your description', 'text-domain' ),
'type' => 'category-select',
'section' => 'your_section',
)
// Get the ID value saved on Theme Options Page
$spyr_demo_category_select = ot_get_option( 'spyr_demo_category_select' );
// Get the ID value saved for a Page, Post or CPT ( Within the loop )
$spyr_demo_category_select = get_post_meta( $post->ID, 'spyr_demo_category_select', true );
// Get the Category name
$name = get_the_category_by_ID( $spyr_demo_category_select );
// Get the category description
$cat_desc = category_description( $spyr_demo_category_select );
// Get the Archive link for this category
$link = get_category_link( $spyr_demo_category_select );
// Hide categories with zero posts from the drop down list
add_filter( 'ot_type_category_select_query', 'spyr_ot_type_category_select_hide_cats', 10, 2 );
function spyr_ot_type_category_select_hide_cats( $query, $field_id ) {
if( 'demo_category_select' == $field_id ) {
return array_merge( $query, array( 'hide_empty' => true ) );
}
}
Tag Select
Тип опции Tag Select отображает список идентификаторов тегов. Он позволяет пользователю выбрать только один идентификатор тега и возвращает это значение для использования в пользовательской функции или цикле.
// OptionTree Tag Select Option Type
// Example code when being used as a Metabox or
// Exported OptionTree file to be used in Theme Mode
array(
'id' => 'spyr_demo_tag_select',
'label' => __( 'Tag Select', 'text-domain' ),
'desc' => __( 'Your description', 'text-domain' ),
'type' => 'tag-select',
'section' => 'your_section',
)
// Get the ID value saved on Theme Options Page
$spyr_demo_tag_select = ot_get_option( 'spyr_demo_tag_select' );
// Get the ID value saved for a Page, Post or CPT ( Within the loop )
$spyr_demo_tag_select = get_post_meta( $post->ID, 'spyr_demo_tag_select', true );
// Get the Tag's name
$tag = get_term_by( 'id', $spyr_demo_tag_select, 'post_tag', OBJECT, '' );
$name = $tag->name;
// Get the Archive link for this tag
$link = get_tag_link( $spyr_demo_tag_select );
Выбор таксономии
Тип параметра Выбор таксономии отображает список идентификаторов таксономии. Это позволяет пользователю выбрать только один идентификатор таксономии и вернет это значение для использования в пользовательской функции или цикле.
// OptionTree Taxonomy Select Option Type
// Example code when being used as a Metabox or
// Exported OptionTree file to be used in Theme Mode
array(
'id' => 'spyr_demo_taxonomy_select',
'label' => __( 'Taxonomy Select', 'text-domain' ),
'desc' => __( 'Your description', 'text-domain' ),
'type' => 'taxonomy-select',
'section' => 'your_section',
'taxonomy' => 'category,post_tag', // Defaults to Categories and Tags
)
// Get the ID value saved on Theme Options Page
$spyr_demo_taxonomy_select = ot_get_option( 'spyr_demo_taxonomy_select' );
// Get the ID value saved for a Page, Post or CPT ( Within the loop )
$spyr_demo_taxonomy_select = get_post_meta( $post->ID, 'spyr_demo_taxonomy_select', true );
// Override Taxonomy via code
add_filter( 'ot_type_taxonomy_select_query', 'spyr_ot_type_taxonomy_select_set_tax', 10, 2 );
function spyr_ot_type_taxonomy_select_set_tax( $query, $field_id ) {
if( 'spyr_demo_taxonomy_select' == $field_id ) {
return array_merge( $query, array( 'taxonomy' => array( 'genre' ) ) );
}
}
Выбор боковой панели
Этот тип опции позволяет пользователям выбирать зарегистрированную боковую панель WordPress для использования в определенной области. Используя два предоставленных фильтра: ot_recognized_sidebars и ot_recognized_sidebars _ {$ field_id}, мы можем выбрать, какие боковые панели доступны в определенной области содержимого.
Например, если мы создаем тему WordPress, которая предоставляет возможность изменять боковую панель блога, и мы не хотим, чтобы боковые панели нижнего колонтитула были доступны в этой области, мы можем отменить эти боковые панели вручную или с помощью регулярного выражения, если у нас есть общее имя, например, нижний колонтитул — $ i .
// OptionTree Sidebar Select Option Type
// Example code when being used as a Metabox or
// Exported OptionTree file to be used in Theme Mode
// This option type will read all of your available
// Sidebars on your theme, so there is very little work to do here
array(
'id' => 'spyr_demo_sidebar_select',
'label' => __( 'Sidebar Select', 'text-domain' ),
'desc' => __( 'Your description', 'text-domain' ),
'type' => 'sidebar-select',
'section' => 'your_section',
)
// Get the ID value saved on Theme Options Page
$spyr_demo_sidebar_select = ot_get_option( 'spyr_demo_sidebar_select' );
// Get the ID value saved for a Page, Post or CPT ( Within the loop )
$spyr_demo_sidebar_select = get_post_meta( $post->ID, 'spyr_demo_sidebar_select', true );
// Call the sidebar
dynamic_sidebar( $spyr_demo_sidebar_select );
Вывод
В этой статье мы представили OptionTree, охватывающий некоторые из самых основных полей, и рассмотрели, как мы можем получить доступ к их значениям на странице параметров темы или из сообщения, страницы или даже из пользовательского типа сообщения.