Параметр страницы опции CMB2

CMB2 имеет опцию для использования в качестве страницы опций.

Я смотрю в файлах примеров и на вики-странице, но даже копирование и вставка примера в файлы не работает.

Я, наверное, что-то упускаю, но я не могу найти, что это, я уже потратил два дня, пытаясь сделать эту работу.

Следуя вики и примеру, я изменил этот код

add_action( 'cmb2_admin_init', 'yourprefix_register_theme_options_metabox' );
function yourprefix_register_theme_options_metabox() {

$option_key = 'wherever';

$cmb = new_cmb2_box( array(
'id'=> $option_key . '_theme_options-page',
'object_types' => array( 'options-page' ),
'hookup'  => false,
'menu_title' => 'Site Options',
'parent_slug' => 'tools.php',
'capability' => 'manage_options'
) );

$cmb->add_field( array(
'name'    => 'Site Background Color',
'desc'    => 'field description',
'id'      => 'bg_color',
'type'    => 'colorpicker',
'default' => '#ffffff'
) );

}

Есть ли какие-то сведения о том, почему это не работает?

3

Решение

В настоящее время документация по возможностям страницы настроек CMB2 просто приводит вас к Библиотека фрагментов что не на 100% просто, так что, надеюсь, я могу помочь уточнить, как правильно использовать эти функции.

Во-первых, метабоксы, в которых вы регистрируетесь cmb2_admin_init может создать целую страницу администратора. Возьмите этот пример кода прямо из библиотеки фрагментов, например:

add_action('cmb2_admin_init', 'register_my_admin_page');
function register_my_admin_page() {
/**
* Registers options page menu item and form.
*/
$cmb_options = new_cmb2_box( array(
'id'           => 'myprefix_option_metabox',
'title'        => esc_html__( 'Site Options', 'myprefix' ),
'object_types' => array( 'options-page' ),
/*
* The following parameters are specific to the options-page box
* Several of these parameters are passed along to add_menu_page()/add_submenu_page().
*/
'option_key'      => 'myprefix_options', // The option key and admin menu page slug.
// 'icon_url'        => 'dashicons-palmtree', // Menu icon. Only applicable if 'parent_slug' is left empty.
// 'menu_title'      => esc_html__( 'Options', 'myprefix' ), // Falls back to 'title' (above).
// 'parent_slug'     => 'themes.php', // Make options page a submenu item of the themes menu.
// 'capability'      => 'manage_options', // Cap required to view options-page.
// 'position'        => 1, // Menu position. Only applicable if 'parent_slug' is left empty.
// 'admin_menu_hook' => 'network_admin_menu', // 'network_admin_menu' to add network-level options page.
// 'display_cb'      => false, // Override the options-page form output (CMB2_Hookup::options_page_output()).
// 'save_button'     => esc_html__( 'Save Theme Options', 'myprefix' ), // The text for the options-page save button. Defaults to 'Save'.
) );

/*
* Options fields ids only need
* to be unique within this box.
* Prefix is not needed.
*/
$cmb_options->add_field( array(
'name' => __( 'Test Text', 'myprefix' ),
'desc' => __( 'field description (optional)', 'myprefix' ),
'id'   => 'test_text',
'type' => 'text',
'default' => 'Default Text',
) );
$cmb_options->add_field( array(
'name'    => __( 'Test Color Picker', 'myprefix' ),
'desc'    => __( 'field description (optional)', 'myprefix' ),
'id'      => 'test_colorpicker',
'type'    => 'colorpicker',
'default' => '#bada55',
) );
}

Этот фрагмент кода сгенерирует страницу администратора верхнего уровня с именем «Параметры сайта» с двумя полями: текстовое поле и поле выбора цвета, с заголовком, полями формы, кнопкой отправки и т. Д. Вы можете настроить способ отображения страницы. отображается пользователю с использованием закомментированных настроек на new_cmb2_box функция.

Когда форма сохранена, она сохранит мета-поле и его поля в опции сайта. myprefix_options, Так что если вы вызываете функцию get_option('myprefix_options'), он вернет следующий массив:

array(
'myprefix_option_metabox' => array(
'test_text' => '' // value of the Test Text field,
'test_colorpicker' => '' // value of the Test Color Picker field
)
)

Надеюсь, это поможет немного прояснить ситуацию.

0

Другие решения

Других решений пока нет …