Intereting Posts
Чистая установка – изменение постоянных ссылок в двадцать четыре дает 404 Используйте разные категории для персонализированного сообщения Отображать детей и внуков типа персонализированного сообщения проблема кодирования символов в пользовательском шаблоне Сообщение пустое, когда я нажимаю на ссылку Отключить страницы авторов для определенных пользователей Удалить из массива в контуре WP_Query Пользовательские таблицы или настраиваемые поля? Как включить PHP-сгенерированный javascript? Большое нежелательное пространство в нижней части сообщений в блоге Как перечислить все заголовки сообщений на определенной странице? Как работает дочерняя тема functions.php с родительской темой functions.php? Это похоже на CSS? Какой основной файл отвечает за гравитары? URL-адрес настраиваемого типа сообщения должен быть / {category-name} / {custom-post-type-title} Расширение xml rpc – лучшая практика

Как удалить ВСЕ комментарии из определенной категории в базе данных WordPress?

Я пытаюсь удалить все комментарии из сообщений в определенной категории в базе данных WordPress.

База данных WordPress довольно сложна, поэтому это должно быть, вероятно, некоторое соединение wp_posts , wp_comments и wp_term_relationships поскольку категории не сохраняются ни с сообщениями, ни с комментариями.

Как я могу это сделать? Я изо всех сил пытаюсь найти запрос.

База данных wordpress выглядит довольно прямолинейно и очень хорошо документирована:

http://codex.wordpress.org/Database_Description

Мне кажется, что вся информация о категории хранится в таблице wp_term_relationships . Поэтому вы должны выбрать из таблицы комментариев, соединить его с таблицей posts, а затем с таблицей term_relationships, чтобы получить категорию для каждого комментария.

Что-то вроде:

 SELECT * FROM wp_comments WHERE comment_post_ID IN ( SELECT c.object_id FROM wp_terms a, wp_term_taxonomy b, wp_term_relationships c WHERE a.name = 'my_category_slug' AND b.term_id = a.term_id AND b.taxonomy = 'category' AND c.term_taxonomy_id = b.term_taxonomy_id ) 

Я могу предоставить вам команду delete из таблиц join . Затем вам нужно добавить соответствующие таблицы и столбцы, хотя

 -- using LEFT JOIN DELETE x.* FROM table1 AS x LEFT JOIN table2 AS y ON y.id = x.id -- using IN: DELETE FROM table1 AS x WHERE id IN ( SELECT id FROM table2 ) 

Обычно left join быстрее, чем in . Глядя на этот ERD , вы также должны следить за любыми отношениями с foreign key если delete on cascade не будет.