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

Изменение параметров CMS Wordpress с помощью прямых запросов к БД: замена пользователя Admin, сброс пароля, изменение путей, URL и т.п.

Wordpress работает на MySQL базах данных. Вся информация (сообщения, комментарии, категории, теги, настройки) хранятся в базе данных. 

Предполагается, что Вы установили WordPress из Панели управления Plesk.

Прежде чем начать, обязательно сделайте резервное копирование Вашей БД. Это хорошее правило - делать бекапы перед изменениями на сайте. Если что-то пойдет не так - Вы всегда можете все исправить.

Для резервного копирования Вы можете воспользоваться плагинами: WP-DB-Backup или WP-DBManager. Достаточно скачать их и активировать через административную панель WP. После этого Вы сможете в несколько кликов сделать копию Вашей БД.

Можно также все сделать вручную. Для этого Вам необходимо выполнить следующие шаги:

1. Зайти в phpMyAdmin.
2. Выбрать необходимую БД.
3. Нажать на кнопку "Экспорт" в верхнем меню навигации.
4. Выбрать все или несколько таблиц.
5. Выбрать SQL для экспорта с расширением .sql.
6. Выбрать галочку "Сохранить как файл".
7. Выбрать тип сжатия gzipp (для меньшего размера).
8. Нажать кнопку "Вперед" и сохранить нужный файл.

Способ выполнения SQL запросов для Wordpress

Наиболее простой способ выполнять эти запросы - это использовать phpMyAdmin. Также существует плагин для WP - WordPress SQL Executioner - данный плагин позволяет выполнять запросы из админки сайта.

Для использования phpMyAdmin выполните следующие шаги:

1. Зайдите в phpMyAdmin и выберите необходимую БД
2. Выберите вкладку SQL

Вы увидите следующую картину:

SQL-редактор

 

Небольшое примечание: при установке WP на сайт Вы можете указать приставку таблиц в БД. В примерах ниже используется стандартная приставка "wp_" и именно так создаются таблицы при автоматической установке WordPress из Панели. Если Вы использовали другую - тогда Вам необходимо использовать ее.

Изменить URL сайта и URL главной страницы

Wordpress сохраняет абсолютный путь к сайту и главной страницы в БД. Поэтому, если Вы захотите перенести Ваш блог с локального компьютера на сервер, Ваш сайт работать не будет. Все потому что абсолютный путь будет вести на localhost. Вам необходимо это изменить.

Решение

UPDATE wp_options SET option_value = replace(option_value,
 'http://www.СТАРЫЙУРЛ.com', 'http://www.НОВЫЙУРЛ.com') 
WHERE option_name = 'home' OR option_name = 'siteurl';

Изменение GUID

После миграции блога с локального компьютера или другого домена на новый необходимо изменить УРЛы в поле GUID таблицы wp_posts. Это также важно для правильной работы сайта.

Решение

UPDATE wp_posts SET guid = REPLACE (guid, 'http://www.СТАРЫЙУРЛ.com', 
'http://www.НОВЫЙУРЛ.com');

Изменить URL в контенте

Wordpress использует абсолютный путь в ссылках при сохранении их в БД. В содержании каждого сообщения все УРЛы сохраняются по старому. Это необходимо также изменить.

Решение

UPDATE wp_posts SET post_content = REPLACE 
(post_content, 'http://www.СТАРЫЙУРЛ.com', 'http://www.НОВЫЙУРЛ.com');

Изменить путь к картинкам

Также не стоить забывать про пути к картинкам после переезда.

Решение

UPDATE wp_posts SET post_content = REPLACE (post_content, 
'src="http://www.СТАРЫЙУРЛ.com', 'src="http://www.НОВЫЙУРЛ.com');

Также необходимо не забывать про GUID к прикрепленным файлам

UPDATE wp_posts SET  guid = REPLACE (guid, 
'http://www.СТАРЫЙУРЛ.com', 'http://www.НОВЫЙУРЛ.com') 
WHERE post_type = 'attachment';

Меняем Meta информацию сообщений

Тут все аналогично с изменением URL.

Решение:

UPDATE wp_postmeta SET meta_value = REPLACE (meta_value, 
'http://www.СТАРЫЙУРЛ.com','http://www.НОВЫЙУРЛ.com');

Изменение пользователя "Admin" по умолчанию

При установке Wordpress автоматически буден создать 1 пользователь с именем "Admin". Изменение этого пользователя на другое произвольное имя усилит безопасность Вашего блога, так как хакеру, кроме пароля, необходимо будет найти и имя пользователя.

UPDATE wp_users SET user_login = 'НОВОЕ ИМЯ' WHERE user_login = 'Admin';

Сброс пароля WordPress

Утеряный пароль можно задать с помощью следующих строк:

UPDATE wp_users SET user_pass = MD5( 'НОВЫЙ ПАРОЛЬ' ) WHERE user_login = 'ВАШ ЛОГИН';

Присвоить все статьи автора "А" автору "Б"

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

Для начала Вам необходимо получить ID обоих авторов (на странице Автор и Пользователь в админке). Нажмите на имя автора для просмотра его профиля. В строке адреса найдите "user_id". Это то что мы ищем.

Решение:

UPDATE wp_posts SET post_author = 'НОВЫЙ АВТОР-id' WHERE post_author = 'СТАРЫЙ АВТОР-id';

Удаление Ревизий

При внесении изменений в статью в WP создается множество ревизий (копий). Это бессмысленная трата ресурсов, так как данные ревизии засоряют нашу БД. Если на Вашем сайте тысячи заметок, Ваша БД может достигать гигантских размеров. Это может существенно снизить скорость загрузки Вашего сайта.

Решение:

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'

Удаление POST META

Установка или удаление плагинов - это обычное явления в WP. Некоторые плагины оставляют записи в таблице post_meta и после их удаления, записи остаются. Выполните следующий запрос и все лишнее будет удалено.

Решение:

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

Экспорт всех почтовых адресов из комментариев (без дубликатов)

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

Решение:

SELECT DISTINCT comment_author_email FROM wp_comments;

После получения результата - нажмите на export.

Удаление всех пингбеков (pingback)

Популярные статьи получают множество пингбеков. Когда это происходит, Ваша БД растет. Для ее уменьшения можете удалить пингбеки.

Решение:

DELETE FROM wp_comments WHERE comment_type = 'pingback';

Удаление всех СПАМ комментариев

Если у Вас накопилось очень много СПАМ комментариев, то бывает очень трудно избавится от них из админки. С помощью простого запроса - это можно сделать легче некуда.

DELETE FROM wp_comments WHERE comment_approved = 'spam';

spam - все СПАМ комментарии
0 - комментарии на модерировании
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;

Еще раз обращаем Ваше внимание - прежде чем начать модификацию БД, обязательно сделайте резервное копирование Вашей БД.

Вам также может помочь