How to create group of custom fields by code
You can use below given code for creating group of fields,
Example:
// Put this code in your functions.php or any other file where you want to run this according to your need.
add_action( 'admin_init', 'create_post_types_custom_fields_group' );
function create_post_types_custom_fields_group() {
// Seprated by comma if you want to assign this group of fields to multiple post types.
$post_types = 'your_post_type';
// It should be string.
$group_name = 'your_group_name';
$postData = get_posts( array(
'name' => $group_name,
'post_type' => 'cwp_form_fields',
'post_status' => 'publish',
'fields' => 'id',
'numberposts' => 1
) );
$post_id = count( $postData ) > 0 ? $postData[0]->ID : '';
// Create post object
if ( empty( $post_id ) ) {
if ( ! $post_id ) {
$my_post = array(
'post_title' => __( 'Your Group Title', 'Your-Text-Domain' ),
'post_name' => $group_name,
'post_content' => 'mandatory general custom fields.',
'post_status' => 'publish',
'post_author' => 1,
'post_type' => 'cwp_form_fields'
);
// Insert the group into the database
$post_id = wp_insert_post( $my_post );
// if this meta is set as secure then this group of field will not have delete option.
update_post_meta( $post_id, '_cwp_group_visibility', 'secure' );
update_post_meta( $post_id, '_cwp_group_types', $post_types );
update_post_meta( $post_id, '_cwp_group_order', 1 );
}
$fields = post_types_group_custom_fields( $post_id );
$custom_fields = array();
foreach ( $fields as $key => $field ) {
$custom_fields[] = $key;
CubeWp_Custom_Fields_Processor::set_option( $key, $field );
}
update_post_meta( $post_id, '_cwp_group_fields', implode( ',', $custom_fields ) );
}
}
// This function will return array of custom fields.
function post_types_group_custom_fields( $post_id ) {
$fields = array();
$fields['price'] = array(
'label' => __( 'Price', 'Your-Text-Domain' ),
'name' => 'price',
'type' => 'number',
'description' => '',
'default_value' => '',
'placeholder' => '',
'options' => json_encode( array() ),
'filter_post_types' => '',
'filter_taxonomy' => '',
'filter_user_roles' => '',
'appearance' => '',
'required' => 1,
'validation_msg' => __( 'Price field is mandatory', 'Your-Text-Domain' ),
'id' => 'price_id',
'class' => '',
'container_class' => '',
'conditional_operator' => '!empty',
'conditional_value' => '',
'group_id' => $post_id
);
$fields['gender'] = array(
'label' => __( 'Gender', 'Your-Text-Domain' ),
'name' => 'gender',
'type' => 'radio',
'description' => '',
'default_value' => '',
'placeholder' => '',
'options' => json_encode( array(
'label' => array(
__( 'Male', 'Your-Text-Domain' ),
__( 'Female', 'Your-Text-Domain' )
),
'value' => array( 'male', 'female' )
) ),
'filter_post_types' => '',
'filter_taxonomy' => '',
'filter_user_roles' => '',
'appearance' => '',
'required' => '',
'validation_msg' => '',
'id' => 'gender_id',
'class' => '',
'container_class' => '',
'conditional_operator' => '!empty',
'conditional_value' => '',
'group_id' => $post_id
);
return $fields;
}