特定のコンテンツタイプのすべてのノードを削除する機能を提供する すべて削除 モジュールを発見しました。ただし、このモジュールでは、単一のノードまたはノードのリストを削除することはできません。
「 Drushを使用して特定のコンテンツタイプのノードを削除できますか? "コマンドについて話している2つの回答が見つかりましたdrush node_delete <nid>
が、このコマンドが見つかりません。
私は node_delete()に関するディスカッション evalを使用してこのタスクを実行するコードを見つけましたが、evalを使用しています:
drush php-eval "global \$user; \$user = user_load(1); node_delete(nid);"
これを実現するために実装された機能が存在しない場合、この機能を実装するためのより良い方法は何ですか? Drush モジュールで、または新しいモジュールを作成しますか?
Drush Entity module を使用する場合、drush entity-delete node 123
を実行してサイトからnid 123を削除できます。
EDIT:誰かがdrush entity-delete
コマンドを使用する必要がある場合、モジュールの開発バージョンを使用する必要があります: https:// www.drupal.org/project/drush_entity/releases/7.x-5.x-dev
最後に、drush_delete
という名前の独自のモジュールを作成します
drush_delete.drush.inc
ファイル内に次のコードを挿入します。
<?php
/**
* @file
* The Drush Delete drush commands.
*/
/**
* Implements hook_drush_command().
*/
function drush_delete_drush_command() {
$items['node-delete'] = array(
'description' => dt("Delete nodes."),
'aliases' => array('nd'),
'arguments' => array(
'nids' => dt('The nids of the nodes to delete'),
),
'examples' => array(
'drush node-delete 1' => dt('Delete the node with nid = 1.'),
'drush node-delete 1 2 3' => dt('Delete the nodes with nid = 1, 2 and 3.'),
),
);
return $items;
}
/**
* Callback for the node-delete command
*/
function drush_drush_delete_node_delete() {
$nids = func_get_args();
$nids = array_filter($nids, 'is_numeric');
$nids = array_map('intval', $nids);
$nids = array_unique($nids);
$nids = array_values($nids);
$cant = count($nids);
if ($cant > 0) {
node_delete_multiple($nids);
drush_print(dt("Deleted nodes:"));
drush_print(implode(' ', $nids));
}
else {
drush_set_error('DRUSH_ERROR_CODE', dt("You must enter at least one nid"));
}
}
モジュールをインストールし、drush cc drush
を実行してDrushキャッシュをクリアし、次のようなコマンドを使用します。
ノードを削除するには:
drush node-delete 1
drush nd 1
複数のノードを削除するには、以下を使用します。
drush node-delete 1 2 3
drush nd 1 2 3
このモジュールでコマンドを見つけることができます:
私見最も簡単な方法はphp-evalです:
drush php-eval "node_delete_multiple(array(NODE_ID));"
...
drush php-eval "node_delete_multiple(array(34));" // for node/34
drush php-eval "node_delete_multiple(array(34, 35));" // for node ids 34 and 35