CMB2选项页面参数

时间:2017-05-20 05:15:34

标签: php wordpress cmb2

CMB2可以选择用作选项页面。

我正在查看示例文件,并在维基页面上,但即使复制并粘贴文件上的示例也不起作用。

我可能遗漏了一些东西,但我无法找到它,我已经花了两天时间试图完成这项工作。

按照wiki和我修改为此代码的示例

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'
    ) );

}

任何导致其无效的原因?

1 个答案:

答案 0 :(得分:0)

当前,有关CMB2选项页功能的文档仅将您带到其Snippet Library,这并不是100%简单的,因此希望我能帮助您阐明如何正确使用这些功能。

首先,您在foreach(SPListItem p in items) { if (p["WorkflowName"] != null && ... ) { var projection = new ... // add/etc } } 中注册的metabox可以生成整个管理页面。直接从片段库中获取以下代码示例:

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', ) ); } 功能上注释掉的设置向用户显示该页面。

保存表单后,它将把meta框及其字段保存到站点选项new_cmb2_box。因此,如果调用函数myprefix_options,它将返回以下数组:

get_option('myprefix_options')

我希望这有助于澄清一些事情。