Контейнер 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:
Ссылка на контейнер параметров темы верхнего уровня.
Ярлык меню контейнера параметров темы верхнего уровня.
Ярлык меню любой страницы администрирования верхнего уровня.
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 ().
Ниже приведен пример настройки значка страницы параметров темы:
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-желаемый заголовок.
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-число.
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>
Перейдем на страницу и увидим