- เวิร์กโฟลว์ของฉันเป็นแบบร่าง เผยแพร่ และเก็บถาวร
- การแปลของฉันคือ 'en (ค่าเริ่มต้น)', 'fr' และ 'de'
- ลูกค้าของฉันสร้างโหนดจำนวนมากในสถานะแบบร่างสำหรับการเผยแพร่
- เราต้องเผยแพร่การแก้ไขล่าสุดเหล่านี้ในโหนดเหล่านี้
- แต่ละโหนดมีฟิลด์บางย่อหน้า
ฉันลองใช้รหัสต่อไปนี้กับ drush eval แต่การแปล "de" เปลี่ยนไปเมื่อแก้ไขครั้งแรกในฟิลด์ paragaraph
$langcode = "fr";
$nid = 12345;
// โหลดโหนดแล้ว
$node = \Drupal\node\Entity\Node::load($nid);
$node = $node->getTranslation($langcode);
ถ้า($node->hasTranslation($langcode)){
// ที่เก็บข้อมูลโหนด
$storage = \Drupal::entityTypeManager()->getStorage($node->getEntityTypeId());
// รหัสการแก้ไขการแปลล่าสุด
$revision_id = $storage->getLatestTranslationAffectedRevisionId($nid, $langcode);
$revision = $storage->loadRevision($revision_id);
ถ้า($revision->hasTranslation($langcode)){
$revision = $revision->getTranslation($langcode);
$status = $revision->moderation_state->value;
$is_draft = $status == "ฉบับร่าง";
ถ้า($is_draft){
$revision->setNewRevision(จริง);
$revision->setRevisionCreationTime(REQUEST_TIME);
$revision->set('moderation_state', 'เผยแพร่แล้ว');
$revision->save();
}
}
}
วิธีเผยแพร่ langcode การแก้ไขล่าสุดโดยทางโปรแกรมในแต่ละการแปล
ขอบคุณ.