Полезные SQL запросы для WordPress

WordPress как и большинство других CMS хранит все свои данные в базе данных MySQL. Именно там находятся все ваши записи, страницы, комментарии, теги, пользователи, пароли и много чего еще.

Для тех, кто хочет «повникать» в структуру БД WordPress и понять, что с чем связано, привожу схему.

wordpress mysql

Более детально об этом написано здесь: http://habrahabr.ru/post/233479/

Что бы вы понимал большинство плагинов цель которых справиться с рутинными действиями в один клик (например: удалить все теги, ревизии, комментарии и т.д) обычно могут обходиться всего одним запросом к БД.

Перед началом работы с базой данных следует сделать её дамп — на случай что что-то пойдет не так или нужно будет все вернуть обратно. Все действия я рекомендую делать в phpMyAdmin ну или в любом другом удобном Вам менеджере для работы с БД. Окно для вставки SQL-запросов в phpMyAdmin выглядит так:

phpmyadmin

По умолчанию WordPress использует префикс в БД «wp_» если вы назначили другой, то просто подкорректируйте нужный запрос к БД.

1. Удаление ревизий записей

При редактировании записи CMS сохраняет в базе данных как старую версию записи так и новую. Со временем база разрастается, что заметно понижает скорость работы сайта. Удалить все ревизии wordpress можно с помощью такого запроса:

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'

wp sql

2.Удаление всех комментариев помеченных как спам

DELETE FROM wp_comments WHERE comment_approved = 'spam';

3.Выборка почтовых адресов комментаторов

SELECT DISTINCT comment_author_email FROM wp_comments;

Этот запрос позволяет выбрать все почтовые адреса из комментариев. Удобно когда нужно сделать почтовую рассылку.

4. Сброс пароля администратора Wordpress

UPDATE wp_users SET user_pass = MD5( 'Новый_пароль' ) WHERE user_login = 'admin';

Стоит заметить, что если у вас другой логин, то нужно его вписать вместо admin.

5. Удаляем ненужные wp_postmeta

Большинство плагинов при активации создают в базе данных произвольные поля. При удалении плагина эти ненужные поля остаются и замедляют скорость работы БД. Чтобы удалить ненужные произвольные поля используйте запрос:

DELETE pm FROM wp_postmeta pm WHERE pm.meta_key = 'meta_name'

Где meta_name - название произвольного поля.

6. Переназначить все свои записи на другого автора.

Если вам с каких-то причин нужно переназначить большое количество статей на нового автора:

UPDATE wp_posts SET post_author = 'id нового автора' WHERE post_author = 'id старого автора';

id авторов вы можете посмотреть в таблице wp_users, или в строке браузера наведя на имя автора в панели администратора.

7. Отключение всех плагинов

Случалась у меня такая неприятная ситуация: «кривой» плагин при активации вешал движок так, что даже в админку нельзя было зайти. Вместо того чтобы удалять плагин из папки plugins можно просто деактивировать все плагины таким запросом:

UPDATE wp_options SET option_value = '' WHERE option_name = 'active_plugins'

8. Найти и заблокировать ip адреса злостных спамеров

В этом вам поможет такой SQL запрос:

SELECT   `comment_author_IP`, COUNT(*) AS amount 
FROM     `wp_comments`
WHERE    `comment_approved` = 'spam'
GROUP BY `comment_author_IP` 
HAVING    amount > 10
ORDER BY  amount DESC
LIMIT     0, 30

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

order allow,deny

deny from 127.0.0.1 -адрес 1

deny from 127.0.0.2 -адрес 2

............................

allow from all

9. Удалить комментарии с определённым url

Часто спамеры изощряются по-настоящему и постят свои комментарии с разными никнеймами, почтами, текстом ради того чтобы протолкнуть продвигаемую SEO-ссылку в поле url. Удалить все комментарии c одинаковым полем url можно с помощью такого запроса:

DELETE from wp_comments WHERE comment_author_url LIKE "%spamurl%";

Тут spamurl нужно заметить на нужный нам сайт.

10. Заменить часть контента во всех записях

Ситуация: Вы в некоторых своих статьях постили реферальную ссылку для привлечения партнеров в партнерскую программу. Записей на сайте очень много и нужно заменить старую ссылку на новую. В этом нам поможет такой запрос:

UPDATE wp_posts SET `post_content`
= REPLACE (`post_content`,
'Старая ссылка',
'Новая ссылка');

Естественно вместо ссылки может быть что угодно: текст, цифра, ссылка на картинку ну и так далее.

Если вы знаете, и главное используете какие-то полезные SQL- запросы для wordpress пишите их сюда в комментарии, и я с радостью добавлю их в статью.

Полезное

Я читаю

  • devaka.ru
  • megaindex.org
  • seoprofy.ua
  • webmasters.ru
  • тИЦ fakir.name
  • подписка