Cómo Archivar Nodos Automáticamente En Drupal
Usando un hook update
Si necesitas actualizar el estado de moderación de algunos contenidos, puedes hacerlo manualmente. Pero si necesitas hacerlo en varios entornos, como el servidor de test, el servidor de UAT, etc., puedes automatizarlo para que se aplique automáticamente en todos los servidores. Para ello, todo lo que necesitas es un hook update como este, donde solo necesitas pasar un array $entityIds con los ID de contenido que quieres actualizar y luego ejecutar las actualizaciones:
use \Drupal\Core\Entity\RevisionLogInterface;
/**
* Archive nodes programmatically.
* @param array $sandbox
*/
function hook_update_9011(array &$sandbox) {
$new_state = 'archived';
$entityIds = [20435, 20733, 19523, 20434, 27896];
foreach ($entityIds as $nid) {
$node = \Drupal\node\Entity\Node::load($nid);
if (isset($node)) {
$node->set('moderation_state', $new_state);
if ($node instanceof RevisionLogInterface) {
$node->setRevisionLogMessage('Changed moderation state to Archived');
$node->setRevisionUserId($node->getOwnerID());
}
$node->save();
}
}
}
👉 Descubre más sobre mí aquí: https://sergioguardiola.net 🔥