четверг, 4 февраля 2010 г.

13 полезных SQL-запросов к базе данных Wordpress

13 полезных SQL-запросов к базе данных Wordpress

Сейчас мы поговорим о наиболее полезных SQL-запросах к базе данных Wordpress. Эти запросы помогут вам сократить время, которое может быть затрачено на выполнение многих рутинных веще, как-то: смена имени автора для множества постов, смена какого-либо URL внутри поста и т.д.

Далее – шпаргалка из 13-ти наиболее полезных запросов.

1. Меняем значения Siteurl и Homeurl (необходимо при переезде на другой домен):

UPDATE wp_options SET option_value = replace(option_value, 'http://www.oldsiteurl.com', 'http://www.newsiteurl.com') WHERE option_name = 'home' OR option_name = 'siteurl';

2. Меняем значение GUID (необходимо все для того же):

UPDATE wp_posts SET guid = REPLACE (guid, 'http://www.oldsiteurl.com', 'http://www.newsiteurl.com');

3. Меняем значение URL внутри постов (без комментариев):

UPDATE wp_posts SET post_content = REPLACE (post_content, 'http://www.oldsiteurl.com', 'http://www.newsiteurl.com');

4. Меняем путь к картинкам (э… допустим, что вы перенесли все свои картинки в какую-нибудь CDN, типа Amazon CloudFront):

UPDATE wp_posts SET post_content = REPLACE (post_content, 'src="http://www.oldsiteurl.com', 'src="http://yourcdn.newsiteurl.com');

и

UPDATE wp_posts SET guid = REPLACE (guid, 'http://www.oldsiteurl.com', 'http://yourcdn.newsiteurl.com') WHERE post_type = 'attachment';

5. Обновляем метаинформацию постов (причины… те же, что у первых трех):

UPDATE wp_postmeta SET meta_value = REPLACE (meta_value, 'http://www.oldsiteurl.com','http://www.newsiteurl.com');

6. Меняем имя администратора по умолчанию (не всем же нравится просто «admin»):

UPDATE wp_users SET user_login = 'Your New Username' WHERE user_login = 'Admin';

7. Сбрасываем пароль (уже что-то полезное):

UPDATE wp_users SET user_pass = MD5( 'new_password' ) WHERE user_login = 'your-username';

8. Меняем автора поста с A на B:

UPDATE wp_posts SET post_author = 'new-author-id' WHERE post_author = 'old-author-id';

9. Удаляем старые версии постов:

DELETE a,b,c FROM wp_posts a
LEFT JOIN wp_term_relationships b ON (a.ID = b.object_id)
LEFT JOIN wp_postmeta c ON (a.ID = c.post_id)
WHERE a.post_type = 'revision';

10. Удаляем метаинформацию из поста (это нужно, например, чтоб удаленные плагины не засоряли БД и страницы своими останками):

DELETE FROM wp_postmeta WHERE meta_key = 'your-meta-key';

11. Делаем экспорт всех e-mail’ов наших любимых комментаторов без повторений:

SELECT DISTINCT comment_author_email FROM wp_comments;

12. Удаляем все пингбэки из комментариев:

DELETE FROM wp_comments WHERE comment_type = 'pingback';

13. Удаляем весь спам из комментариев:

DELETE FROM wp_comments WHERE comment_approved = 'spam';

14. Вычисляем неиспользуемые тэги (это либо бонус, либо авторы оригинальной статьи не умеют считать, либо что-то не так со мной):

SELECT * FROM wp_terms wt
INNER JOIN wp_term_taxonomy wtt ON wt.term_id=wtt.term_id
INNER JOIN wp_term_relationships wtr ON wtr.term_taxonomy_id=wtt.term_taxonomy_id
LEFT JOIN wp_posts wp ON wp.ID=wtr.object_id
WHERE taxonomy='post_tag'
AND ID IS null
AND NOT EXISTS(SELECT * From wp_terms wt2
INNER JOIN wp_term_taxonomy wtt2 ON wt2.term_id=wtt2.term_id WHERE wtt2.parent=wt.term_id) ORDER BY name;

Да, вы же не забыли сделать бэкап?!