add_action( 'cmb2_admin_init', 'aa_projects_register_repeatable_group_field_metabox' ); /** * Hook in and add a metabox to demonstrate repeatable grouped fields */ function aa_projects_register_repeatable_group_field_metabox() { // Start with an underscore to hide fields from custom fields list $prefix = '_aa_projects_group_'; /** * Repeatable Field Groups */ $cmb_group = new_cmb2_box( array( 'id' => $prefix . 'metabox', 'title' => __( 'Repeating Field Group', 'cmb2' ), 'object_types' => array( 'projects', ), ) ); // $group_field_id is the field id string, so in this case: $prefix . 'demo' $group_field_id = $cmb_group->add_field( array( 'id' => $prefix . 'slides', 'type' => 'group', 'description' => __( 'Generates reusable form entries', 'cmb2' ), 'options' => array( 'group_title' => __( 'Entry {#}', 'cmb2' ), // {#} gets replaced by row number 'add_button' => __( 'Add Another Entry', 'cmb2' ), 'remove_button' => __( 'Remove Entry', 'cmb2' ), 'sortable' => true, // beta // 'closed' => true, // true to have the groups closed by default ), ) ); /** * Group fields works the same, except ids only need * to be unique to the group. Prefix is not needed. * * The parent field's id needs to be passed as the first argument. */ $cmb_group->add_group_field( $group_field_id, array( 'name' => __( 'Entry Image', 'cmb2' ), 'id' => 'images', 'type' => 'file', ) ); }