Следующий код может представлять интерес.Это небольшой фрагмент из модуля, который мне пришлось создать для автоматического истечения срока действия рекламы на сайте в интрасети.Узлы просто отменяют публикацию через несколько дней, которые вы указали в коде, поэтому они могут быть скрыты от вашего сайта, и тогда автор контента может просто повторно опубликовать узлы, если им это необходимо.
/**
* Implementation of hook_cron().
*/
function auto_unpublish_pages_cron() {
//we only want to deal with all blog_post content type nodes
$c_type = 'blog_post';
//grab all nodes
$c_nodes = node_load_multiple(array(), array('type' => $c_type));
//setup time stamp for node expiry
$message_search_data = strtotime('- 7 days');
//now loop through nodes, & if they are old, expire them
foreach ($c_nodes as $m) {
$obj = entity_metadata_wrapper('node', $m);
//check when was last updated and if its still published
$last_update = $obj->changed->value();
$published = $obj->status->value();
//if it's still published & it's not recent, unpublish it
if (($message_search_date > $last_update) && $published<>0) {
$obj->status = 0;
$obj->save();
}
}
}