Простой пример клонирования ноды.

<?php
$node      = node_load(1);
$wrapper   = entity_metadata_wrapper('node', $node);
$node      = $wrapper->value();
$node->nid = NULL;
$node->vid = NULL;
node_save($node);
print $node->nid; // 2

Пример

Есть функция, которая умеет клонировать ноды и есть место где мы хотели бы клонировать ноду, но в том месте у нас есть только wrapper, тогда

<?php
function mymodule_some_callback($nid){
  $entity_wrapper = entity_metadata_wrapper('node', $nid);
  $entity_wrapper->author->set(1);
  $cloned = mymodule_node_clone($entity_wrapper);
  return entity_view('node', array($cloned));
}

function mymodule_node_clone($node) {
  if ($node instanceof \EntityDrupalWrapper) {
    $node = $node->value();
  }
  $node->nid = NULL;
  $node->vid = NULL;
  node_save($node);
  return entity_metadata_wrapper('node', $node); // wrapper of new node
}

Другие посты