Respostas:
Existe um módulo para isso (TM).
Consulte Excluir em massa .
Isso usará a API do Lote para excluir os nós para evitar problemas de tempo limite ou memória ao excluir milhares de nós com uma única chamada para node_delete_multiple ().
A exclusão em massa é um módulo abandonado. Veja para alternativas:
Observando o módulo Devel Generate em busca de inspiração, aqui está sua função "matar conteúdo" devel_generate_content_kill
:
function devel_generate_content_kill($values) { $results = db_select('node', 'n') ->fields('n', array('nid')) ->condition('type', $values['node_types'], 'IN') ->execute(); foreach ($results as $result) { $nids[] = $result->nid; } if (!empty($nids)) { node_delete_multiple($nids); drupal_set_message(t('Deleted %count nodes.', array('%count' => count($nids)))); } }
Então, eu tentaria usar o Devel Generate para excluir todos os nós, mas não criar novos, ou usar example.com/devel/php para chamar devel_generate_content_kill(array('node_types' => array('my_node_type')));
diretamente.
No Drupal 8, uma maneira é usar o método entityQuery () com o método EntityStorageInterface :: delete () :
$result = \Drupal::entityQuery("node")
->condition("type", "YOUR_CONTENT_TYPE_NAME")
// If the update is being executed via drush entityQuery will only
// return the content uid 0 have access to. To return all set
// accessCheck to false since it defaults to TRUE.
->accessCheck(FALSE)
->execute();
$storage_handler = \Drupal::entityTypeManager()->getStorage("node");
$entities = $storage_handler->loadMultiple($result);
$storage_handler->delete($entities);
Se você precisar aplicar outros filtros / condições, verifique a página da interface QueryInterface
EDIT (Por outro lado, graças a @ 4k4 ):
$storage_handler = \Drupal::entityTypeManager()->getStorage("node");
$entities = $storage_handler->loadByProperties(["type" => "YOUR_CONTENT_TYPE_NAME"]);
$storage_handler->delete($entities);
Se você deseja testar o código, pode usar:
drush php-eval '$storage_handler = \Drupal::entityTypeManager()->getStorage("node"); $entities = $storage_handler->loadByProperties(["type" => "article"]); $storage_handler->delete($entities);'
Isso excluirá todos os seus artigos.
$entities = $storage_handler->loadByProperties(['type' => 'YOUR_CONTENT_TYPE_NAME']);
entityQuery
, defina o accessCheck
na declaração. Caso contrário, se você executá-lo em drush, por padrão accessCheck é definido como true e quaisquer nós aos quais o uid 0 não tem acesso não serão retornados.
Se você quiser fazer isso exclusivamente através da interface do usuário, poderá usar o módulo devel_generate.
Dessa forma, nenhum nó será gerado e todos os nós dos tipos selecionados serão excluídos.
Crie um arquivo com o código abaixo na raiz da instalação do drupal e execute o arquivo.
<?php
require_once './includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
$aquery= db_query("SELECT nid FROM {node} AS n WHERE n.type = 'company'");
while ($row = db_fetch_object($aquery)) {
node_delete($row->nid);
}
?>
Você pode fazer isso no Drupal 7 usando a parte Executar código PHP do módulo Devel, digitando:
$result= db_query("SELECT nid FROM {node} AS n WHERE n.type = 'TYPE'");
foreach ($result as $record) {
node_delete($record->nid);
}
Faça isso no terminal, se você usar Drush e excluir todos os módulos:
drush delete-all [content-type-machine-name]
Examples:
drush delete-all article Delect all article nodes.
drush delete-all all Delete nodes of all types.
drush delete-all --reset Delete nodes of all types, and reset node, revision and comment counters.
drush delete-all users Delete users.
Options:
--reset Reset counter for node, revision and comment tables.
--roles pick roles
Visualizações As operações em massa fornecem uma tela de administração de nó configurável e habilitada para BatchAPI que permite filtrar por tipo, seleção de todos os nós que correspondem aos seus critérios de pesquisa, etc.
Essa é a minha solução prática no Drupal 6 - além da exclusão em lote, você pode editar nós em massa e fazer várias outras coisas.
Parece que a versão do Drupal 7 ainda não está pronta - mas eu estaria assistindo esse módulo para um lançamento do D7.
Outro trecho é:
$query = db_query("SELECT n.nid FROM {node} n WHERE n.type = 'TO_BE_DELETED'");
while ($n = db_fetch_object($query))
{
node_delete($n->nid);
}
onde TO_BE_DELETED
é o tipo de conteúdo a ser excluído.
db_delete('node')
Com o módulo Devel, usando drush:
drush genc 0 --types=article --kill
Ou na interface do usuário, conforme explicado aqui: http://befused.com/drupal/delete-nodes-devel
devel_generate
que precisa ser ativado. E para vários tipos de que édrush genc 0 --kill --types="article, page"
Eu uso Delete all module, ele funciona bem com o D8 e fornece comandos drush muito úteis. Por exemplo, para excluir todo o article
conteúdo do tipo de conteúdo:
drush delete-all article
Você pode tentar Excluir todos os módulos, navegar para 'admin / content / delete_content' e você receberá um formulário para excluir o conteúdo pertencente a determinados tipos de conteúdo.
Saudações
Se você tiver o módulo Migrar ativado, poderá usar:
$ drush migrate-wipe <content-type>
Consulte Comandos de migração típicos usando Drush .
Este módulo é usado para excluir todo o conteúdo e / ou usuários de um site. Esta é principalmente uma ferramenta de desenvolvedor, que pode ser útil em vários casos
https://www.drupal.org/project/delete_all
assim como o módulo Excluir em Massa excluirá todos os nós de um determinado tipo de nó usando a API do lote. É recomendável usar o módulo Views Batch Operations (VBO) para um pequeno número de nós. Mas se você precisar excluir 10.000 nós, este módulo poderá ser uma opção melhor.
Exclua todos os nós do tipo de conteúdo programaticamente, aqui está uma função auxiliar:
function _delete_all_nodes_of_type($type = '') {
// Return all nids of nodes of type.
$nids = db_select('node', 'n')
->fields('n', array('nid'))
->condition('n.type', $type)
->execute()
->fetchCol(); // returns an indexed array
if (!empty($nids)) {
node_delete_multiple($nids);
drupal_set_message(format_plural(count($nids), count($nids) . ' node Deleted.', count($nids) . ' nodes Deleted.'));
}
}
Acabei usando db_delete , nenhum módulo necessário:
<?php
db_delete('node')
->condition('type', 'MY_CONTENT_TYPE')
->execute();
?>
Editar / Aviso: Veja o comentário de Berdir abaixo. Este método não limpa todos os dados relacionados aos nós.
Se você não quiser codificar, e você pode experimentar este módulo, https://drupal.org/project/total_control
Vá para Painel -> Conteúdo, selecione todo o conteúdo (você pode filtrar por tipo de conteúdo) e selecione "Excluir item"