はじめに
以前、こちらの記事内でMBTIデータをTaxonomyTermで登録するスクリプトについて触れました。
16個もGUIで作ってられないですよね。
その時に使用したMBTIデータ登録スクリプトを紹介します。
サンプルデータ
以下のフォーマットの配列を用意します。
$data = [
['name' => 'ISTJ','vid' => 'mbti'],
['name' => 'ISFJ','vid' => 'mbti'],
['name' => 'INFJ','vid' => 'mbti'],
['name' => 'INTJ','vid' => 'mbti'],
['name' => 'ISTP','vid' => 'mbti'],
['name' => 'ISFP','vid' => 'mbti'],
['name' => 'INFP','vid' => 'mbti'],
['name' => 'INTP','vid' => 'mbti'],
['name' => 'ESTP','vid' => 'mbti'],
['name' => 'ESFP','vid' => 'mbti'],
['name' => 'ENFP','vid' => 'mbti'],
['name' => 'ENTP','vid' => 'mbti'],
['name' => 'ESTJ','vid' => 'mbti'],
['name' => 'ESFJ','vid' => 'mbti'],
['name' => 'ENFJ','vid' => 'mbti'],
['name' => 'ENTJ','vid' => 'mbti'],
];
スクリプト
/** @var \Drupal\taxonomy\TermStorageInterface $storage */
$storage = \Drupal::entityTypeManager()->getStorage('taxonomy_term');
foreach ($data as $item) {
try {
$entity = $storage->create($item);
$entity->save();
echo 'Term作成成功. ID:' . $entity->id() . ".\r\n";
}
catch (EntityStorageException $e) {
echo $e->getMessage();
}
}
TermStorage
が用意しているCreate
メソッドを使用します。
実行
Drush に搭載されているスクリプト実行コマンドを利用しましょう。
drush php:script <ファイル名>
まとめ
サンプルデータを作成する時に、覚えておくと役立ちそうですね。
16個であればデータの作成を手動ですることもあるかもしれませんが、この程度でのスクリプトであれば時間もかからないし使いまわせそうなので実装してもいいかもですね。