CMB2如何向已通过new_cmb2_box创建的选项页新增metabox
问题原因
你给第二个metabox的配置参数错误:parent_slug是创建全新独立选项页时才需要配置的参数,要把metabox挂载到已有的选项页面上,只需要和原选项页指定同一个option_key参数即可。
修改后的可用代码
add_action( 'cmb2_admin_init', 'register_metabox2' ); function register_metabox2() { $cmb2 = new_cmb2_box( array( 'id' => 'test2', 'title' => 'title', 'object_types' => array( 'options-page' ), // 和第一个选项页的option_key保持一致,即可挂载到已有的选项页上 'option_key' => 'ustawienia_motywu', ) ); // 原有字段配置保持不变 $cmb2->add_field( array( 'name' => __( 'Test Text', 'myprefix' ), 'desc' => __( 'field description (optional)', 'myprefix' ), 'id' => 'test_text', 'type' => 'text', // 'default' => 'Default Text', ) ); $cmb2->add_field( array( 'name' => __( 'Test Color Picker', 'myprefix' ), 'desc' => __( 'field description (optional)', 'myprefix' ), 'id' => 'test_colorpicker', 'type' => 'colorpicker', 'default' => '#bada55', ) ); }
补充说明
如果你需要更精准的控制该metabox的显示条件,也可以搭配你猜测的show_on_cb参数自定义显示逻辑,示例如下:
// 仅在当前页面为目标选项页时显示该metabox 'show_on_cb' => function( $cmb ) { return isset( $_GET['page'] ) && $_GET['page'] === 'ustawienia_motywu'; }
内容的提问来源于stack exchange,提问作者Piotr Deja
相关产品推荐
相关产品推荐

