2014-11-18 2 views
4

У меня есть следующий SQL-запрос, который позволяет извлекать и удалять все сообщения пользовательского типа сообщений старше X дней.Wordpress SQL Удалить пользовательские типы сообщений и мета

SELECT * FROM `wp_posts` 
WHERE `post_type` = ‘clothing’ 
AND DATEDIFF(NOW(), `post_date`) > 2 

DELETE * FROM `wp_posts` 
WHERE `post_type` = ‘clothing’ 
AND DATEDIFF(NOW(), `post_date`) > 2 

Однако от того, что я прочитал в Интернете, это, кажется, что код выше на самом деле не удалять метаинформацию сообщения, так что я все еще есть куча оставшихся данных.

Мой вопрос в том, как я могу изменить этот код, чтобы вся связанная метаинформация также удалялась из удаленных сообщений?

Thanks

+0

Я использовал текстовый редактор Mac OS с режимом обычного текста – user2028856

+0

В этом случае снимите флажок «Умные цитаты» в разделе «Редактирование»> «Замены»> «Умные кавычки» или где бы это было в эти дни. – Strawberry

ответ

10

Вы можете удалить данные, присоединив их к таблицам. В WP wp_posts и wp_postmeta связаны с post_id в таблице wp_postmeta. Используя нижеприведенный запрос, он удаляется из обеих таблиц. Однако есть и другие варианты, а то вы можете запустить триггер после удаления на wp_posts, чтобы удалить данные из связанной таблицы или внешнего ключ с по удалению каскада

delete 
p,pm 
from wp_posts p 
join wp_postmeta pm on pm.post_id = p.id 
where p.post_type = 'clothing' 
and DATEDIFF(NOW(), p.post_date) > 2 
+0

Я пробовал этот запрос, но по какой-то причине PHPMyAdmin сказал мне, что p, pm приводит к ошибке. Я заменил его *, и это сработало. Правильно ли это в этом случае? – user2028856

+0

Ошибка? p и pm - это просто имена псевдонимов и не должны давать ошибку здесь, это демонстрация http://sqlfiddle.com/#!2/507a38 –

+0

Прошу прощения, потому что я заменил delete на select. Это прекрасно работает :) – user2028856

Смежные вопросы