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