Удаление записей WordPress

Удаление записей WordPress

Удаление записей WordPress - задача далеко не тривиальная. Речь не о том, чтобы удалить какую-то конкретную запись - тут всё просто. Но если надо удалить их все? Даже не десять и не двадцать, а несколько тысяч!

Кто-то может сказать: Дяденька, ты дурак? Это фраза из какого-то старого фильма. И ведь на самом деле, ведёт человек блог, трудится над созданием каждой записи-статьи, вкладывается в их продвижение и вдруг на тебе, массовое удаление записей WordPress ...

Но ситуации могут быть разные. С одной из таких ситуаций я буквально вчера и столкнулся.

Зачем мне понадобилось массовое
удаление записей WordPress

Приведу свою ситуацию в качестве примера. Есть корпоративный интернет-магазин, созданный на движке WordPress при помощи woocommerce. База этого магазина была небольшой, всего несколько сот товаров, отобранных по особому критерию из нашего ассортимента.

При таком положении дел обновление базы магазина происходило штатными средствами woocommerce - загружался небольшой CSV-файлик и через несколько минут обновление было завершено. Это устраивало.

Более того, возможности такого магазина мне понравились больше, чем наших-же интернет-магазинов на движке OpenCart. И возникла у меня идея все их перевести на WordPress. И вот тут-то я и нарвался на засаду: загрузка более 6000 товарных позиций штатными средствами занимала несколько часов. Два, три, иногда четыре...

Я стал искать сторонние плагины, разработчики которых обещали быструю загрузку до 100000 товаров... Ну да, как-же...

Тем не менее, один более-менее подходящий плагин я нашёл. По своей невнимательности в его настройках я выставил обновление не карточки товара, а записей. Уже вечером, уходя с работы, запустил импорт из CSV, а приехав домой, увидел, что товаров не прибавилось, зато было создано более шести тысяч новых записей. Вот их мне и пришлось удалять.

Как не надо удалять записи из WordPress

Поначалу я попытался удалить эти записи обычным способом через админку. Выделял по 200 штук и удалял. Попытка удалять сразу по тысяче приводила к ошибке тайм-аута сервера.

Кроме того, все эти записи удалялись в корзину и через какое то время я получил другую ошибку - размер корзины превысил некую допустимую величину и процесс прерывался.

Вот и пришлось, мало того, что удалять по 200 записей, так ещё после каждого такого удаления заходить в корзину и чистить её. Время действия растягивалось до необозримых пределов.

Пришлось искать другой путь решения проблемы.

Как удалить все записи WordPress меньше чем за минуту

Нужно массовое удаление записей WordPress? Есть решение, очень простое и быстрое. Создать SQL-запрос через phpMyAdmin. Что я и сделал.

DELETE tb1,tb2
FROM wp_posts tb1
LEFT JOIN wp_postmeta tb2 ON ( tb1.ID = tb2.post_id )
WHERE tb1.post_type = 'post'

Вот этот код! Его можно использовать на любом блоге WordPress, единственный момент, который надо учесть - это префикс таблиц. У меня это "wp_" (в коде это видно), у вас может быть точно такой, а может и отличаться. В таком случае просто в коде надо проставить свой префикс.

Куда этот код вставлять

Удаление записей WordPress
Картинка кликабельна

Картинка увеличивается по клику на ней. Надеюсь, всё уже понятно, но на всякий случай опишу ещё словами...

Запускаем phpMyAdmin и слева выбираем свою базу данных, их ведь может быть несколько. А далее по схеме:

  1. Переходим на вкладку SQL.
  2. Вставляем код.
  3. Кликаем по кнопке "Вперёд".

Через несколько секунд(!) появится сообщение, что запрос обработан. На этом всё. Можете смотреть в своей админке - нет ни одной записи...

Как удалить все товары woocommerce

На всякий случай покажу, как точно таким-же способом удалить одним запросом все товары. Ну мало-ли, вдруг понадобиться. Лично я так уже несколько раз удалял...

DELETE FROM wp_term_relationships WHERE object_id IN (SELECT ID FROM wp_posts WHERE post_type = 'product');
DELETE FROM wp_postmeta WHERE post_id IN (SELECT ID FROM wp_posts WHERE post_type = 'product');
DELETE FROM wp_posts WHERE post_type = 'product';

Ещё раз хочу обратить внимание на префикс таблиц. Сам код вставляем как в предыдущем примере.

Вот, собственно и всё...

Заключение

Ещё существуют специальные плагины для тех действий, о которых я тут рассказал. Но, на мой взгляд, это несерьёзно. Они, при таком массовом удалении записей, выдают те-же ошибки, что я обозначил при удалении из админки... Смысл?

Очень надеюсь, что вам этот материал не пригодится. Ну, а если вдруг возникнет ситуация, подобная моей, или аналогичная - то вот оно решение. Быстрое и чистое.

Тем не менее, не стоит забывать о резервных копиях... На всякий случай. А также про оптимизацию базы данных. Это важно!

Удачи вам и до встречи на наших блогах!

Смотрите также

Репозиторий WordPress заблокировал мои плагины

Репозиторий WordPress заблокировал мои плагины

Да, репозиторий WordPress заблокировал мои плагины... Два из трёх.  В самом репозитории это выглядело так: …

Блог вернулся на казахстанский хостинг

Блог вернулся на казахстанский хостинг

Я перенёс блог на казахстанский хостинг. Не знаю, оправданы-ли мои действия, но всё уже свершилось. …

22 комментария

  1. Саша, привет! Отличная статья, взяла в закладки…. все может быть и дай Бог, чтоб не пригодилось. 

    Я пришла поздравить тебя и всю твою семью со Светлой Пасхой! Здоровья тебе, всех благ тебе и твоей семье, а главное крепкого сибирского здоровья. Оставайся здравым Полковником!

    С Искренним Уважением и теплотой я

    Пусть теплоты, добра, уюта
    Вам день пасхальный принесёт.
    И душу пусть покинет смута,
    А от беды Вас Бог спасёт.

    Сегодня Вы поверьте в сказку —
    Случилось чудо из чудес,
    Ведь в этот день, благой и ясный,
    Как светлый лик Христос Воскрес!

  2. И у меня Саша к тебе один малюсенький вопрос, который хотела так давно задать. Вот например: нажимаю на Светлой Пасхой (в своем комменте) и появляется или выползает…  картинка с описанием. Это у тебя какой-то плагин стоит? Подскажи пожалуйста командир. Заранее спасибо!

  3. Саша, привет! Классно что нашел способ как и что сделать. Хотя по другому быть и е могло. 

    Да, с праздником Пасхи! 

  4. Саша, я тебе в обратную связь написала. Это несрочно….

  5. Думаю, что мне такое не пригодится, но взяла на заметку. Саша, поздравляю с наступающими майскими праздниками, пусть они будут интересными и веселыми. Здоровья и успехов!

  6. Саша, привет. Даа… какие только вопросы нам жизнь не подбрасывает и нужно их решить. Ты молодец!!! Я то, конечно, в предложенной схеме ничего не поняла, но  статью прочла- нужно же отметиться, чтоб ты знал 🙂 Тем более ты так редко стал публиковать новое.

    И кстати, не было рассылки. Первый случай за всё время нашего общения. Всё и всегда приходили. Что это? Не делал?

    • Люда, привет! Статья, на мой взгляд, слишком специфическая, так что рассылку по ней я не делал.

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

      Исправлюсь буквально сегодня. И рассылку сделаю… Спасибо, что заглянула!

       

  7. Классная статья, с  интересом и удовольствием прочитала.

  8. Да, будем надеяться, нам такая информация не потребуется, но вообще этот опыт с удалением записей наглядно показывает еще раз, что чаще всего все-таки не стоит возиться со всем вручную, потому что есть намного более эффективные способы достичь желаемого результата. Так что стоит только поискать и воспользоваться ими.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

 Ясогласен с политикой конфиденциальности сайта и пользовательским соглашением