Как удалить все неопубликованные комментарии?

У меня буквально тысячи неопубликованных комментариев. Мне интересно, что является самым простым способом избавиться от них вообще.

Спасибо

6 голосов | спросил alfish 24 PM00000040000005231 2011, 16:10:52

7 ответов


0

Для Drupal 6 запустите следующий код PHP:

db_query('DELETE FROM {comments} WHERE status = 1');

Для Drupal 7 запустите следующий код PHP:

db_query('DELETE FROM {comment} WHERE status = 0');

Вы также можете выполнить запрос, используя команду sql-query от Drush, например

drush sql-query "DELETE FROM {comment} WHERE status = 0"
ответил Oswald 24 PM00000040000001331 2011, 16:31:13
6

Лучший способ, по-моему, использовать функции Views и Views Bulk Operations, и вы можете сделать простой интерфейс администратора, чтобы удалить все из них.

В противном случае вы все равно можете удалять напрямую запрос SQL.

ответил yvan 24 PM00000040000001731 2011, 16:32:17
2

Для тех, кто использует Drupal 7, использование VBO изменилось, и приведенные выше комментарии о выборе Bulk Operations как стиле представления неверны. Ниже приведены шаги по созданию страницы VBO с Drupal 7 (я буду использовать пример удаления всех комментариев)

  • Создайте представление, в котором вы показываете комментарии и создаете страницу
  • Вам нужно отформатировать его таким образом, чтобы вы могли добавлять поля (таблица - удобный формат).
  • Добавить массовые операции: поле комментариев и для настроек для этого поля, в разделе «ВЫБОРНЫЕ НАБОРНЫЕ ОПЕРАЦИИ» выберите «Удалить элемент» (вы можете отказаться от шага подтверждения здесь)
  • Если у вас много комментариев, в Pager для этого представления будет отображаться что-то вроде 200 за раз (это будет медленно, но вам не придется многократно повторять свои удаления)
  • Сохраните свое представление, а затем перейдите на созданную страницу. Вы должны иметь возможность выбрать все элементы, а затем выбрать «Удалить» под операциями. Затем вы можете подтвердить удаление и повторить при необходимости.
ответил kbrinner 4 +04002013-10-04T04:50:44+04:00312013bEurope/MoscowFri, 04 Oct 2013 04:50:44 +0400 2013, 04:50:44
1

вы можете просмотреть эти шаги

  • Установить модуль объемных операций просмотра,
  • создать представление страницы комментарии и выберите «Массовые операции» в качестве стиля представления.
  • Убедитесь, что вы выбрали «Удалить комментарий» как одну из выбранных операций.
  • Когда вы просматриваете созданную страницу просмотра, вы сможете массово удалять комментарии.

Привет

ответил amroesam 1 Jam1000000amTue, 01 Jan 2013 11:53:52 +040013 2013, 11:53:52
0

Для Drupal 7 это действительно легко достичь.

  1. Перейдите к Content > Comments > Unapproved comments.
  2. Выберите верхний левый переключатель, чтобы выбрать все строки в таблице.
  3. Выберите «Удалить выбранные комментарии» в раскрывающемся списке вверху.
  4. Нажмите кнопку «Обновить».
ответил Jeroen 7 FebruaryEurope/MoscowbFri, 07 Feb 2014 02:30:06 +0400000000amFri, 07 Feb 2014 02:30:06 +040014 2014, 02:30:06
0

Обычно я рекомендую использовать VBO для удаления комментариев или узлов в массовом порядке, но если вы находитесь в ситуации, когда у вас есть сотни тысяч комментариев, и у вас не так много времени, вот запрос sql, который будет удалять все неутвержденные комментарии вместе со всеми изменениями и данными, связанными с теми комментариями, которые в моем случае занимали 1,2 ГБ места в DB

DELETE c, rcb, dcb
FROM
    comment AS c
JOIN field_revision_comment_body AS rcb ON (c.cid = rcb.entity_id)
JOIN field_data_comment_body AS dcb ON (rcb.entity_id = dcb.entity_id)
WHERE
    c. STATUS = 0
ответил Octan 9 J000000Thursday15 2015, 02:27:28
0

На самом деле это сработало для меня:

drush sql-query "DELETE FROM comment WHERE status = 0"

то есть. не требуется никаких фигурных скобок.

Однако, как объяснялось в других местах, в db есть другие таблицы, в которых упоминаются ссылки, поэтому этот подход не рекомендуется.

может быть, должен быть модуль, чтобы сделать это правильно, в том числе field_data_comment_body, field_revision_comment_body и т. д. Было бы полезно, если у вас есть gazillion неопубликованные комментарии.

Тем временем этот пост показывает лучший способ:

УДАЛИТЬ ИЗ field_data_comment_body ИСПОЛЬЗОВАНИЕ field_data_comment_body Комментарий JOIN ON comment.cid = field_data_comment_body.entity_id AND comment.status = 0;

УДАЛИТЬ ИЗ field_revision_comment_body ИСПОЛЬЗОВАНИЕ field_revision_comment_body Комментарий JOIN ON comment.cid = field_revision_comment_body.entity_id AND comment.status = 0;

УДАЛИТЬ ОТ комментария WHERE status = 0;

https://www.drupal.org/forum/general/general-discussion/2010-05-16/mass-delete-spam-comments#comment-10964889

ответил dan 16 +03002017-10-16T22:45:46+03:00312017bEurope/MoscowMon, 16 Oct 2017 22:45:46 +0300 2017, 22:45:46

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132