Cómo Archivar Nodos Automáticamente En Drupal

Usando un hook update

Sergio Guardiola Herrador
1 min readJul 4, 2024
Photo by Nana Smirnova on Unsplash

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 🔥

--

--

Sergio Guardiola Herrador
Sergio Guardiola Herrador

Written by Sergio Guardiola Herrador

I write articles in English and Spanish, mostly about programming, technology, travel, money, investing. You can find me here: https://sergioguardiola.net

No responses yet