Контейнер 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