Плагин Carbon fields. Часть 3.2 – Типы Контейнеров. Theme Options.

Автор: | 07.07.2019

Контейнер Theme option используется для добавления страниц с различными параметрами в back-end. По умолчанию контейнеры Theme option автоматически создают главную страницу с названием «настройки темы» (Theme Options) в области администрирования. В большинстве случаев достаточно настроек по умолчанию:

 

use Carbon_Fields\Container;

use Carbon_Fields\Field;

Container::make( 'theme_options', __( 'Theme Options' ) )

->add_fields( array(

Field::make( 'text', 'crb_facebook_url', __( 'Facebook URL' ) ),

Field::make( 'textarea', 'crb_footer_text', __( 'Footer Text' ) )

) );

 

но, если вам нужно изменить название или расположение страницы в меню, используйте Multiple option.

напомню, что в прошлой статье мы рассматривали контейнер  Post Meta.

Multiple option page

Иногда требуется создать несколько страниц параметров. Или вам нужно разместить разные страницы в разных разделах меню администратора. Например, у вас может быть обширный список параметров фона, которые вы хотите разместить на отдельной странице параметров темы в разделе Внешний вид.
Чтобы изменить расположение страницы параметров темы, используйте set_page_parent ($parent ), где $parent:

Ссылка на контейнер параметров темы верхнего уровня.
Ярлык меню контейнера параметров темы верхнего уровня.
Ярлык меню любой страницы администрирования верхнего уровня.

Theme Options

 

use Carbon_Fields\Container;

use Carbon_Fields\Field;




// Страница параметры по умолчанию

$basic_options_container = Container::make( 'theme_options', __( 'Basic Options' ) )

->add_fields( array(

Field::make( 'header_scripts', 'crb_header_script', __( 'Header Script' ) ),

Field::make( 'footer_scripts', 'crb_footer_script', __( 'Footer Script' ) ),

) );




// Добавить вторую страницу параметров в разделе 'Basic Options'

Container::make( 'theme_options', __( 'Social Links' ) )

->set_page_parent( $basic_options_container ) // ссылка на контейнер верхнего уровня

->add_fields( array(

Field::make( 'text', 'crb_facebook_link', __( 'Facebook Link' ) ),

Field::make( 'text', 'crb_twitter_link', __( 'Twitter Link' ) ),

) );




// Добавить третью страницу параметров

Container::make( 'theme_options', __( 'Customize Background' ) )

->set_page_parent( $basic_options_container)

->add_fields( array(

Field::make( 'color', 'crb_background_color', __( 'Background Color' ) ),

Field::make( 'image', 'crb_background_image', __( 'Background Image' ) ),

) );

 

Локализация заголовка страницы

По умолчанию URL-адрес страницы параметров создается из заголовка, переданного методу Container:: make. В приведенном выше примере URL-адрес будет admin.php?page=theme-options. Если вы используете функцию gettext для локализации названия, например:

 

Container::make( 'theme_options', __( 'Theme Options', 'my-textdomain' ) )

 

тогда URL вашей страницы будет отличаться для разных языков. Это вызовет проблемы с многоязычными плагинами, такими как WPGlobus или WPML, которые позволяют переключать язык администратора.

Чтобы решить эту проблему, необходимо вызвать метод set_page_file, например:

 

use Carbon_Fields\Container;

use Carbon_Fields\Field;

Container::make( 'theme_options', __( 'Theme Options', 'my-textdomain' ) )

->set_page_file( 'theme-options' )

->add_fields( array(

Field::make( 'text', 'crb_facebook_url' ),

Field::make( 'textarea', 'crb_footer_text' ),

) );

Значок меню

Для изменения значка страницы параметров темы можно использовать set_icon ($icon ), где $icon может быть одним из значений, поддерживаемых параметром $ icon_url функции add_menu_page ().

Theme Options

Ниже приведен пример настройки значка страницы параметров темы:

 

use Carbon_Fields\Container;

use Carbon_Fields\Field;

Container::make( 'theme_options', 'Basic Options' )

->set_icon( 'dashicons-carrot' )

->add_fields( array(

Field::make( 'text', 'crb_test_field' ),

) );

Заголовок меню

Для изменения заголовка кнопки меню контейнера можно использовать set_page_menu_title( $title), где $title-желаемый заголовок.

Theme Options

 

Container::make( 'theme_options', 'A very long option page title' )

->set_page_menu_title( 'Custom Options' )

->add_fields( array(

// ...

) );

Положение меню

Чтобы изменить приоритет позиции кнопки меню страницы, Используйте set_page_menu_position ($position ), где $position-число.

Theme Options

 

Container::make( 'theme_options', 'Basic Options' )

->set_page_menu_position( 1 )

->add_fields( array(

// ...

) );

Доступ к значениям полей

Для извлечения значений полей из контейнера Theme option необходимо использовать функцию carbon_get_theme_option ($name), где:
$name — имя извлекаемого поля.
Например, добавим на каждую страницу ссылку на Facebook.
Для этого перейдем в шаблон page.php и пропишем следующее:

 

<p>Copyright <?php echo carbon_get_theme_option( 'crb_facebook_link' ); ?></p>

 

Перейдем на страницу и увидим

Theme Options

Лучшие Плагины WordPress AMP
Лучшие Плагины WordPress AMP

Посетители вашего сайта получают доступ к его содержимому не только Read more

Как отключить плагины WordPress с помощью FTP
Как отключить плагины WordPress с помощью FTP

Вы пытаетесь отключить плагины WordPress на своем сайте? Скорее всего Read more

Плагин Carbon fields. Часть 4.2 –Типы полей. Complex.
Плагин Carbon fields. Часть 4.2 –Типы полей. Complex.

Сложные поля в Carbon fields, действуют как контейнеры, в которые Read more

Плагин Carbon fields. Часть 4.2 –Типы полей. Медиа (file, Image,Media Gallery)
Плагин Carbon fields. Часть 4.2 –Типы полей. Медиа (file, Image,Media Gallery)

Плагин Carbon fields позволяет загружать на станицы и записи медиа-файлы Read more

Плагин Carbon fields. Часть 4.2 –Типы полей. Дата и время.
Плагин Carbon fields. Часть 4.2 –Типы полей. Дата и время.

Продолжаем знакомство с плагином для создания произвольных полей Carbon fields. Read more

Плагин Carbon fields. Часть 3.3 — Comment Meta, Term Meta
Carbon fields Comment Meta

Продолжаем изучать плагин для создания произвольных полей Carbon fields. Сегодня Read more

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

пять × пять =