Для начала переменные содержащие название типа материала и филда, которые мы будем создавать/удалять.
<?php
$content_type = 'article';
$field_name = 'yandex_field';
Как удалить тип материала?
<?php
node_type_delete($content_type);
Как удалить поле (field)?
<?php
field_delete_instance(array( // удаление привязки (инстанции)
'field_name' => $field_name, // Программное имя поля
'entity_type' => 'node', // тип сущности (entity)
'bundle' => $content_type // тип материала
));
field_delete_field($field_name); // удаление самого поля с данными
Как создать тип материала?
<?php
$t = get_t(); // получение перевоодчика
$info = node_type_set_defaults(array( // насыщение объекта дефолтными значениями
'type' => $content_type,
'name' => $t('Article'),
'base' => 'node_content'
));
node_type_save($info); // Сохранение типа материала
// Добавление поля Body к типу материала.
// Второй параметр - это лейбл (название) поля Body
node_add_body_field($info, 'Description');
Как создать поле и привязать его к типу материала?
<?php
// Создание филда
field_create_field(array(
'field_name' => $field_name,
'type' => 'some_field_type', // Взято из хука hook_field_info()
'entity_types' => array('node'),
));
// Привязка Филда к типу материала
field_create_instance(array(
'field_name' => $field_name,
'entity_type' => 'node',
'bundle' => $content_type,
'label' => $t('Some field'), // Название филда
'widget' => array(
'type' => 'some_widget' // Взято из хука hook_field_widget_info()
),
'display' => array(
'default' => array(
'label' => 'hidden', // Спрятать лейбл
'type' => 'some_default_view', // Взято из хука hook_field_formatter_info()
),
'teaser' => array(
'label' => 'hidden', // Спрятать лейбл
'type' => 'some_short_view', // Взято из хука hook_field_formatter_info()
),
),
));