Field creation
The example of adding a field as my_custom_field() to the page node type with field_create_field() and field_create_instance() is as follows:
$field = array(
'field_name' => 'my_custom_field',
'cardinality' => 1,
'translatable' => TRUE,
'type' => 'text',
);
field_create_field($field);
$instance = array(
'field_name' => 'my_custom_field',
'entity_type' => 'node',
'label' => 'My custom field',
'bundle' => 'page',
'required' => TRUE,
'widget' => array(
'type' => 'text_textfield',
),
'display' => array(
'default' => array(
'type' => 'text_default',
),
),
);
field_create_instance($instance);Field editing
The example of changing the parameter required in the existing field my_custom_field() in the page node type with the hook field_read_instance() and field_update_instance() is as follows:
$instance = field_read_instance('node', 'my_custom_field', 'page');
$instance['required'] = FALSE;
field_update_instance($instance);Deleting fields
The example of deleting an existing field my_custom_field() in the page node type with field_delete_field(), field_delete_instance() and field_info_instance() is as follows:
field_delete_field('my_custom_field');
field_delete_instance(field_info_instance('node', 'my_custom_field', 'page'));The hook hook_update_N() can be used for implementation of the above mentioned code.