Примеры полезных sql запросов к базе данных WordPress.
Оглавление
- Вступление
- Информация о базе данных
- Backup базы данных
- Изменение учетных данных пользователя
- SQL уборка базы данных
- Деактивация плагинов
- Переход на другой домен (Деактивация плагинов,Изменить URL в контенте,Изменить URL картинок)
Вступление
CMS WordPress давно уже выросла из своих коротких штанишек, когда ее называли исключительно системой для блогов. Сегодня на ней существует огромное количество сайтов самого разного направления и сложности. В немалой степени заслуга в этом принадлежит удачно спроектированной базе данных. Сегодня вам будут представлены некоторые интересные, а зачастую, и весьма полезные примеры sql запросов к базе данных WordPress. Но прежде, чем начать, маленькое, но очень важное примечание.
Примечание. Не ленитесь! Регулярно и перед любой более или менее серьезной работой с базой данных делайте резервные копии! Этим вы, как минимум, сохраните свое здоровье, избавите себя от потери N-го количества нервных клеток и, зачастую, от потери времени и денег.
На всякий случай упомяну, что предлагаемые запросы вы можете запускать используя, например, phpMyAdmin. Реквизиты для подключения к своей базе данных WordPress вы найдете в файле wp-config.php в корне сайта. Если же этот сервис недоступен, то существуют достаточно функциональные альтернативы в виде плагинов или скриптов, например, adminer. Можно также использовать методы встроенного объекта $wpdb, описание которого приведено здесь. Но в этом случае, для удобного отображения результатов надо будет немного поработать.
Информация о базе данных
Существует достаточно много средств получения информации из базы данных.
Вот, например, запрос о колонках таблицы, где «название_таблицы» заменяете на наименование нужной таблицы WordPress без кавычек.
Узнать названия таблиц базы данных вы можете по ссылке.
DESC "название_таблицы"
В качестве примера сделаем запрос к таблице wp_terms в phpMyAdmin или каком-либо его функциональном аналоге.
desc wp_terms
В результате получим следующий результат.
Считаем количество записей в таблице.
SELECT COUNT(1) FROM "название_таблицы"
Backup базы данных
Если вам требуется сделать полный backup, то это как раз тот случай, когда лучше не заниматься самодеятельностью, а использовать для этого плагин. Какой лучше, подсказывать не буду, тут многое зависит от цели — создавать копии по расписанию или вручную, хранить копии на сервере или в облаке и т.п.
Кроме того, никто не отменял все тот же phpMyAdmin, в нем можно сделать резервную копию отдельной таблицы и всей базы данных без знания SQL.
Изменение учетных данных пользователя
Изменяем логин.
UPDATE wp_users SET user_login = 'new_username' WHERE user_login = 'old_username';
Изменяем пароль.
Если не можете вспомнить пароль — не беда. Вам поможет следующий запрос к базе данных. Новый пароль нужно вводить в виде обычной не шифрованной строки, об остальном позаботится запрос.
UPDATE wp_users SET user_pass = MD5( 'new_password' ) WHERE user_login = 'ВАШ ЛОГИН';
SQL уборка базы данных
Как бы вы ни старались, ваша база данных постепенно засоряется записями, которые вам не нужны. Поэтому рекомендуется периодически производить в ней уборку. Знание нескольких полезных запросов, позволит делать такую уборку с ювелирной точностью, уничтожая только лишнее. Ну и не забываем, конечно, о backup’ах.
Управление ревизиями записей.
Когда вы создаете какой-либо пост или страницу, 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';
Удаление всех пингбеков.
Пингбек — это уведомление вашему сайту, что на него была установлена ссылка на каком-то web ресурсе. Оно сохраняется в базе данных и, как минимум, засоряет ее. Если вы у себя не используете пингбеки, то лучше их удалить таким запросом.
DELETE FROM wp_comments WHERE comment_type = 'pingback';
Удаление пустых меток.
Со временем в базе могут появиться пустые метки. Если они вам в будущем не понадобятся, их стоит удалить.
DELETE a,b,c FROM wp_terms a
LEFT JOIN wp_term_taxonomy c ON a.term_id = c.term_id
LEFT JOIN wp_term_relationships b ON b.term_taxonomy_id = c.term_taxonomy_id
WHERE (
c.taxonomy = 'post_tag' AND
c.count = 0
)
Деактивация плагинов
При возникновении критической ошибки в работе какого-то плагина сайт может перестать отображаться. Если источник ЧП неизвестен, оперативно восстановить отображение можно деактивацией всех плагинов. Это производится следующим запросом.
UPDATE wp_options SET option_value = '' WHERE option_name = 'active_plugins';
Затем, включая поочередно плагины в админке, можно определить виновника. Кроме этого можно выборочно деактивировать плагины изменив в таблице wp_options значение по ключу «active_plugins». Но это уже другая тема, ответ на которую найдете в Интернете.
Переход на другой домен
Ваши ссылки запоминаются в базе данных по абсолютному пути, поэтому при переезде на другой домен их надо откорректировать. Для этого надо проделать следующее.
Меняем значения ссылок в таблице wp_options.
UPDATE wp_options
SET option_value = replace(option_value, 'https://domain.com', 'https://newdomain.com')
WHERE option_name = 'home' OR option_name = 'siteurl';
Меняем все значения ссылок в своих постах на новые.
UPDATE wp_posts
SET post_content = replace(post_content, 'https://domain.com', 'https://newdomain.com');
Также меняем ссылки, если таковые есть, в таблице wp_postmeta.
UPDATE wp_postmeta SET meta_value = replace (meta_value, 'https://domain.com', 'https://newdomain.com');
Также на всякий случай меняем глобальный идентификатор guid, как указано у Миши. Этот идентификатор используется в RSS каналах, которыми редко кто пользуется. Но, тем не менее меняем.
При переезде сайта с одного домена на другой, идентификатор меняем только у вложений.
UPDATE wp_posts SET guid = replace (guid, 'https://domain.com', 'https://newdomain.com') WHERE post_type = 'attachment';
Если сайт переносится с локального сервера в Интернет, меняем все значения guid.
wp_posts SET guid = replace (guid, 'http://11.0.1.45','https://newdomain.com');
Также меняем значения ссылок на ваши ресурсы в комментариях.
UPDATE wp_comments SET comment_content = replace (comment_content, 'https://domain.com', 'https://newdomain.com');
UPDATE wp_comments SET comment_author_url = replace (comment_author_url, 'https://domain.com', 'https://newdomain.com');
Не забудьте указать в запросах требуемый протокол, http или https. И не ставьте в конце ссылок знак слеша.