Для начала переменные содержащие название типа материала и филда, которые мы будем создавать/удалять.

<?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()
    ),
  ),
));

Другие посты