20 самых необходимых SQL-запросов

Я недавно описывал плагин WordPress SQL Executioner, который позволяет выполнять SQL-запросы прямо из админки блога. Теперь же я приведу вам примеры самых нужных SQL-запросов для WordPress, которые могут очень сильно облегчить вам жизнь в случае каких-либо проблем.

  1. Смена пароля

Забыли свой пароль администратора в блоге? Не беда, его легко можно сменить следующим запросом:

UPDATE wp_users SET user_pass = MD5('12345') WHERE ID=1;

Паролем тут будет “12345”. Можно сменить пароль и для любого другого юзера в блоге, достаточно поменять в запросе ID, который у админа всегда равен 1. Можно также использовать запрос и с указанием конкретного логина:

UPDATE wp_users SET user_pass = MD5('12345') WHERE user_login = 'admin';
  1. Смена логина администратора

По умолчанию в WordPress нельзя изменить логин администратора, который всегда будет “admin“. Это не слишком правильно с точки зрения безопасности, так как дает возможность злоумышленникам перебирать пароли для известного им имени администратора. Изменить логин админа можно запросом:

UPDATE wp_users SET user_login = 'test' WHERE user_login = 'admin';

Где “test” это новый логин администратора блога.

  1. Смена урлов для WordPress и сайта

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

UPDATE wp_options SET option_value = 'http://www.testwp.ru/' WHERE option_name = 'home' OR option_name = 'siteurl';

Где ‘http://www.testwp.ru/‘ это актуальный урл вашего сайта.

  1. Удаление спам-комментариев

Многим лениво править файлы движка, чтобы использовать мою защиту от спама. Ведь Akismet сейчас ловит почти весь приходящий спам и мало кого радует перспектива применять хак при выходе каждой новой версии WordPress. В результате у блогеров скапливаются тысячи спам-комментариев, очищать которые вручную гиблое дело. Маленький запрос удалит все комментарии, помеченные в блоге как спам:

DELETE FROM wp_comments WHERE comment_approved = 0
  1. Изменение GUID

При смене домена у сайта необходимо поменять значение GUID (globally unique identifier) в таблице wp_posts. Простой смены адреса сайта и WordPress в настройках блога недостаточно! GUID необходимо менять даже при переезде с localhost к хостеру.

UPDATE wp_posts SET guid = REPLACE (guid, 'http://www.oldblog.ru', 'http://www.newblog.ru');

Формально у вас все будет работать и без этого запроса, но смена GUID необходима, чтобы WordPress мог правильно перенаправлять с неправильных урлов записей на правильные.

  1. Изменение URL в записях

Таким запросом можно поменять все ссылки в ваших записях на корректные.

UPDATE wp_posts SET post_content = REPLACE (post_content, 'http://www.oldblog.ru', 'http://www.newblog.ru');

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

  1. Изменение автора записей

Чтобы изменить авторство записей с одного пользователя на другого используйте запрос:

UPDATE wp_posts SET post_author=New_Author_ID WHERE post_author=Old_Author_ID;

Где New_Author_ID это ID нового автора, а Old_Author_ID это ID старого автора.

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

Ревизии вещь хорошая, но очень уж они быстро забивают базу данных своими копиями. Чтобы разом прибить все ревизии используйте запрос:

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'

Данный запрос не только удалит ненужные ревизии, но и всю meta-информацию, которая к ним привязана.

  1. Удаление лишних Meta

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

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

Где your-meta-key это и есть удаляемый meta-ключ. Например, плагин Another WordPress Meta Plugin хранит свою информацию в meta-ключе под названием “description“. При удалении этого плагина вся введенная информация остается в базе данных и удалить ее можно запросом:

DELETE FROM wp_postmeta WHERE meta_key = 'description';
  1. Вывод неиспользуемых Meta

В продолжение запроса удаления ненужных meta. Данный запрос выведет все неиспользуемые meta-ключи в вашем блоге.

SELECT *
FROM wp_postmeta pm
LEFT JOIN wp_posts wp ON wp.ID = pm.post_id
WHERE wp.ID IS NULL

Только вот небольшая оговорка – это будет список тех meta, которые не содержат информации. Если вы пользовались плагином, вводили информацию, а потом удалили плагин, то его meta-ключи тут выведены не будут.

  1. Собираем Email’ы комментаторов

Можно собрать базу имейлов из комментаторов вашего блога:

SELECT DISTINCT comment_author_email FROM wp_comments;

Таким образом, вы получите список имейлов ваших комментаторов (без дубликатов). Можно использовать в качестве базы для новостных рассылок заинтересованным посетителям. Правда, пользоваться такой базой надо крайне осторожно, люди не хотят получать лишний спам с каждого блога, где они оставили когда-то свой комментарий.

  1. Удаление всех пингбеков

Иногда количество пингбеков слишком велико, их можно удалить все сразу:

DELETE FROM wp_comments WHERE comment_type = 'pingback';

  1. Вывод неиспользуемых тегов

При удалении записи в блоге удаляется только сама запись. Теги же переходят в разряд неиспользуемых (если они были присвоены только этой одной удаляемой записи). Вывести список неиспользуемых тегов можно запросом:

SELECT * FROM wp_terms wt INNER JOIN wp_term_taxonomy wtt ON wt.term_id=wtt.term_id WHERE wtt.taxonomy='post_tag' AND wtt.COUNT=0;

Оставлять такие неиспользуемые теги или удалять решать только вам.

  1. Деактивация всех плагинов сразу

Иногда при установке какого-либо плагина может возникнуть ситуация, при которой вы уже не можете войти в админку блога. Удалить некорректный плагин можно по ftp, а можно просто деактивировать все плагины, войти в админку и уже там удалить нужный плагин:

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

  1. Удаление всех тегов

Уж не знаю зачем, но возможно вам понадобится удалить все теги сразу. Для этого используйте запрос:

DELETE a,b,c
FROM
    wp_terms AS a
    LEFT JOIN wp_term_taxonomy AS c ON a.term_id = c.term_id
    LEFT JOIN wp_term_relationships AS b ON b.term_taxonomy_id = c.term_taxonomy_id
WHERE (
    c.taxonomy = 'post_tag' AND
    c.COUNT = 0
    )
  1. Закрытие комментирования старых записей

На буржуйских сайтах часто рекомендуют закрывать комментарии ко всем старым записям, чтобы избежать ненужного спама. Для этого используйте запрос:

UPDATE wp_posts SET comment_status = 'closed' WHERE post_date < '2011-01-01' AND post_status = 'publish';

Комментирование будет закрыто для всех записей, опубликованных раньше даты “2011-01-01“. Повторюсь опять, проще не закрывать комментирование, а закрыть саму возможность автоматического спама.

  1. Изменение урла сайта комментатора

Данным кодом можно изменить ссылку на домашний сайт комментатора:

UPDATE wp_comments SET comment_author_url = REPLACE( comment_author_url, 'http://www.oldblog.ru', 'http://www.newblog.ru' );

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

  1. Удаление комментариев по маске

Можно удалить комментарии со ссылками, содержащими определенное стоп-слово:

DELETE FROM wp_comments WHERE comment_author_url LIKE "%porno%" ;

При этом будут удалены все комментарии, у которых в качестве ссылки на домашний сайт комментатора указаны урлы со словом “porno”.

  1. Частные случаи замены текста

Замену текста в базе можно использовать совершенно для разных вещей. Например, если вы оформляли внешние ссылки в вашем блоге через rel=”nofollow”, то можно автозаменой сделать все эти ссылки, открываемыми в новом окне браузера:

UPDATE wp_posts
SET post_content = REPLACE (post_content, 'rel="nofollow"', 'target="_blank" rel="nofollow"')

А можно наоборот, сделать все открываемые в новом окне браузера ссылки закрытыми через rel=”nofollow”:

UPDATE wp_posts
SET post_content = REPLACE (post_content, 'target="_blank"', 'target="_blank" rel="nofollow"')

  1. Управление комментированием

Открыть все записи для комментирования:

UPDATE wp_posts SET comment_status = 'open';

Закрыть все записи для комментирования:

UPDATE wp_posts SET comment_status = 'closed';

Открыть комментирование только для зарегистрированных пользователей:

UPDATE wp_posts SET comment_status = 'registered_only';

На этом пока все. Надеюсь, что эти SQL-запросы вам помогут. Источник

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

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

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.