Высоков.ру

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

sql query

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

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

Для SQL-запросов часто использую возможности плагина WP-DBManager (автор Lester ‘GaMerZ’ Chan). В меню плагина есть отельный пункт, который так и называется: “RunSQLQuery”:

database plugin run sql query

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

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

Например, в плагине GD Press Tools (автор Milan Petrovic) так примерно выглядит опция смены имени администратора:

change username

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

Некоторые SQL-запросы используются часто, другие – реже. Но в памяти держать все «формулы» сложно, если не пользуешься имя каждый день. Поэтому приходится каждый раз искать, как именно делается тот или иной запрос к базе данных (самые используемые, конечно, записал себе в «блокнотик»).

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

Изменение ID родительского комментария

Иногда пользователи некорректно постят древовидные комментарии: отвечая на комментарий, не используют кнопку «ответить». В итоге получается, что ответ теряется. Чтобы исправить эту ситуацию, можно изменить ID родительского комментария, чтобы правильно расположить новый комментарий в дереве:

UPDATE wp_comments SET comment_parent=21 WHERE comment_ID=97

21 — родительский комментарий, 97 — комментарий который нужно поправить.

Замена текста в записях

Один из самых используемых запросов к базе данных моих сайтов. Например, хочу во всех статьях поменять «Вася» на «Василий»:

UPDATE wp_posts SET post_content = REPLACE (post_content, ‘Вася’, ‘Василий’)

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

Закрыть комментирование в старых постах

Чтобы закрыть возможность оставлять комментарии для старых постов, допустим, опубликованных до 31 декабря 2012 года, можно использовать такой SQL запрос:

UPDATE wp_posts SET comment_status = ‘closed’ WHERE post_date < ‘2012-12-31’ AND post_status = ‘publish’

Хотя в этом случае, я просто закрываю комментарии старых постов, указывая количество дней в настройках: «Настройки» — «Обсуждения» — «Автоматически закрывать обсуждение статей старше [количество] дней».

Управление логином и/или паролем

Изменить логин пароль, например, администратора можно с помощью SQL-запроса.

Смена пароля

Используется кодировка MD5, так как пароль в базе данных храниться в зашифрованном виде.

UPDATE wp_users SET user_pass = MD5(‘newpass’) WHERE user_login = ‘admin’

Новый пароль “newpass” для пользователя с логином “admin”.

Такой запрос нужно сделать, если забыт логин (но IDадмина, как правило, не меняется и равен единице):

UPDATE wp_users SET user_pass = MD5(‘newpass’) WHERE ID=1;

Смена логина

Как уже говорилось, логин можно поменять, хотя при регистрации WordPressутверждает обратное. Сделать это можно простым SQL-запросом к базе данных сайта:

UPDATE wp_users SET user_login=’newlogin’ WHERE user_login=’admin’

working girl

Это всё общеизвестно, а далее постараюсь записывать SQL-запросы, которые использовал для каких-то определенных целей. Вот сейчас, например, мне нужно составить запрос к базе данных, который бы изменил статус записей «черновик» на «личные записи».

Смена записей в черновике на личные записи

В принципе, здесь всё просто. За состояние записи отвечает колонка post_statusв таблице wp_post, черновики – draft, личные записи – private. Поэтому SQL-запрос будет примерно такой:

UPDATE wp_posts SET post_status=’private’ WHERE post_status=’draft’;

Перед изменением всех черновиков в личные сообщения не мешало бы удалить все ревизии и другие записи, которые также считаются черновыми. Хотя… не надо: «авточерновики» отмечаются как auto-draft.

Удаление всех комментариев с определенным словом в заголовке

При сохранении постов дневника Liveinternet сохраняются все записи, и открытые, и закрытые. Удаление закрытых записей в дневнике – сложное дело, потому что к ним привязаны комментарии и много чего. Поэтому я попросил админа добавить к началу заголовка всех закрытых записей ###. И теперь, после импорта постов в WordPress, можно с помощью SQL-запроса удалить все записи в заголовке которых есть определенное слово («###» или что-то другое).

DELETE FROM wp_posts WHERE post_title LIKE ‘%###%’

Здесь: DELETE – удалить, FROM wp_posts – из таблицы постов, WHERE – условие удаления, post_title LIKE – если в заголовке поста есть условие (встречается выражение ###).

удаление записей заголовок

Удаление всех меток WordPress

При переносе записей из дневника Liveinternet в блог WordPress все метки и рубрики превращаются в новые рубрики. Так как у меня там был полный бедлам, то решил удалить все метки вообще. Их импортировалось больше 100 страниц, поэтому сделаем всё с помощью SQL-запроса. Кстати, интересно, что по запросу «удалить все метки вордпресс» покажут инструкции, которые… все метки не удаляют.

Чтобы удалить ВООБЩЕ ВСЕ метки, попробует такой запрос к базе данных:

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)

Кстати, если указать количество записей с меткой, то можно удалить, например, все метки, которые не используются ни в каких метках (в таблице COUNT = 0) – нужно в условии, в конце запроса, написать так:

WHERE (c.taxonomy = ‘post_tag’ AND c.COUNT = 0)

Замена адреса почты в комментариях с помощью SQL-запроса

UPDATE wp_comments SET comment_author_email = REPLACE (comment_author_email, ’email1′, ’email2′)

Похоже на замену текста в постах, описанную выше.

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

UPDATE wp_comments SET comment_author_email = ’email@test.site’

SQL-запрос при использовании «любых символов»

Ситуация такая: нужно найти на сайте посты с картинками, размещенными на Радикале. Но Радикал загружает изображения на разные поддомены (i002.radikal и др. ) и – вторая проблема — не нужны результаты поиска со ссылками на сайт, а не на картинки. Вместо любого знака ставим нижнее подчеркивание и ищем так: src=___.rаdіkаl.ru

Один коммент. к записи «Полезные SQL-запросы для блога на WordPress»
  1. Папаша:

    Спасибо!

Комментировать