こちらのサイトではDRUPAL10に関連する記事を掲載しています。
はじめに
Drupal10で投稿ページなどのコンテンツの公開ステータスを変更するためのTipsです。Drupal8以前から仕様が若干変更になっています。
Nodeの公開ステータスを更新する
Nodeの公開ステータスを公開にするには、setPublished()を使用します。
このメソッド自体は以前から存在しますが、Drupal9以降で仕様が一部変わりました。
Drupal9より前は、setPublishedの引数に、TrueまたはFalseを設定することで、公開または非公開を指定できました。しかし、Drupal8.3から非推奨となり、Drupal9では廃止されました。
Drupal9以降の新仕様は、
- ステータスを公開に設定するには、setPublished()引数なしを使用します。
- ステータスを非公開に設定するには、setUnpublished()引数なしを使用します。
サンプルです
function mymodule_cron()
{
$nids = \Drupal::entityQuery("node")
->condition('type', 'article')
->execute();
$storage_handler = \Drupal::entityTypeManager()->getStorage("node");
$nodes = $storage_handler->loadMultiple($nids);
foreach ($nodes as $node)
{
// Unpublish nodes
$node->setUnpublished();
// Publish nodes
// $node->setPublished();
$node->save();
}
}
なお、ステータスの参照時の仕様は変わりありません。
以下参考コードです
/**
* example for $nodes
*/
if ($node->status->value == 1) {
//the node is published
}else{
//the node is not published
}
この記事またはDrupalに関するご質問がございましたら、お気軽にお問い合わせください。