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.