SQL-запросы для WordPress

WordPress хранит информацию в базе данных MySQL. Некоторые запросы удобны для решения типовых задач.

Прежде чем вносить изменения, сделайте резервное копирование базы данных. Например, можно использовать плагин WordPress Databse Backup.

Кроме стандартных инструментов phpMyAdmin существует специальный плагин для запросов к базе WordPres - SQL Executioner — WordPress Plugins

Идентифицируем неиспользуемые теги

Если вы проводили удаление старых записей, то старые теги будут оставаться в базе данных и выводиться в облако тегов, хотя для них не будет записей. Данный запрос позволяет определить, какие теги не используются.


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;

Пакетное удаление ревизий записей

Ревизии записей могут быть весьма полезными, но они существенно увеличивают размер базы MySQL. Можно удалять ревизии записей вручную, но значительно быстрее будет использовать запрос SQL.


DELETE FROM wp_posts WHERE post_type = "revision";

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

При установке WordPress по умолчанию создается пользователь с именем Admin. Изменение имени пользователя по умолчанию добавит панели инструментов дополнительный уровень безопасности.

Изменяем ‘YourNewUsername‘ на то, что нужно:


UPDATE wp_users SET user_login = 'YourNewUsername' WHERE user_login = 'Admin';

Переустанавливаем пароль вручную

Если вы единственный пользователь вашего блога WordPress и имя пользователя admin, то можно изменить пароль с помощью запроса SQL. Нужно заменить PASSWORD на новый пароль:


UPDATE `wordpress`.`wp_users` SET `user_pass` = MD5('PASSWORD') WHERE `wp_users`.`user_login` =`admin` LIMIT 1;

Добавляем произвольное поле ко всем записям и страницам

Данный запрос добавить произвольное поле и к записям и к страницам в базе данных WordPress. Вам нужно заменить ‘UniversalCutomField‘ на реальное имя поля, а ‘MyValue‘ - на значение поля.


INSERT INTO wp_postmeta (post_id, meta_key, meta_value)
SELECT ID AS post_id, 'UniversalCustomField'
AS meta_key 'MyValue AS meta_value FROM wp_posts
WHERE ID NOT IN (SELECT post_id FROM wp_postmeta WHERE meta_key = 'UniversalCustomField');

Если нужно вставить произвольное поле только в записи, используйте запрос:


INSERT INTO wp_postmeta (post_id, meta_key, meta_value)
SELECT ID AS post_id, 'UniversalCustomField'
AS meta_key 'MyValue AS meta_value
FROM wp_posts WHERE ID NOT IN
(SELECT post_id FROM wp_postmeta WHERE meta_key = 'UniversalCustomField')
`` AND post_type = 'post';

А для страниц используем данный запрос:


INSERT INTO wp_postmeta (post_id, meta_key, meta_value)
SELECT ID AS post_id, 'UniversalCustomField'
AS meta_key 'MyValue AS meta_value
FROM wp_posts WHERE ID NOT IN
(SELECT post_id FROM wp_postmeta WHERE meta_key = 'UniversalCustomField')
AND `post_type` = 'page';

Удаляем мета данные

Когда вы устанавливаете плагин, то он использует мета данные для хранения различной информации. После удаления плагина мета данные остаются в таблице post_meta. Для использования следующего запроса нужно изменить ‘YourMetaKey‘ на значение реального ключа.


DELETE FROM wp_postmeta WHERE meta_key = 'YourMetaKey';

Пакетное удаление спам-комментариев

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


DELETE FROM wp_comments WHERE wp_comments.comment_approved = 'spam';

Пакетное удаление всех отклоненных комментариев

Данный запрос удалит из базы данных все отклоненные комментарии и оставит одобренные:


DELETE FROM wp_comments WHERE comment_approved = 0;

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

В данном запросе с помощью изменения значения для comment_status изменяем возможность комментировать записи (open - можно комментировать, closed - комментировать нельзя, registered_only - комментировать могут только зарегистрированные пользователи) опубликованные ранее определенной даты ( в примере используется 2010-01-01).


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

Получить список электронных адресов комментаторов

Параметр DISTINCT позволит не повторять адреса, которые попадаются несколько раз.


SELECT DISTINCT comment_author_email FROM wp_comments;

Замена электронных адресов у комментаторов

Заменяем один адрес на другой.


UPDATE wp_comments SET comment_author_email = REPLACE( comment_author_email, 'old-email@address.com', 'new-email@address.com' );

Замена веб-адресов у комментаторов

Если вам не нравятся, что комментаторы оставляют ссылку на свой сайт, то замените её.


UPDATE wp_comments SET comment_author_url = REPLACE( comment_author_url, 'http://oldurl.com', 'http://newurl.com' );

Удаляем комментарии с определенного URL

Если спам-комментарии содержат одинаковый URL, то данный запрос поможет удалить их все сразу. В качестве параметра для удаления используется строка, которая размещается между двумя символами ‘%’. Любой адрес URL, который содержит данную строку будет удален.


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

Разрешаем и запрещаем пингбек и трэкбек

В данном запросе также можно использовать значение для comment_status из списка open, closed, и registered_only (смотри описание предыдущего запроса).

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


UPDATE wp_posts SET ping_status = 'open';

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


UPDATE wp_posts SET ping_status = 'closed';

Разрешаем/запрещаем пингбек и трекбек записей до определенной даты

В данном запросе задаем статус ping_status либо open (разрешить) либо closed (запретить), а также дату (в примере используется 2010-01-01).


UPDATE wp_posts SET ping_status = 'closed' WHERE post_date < '2010-01-01' AND post_status = 'publish';

Выбираем и удаляем записи, которые старше ‘X’ дней

Для выбора записей, которые старше ‘X’ дней нужно использовать данный запрос (замените Х на нужное количество дней):


SELECT * FROM `wp_posts`
WHERE `post_type` = 'post'
AND DATEDIFF(NOW(), `post_date`) > X

Для удаления записей, которые старше ‘X’ дней нужно использовать данный запрос (замените Х на нужное количество дней):


DELETE FROM `wp_posts`
WHERE `post_type` = 'post'
AND DATEDIFF(NOW(), `post_date`) > X

Удаляем ненужный короткий код

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


UPDATE wp_post SET post_content = replace(post_content, '[tweet]', '' ) ;

Делаем запись страницей и наоборот

Сделать запись страницей очень просто:


UPDATE wp_posts SET post_type = 'page' WHERE post_type = 'post'

А если нужно выполнять обратную задачу, используем запрос:


UPDATE wp_posts SET post_type = 'post' WHERE post_type = 'page'

Изменяем автора для всех записей

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


SELECT ID, display_name FROM wp_users;

Как только вы получите ID старого и нового автора можно производить замену. Нужно заменить ‘NEW_AUTHOR_ID‘ на ID нового автора, а ‘OLD_AUTHOR_ID‘ на ID старого автора.


UPDATE wp_posts SET post_author=NEW_AUTHOR_ID WHERE post_author=OLD_AUTHOR_ID;

Деактивируем или активируем все плагины WordPress

Если вы вдруг оказываетесь перед "белым экраном смерти" и не можете войти в панель инструментов WordPress после активации нового плагина, то данный запрос окажет вам существенную помощь. Он деактивирует все плагины, что позволит войти в систему.


UPDATE wp_options SET option_value = 'a:0:{}' WHERE option_name = 'active_plugins';

Изменяем адрес URL сайта WordPress

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

Нужно заменить ‘http://www.old-site.com‘ на старый адрес URL, а ‘http://www.new-site.com’ - на новый адрес URL. Первая команда:


UPDATE wp_options SET option_value = replace(option_value, 'http://www.old-site.com', 'http://www.new-site.com') WHERE option_name = 'home' OR option_name = 'siteurl';

Затем нужно изменить адрес URL в таблице wp_posts:


UPDATE wp_posts SET guid = replace(guid, 'http://www.old-site.com','http://www.new-site.com);

И в завершение нужно провести поиск по содержанию ваших заметок, чтобы убедиться, что новый адресс URL не смешивается со старым:


UPDATE wp_posts SET post_content = replace(post_content, ' http://www.ancien-site.com ', ' http://www.nouveau-site.com ');

Поиск и замена содержания записи

Для поиска и замены содержания записи используйте следующий запрос. Замените ‘OriginalText‘ текстом, который надо найти, а ‘ReplacedText‘ - новым текстом.


UPDATE wp_posts SET `post_content`
= REPLACE (`post_content`,
'OriginalText',
'ReplacedText');

Изменяем адрес изображений

Если нужно поменять путь к вашим изображениям, вы можете использовать следующий запрос SQL (замените http://www.myoldurl.com на старый адрес папки с изображениями, а http://www.mynewurl.com - на новый адрес):


UPDATE wp_posts
SET post_content = REPLACE (post_content, 'src=”http://www.myoldurl.com', 'src=”http://www.mynewurl.com');
Реклама