在WordPress中使用CMB2添加具有自定义回调函数的自定义元框()

我正在wordpress中的一个项目上工作, 在这里我正在使用CMB2插件来构建自定义元框和字段。但是在一种情况下, 我需要一个带有自定义回调函数的自定义元框, 以便在其中创建一些自定义动态字段。
我从cmb得到的是添加带有自定义回调的meta字段, 例如

$cmb-> add_field( array( 'name'=> __( 'Test', 'cmb2' ), 'id'=> $prefix . 'test', 'type'=> 'text', 'default' => 'prefix_set_test_default', ) );

回调:
function prefix_set_test_default( $field_args, $field ) { return my_custom_fields;

}
我现在能做什么?
提前致谢
#1你必须从CMB2的回调函数返回一个关联数组, 以生成你的自定义字段。
这是有关如何从自定义帖子类型返回帖子下拉列表的示例:
$cmb-> add_field( [ 'name'=> __( 'Posts dropdown', 'cmb2' ), 'id'=> $prefix . 'dropdown', 'type'=> 'select', 'show_option_none' => true, 'options_cb'=> 'get_my_custom_posts', ] );

【在WordPress中使用CMB2添加具有自定义回调函数的自定义元框()】回拨功能
function get_my_custom_posts() { $posts = get_posts( [ 'post_type' => 'my_custom_post_type' ] ); $options = []; foreach ( $posts as $post ) { $options[ $post-> ID ] = $post-> post_title; }return $options; }

#2
Below is proper way to add custom meta by CMB2 meta box.add_action( 'cmb2_admin_init', 'cmb2_custom_metaboxes' ); function cmb2_sample_metaboxes() {//your custom prefix $prefix = '_customprefix_'; $cmb = new_cmb2_box( array( 'id'=> 'test_metabox', 'title'=> __( 'Test Metabox', 'cmb2' ), 'object_types'=> array( 'page', ), // Post type 'context'=> 'normal', 'priority'=> 'high', 'show_names'=> true, // Show field names on the left // 'cmb_styles' => false, // false to disable the CMB stylesheet // 'closed'=> true, // Keep the metabox closed by default ) ); // Regular text field $cmb-> add_field( array( 'name'=> __( 'Test', 'cmb2' ), 'desc'=> __( 'field description', 'cmb2' ), 'id'=> $prefix . 'text', 'type'=> 'text', 'default' => 'prefix_set_test_default', ) ); //Add more field as custom meta }function prefix_set_test_default($field_args, $field){ return my_custom_fields; }

    推荐阅读