НЕ МОЛЧИ!!!    Сделай что-нибудь, чтобы остановить войну России в Украине.
...бойтесь людей равнодушных - именно с их молчаливого согласия происходят все самые ужасные преступления на свете.   ("Репортаж с петлёй на шее")

Примеры запросов к базе данных WordPress

Примеры полезных 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

В результате получим следующий результат.

Поля таблицы 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. И не ставьте в конце ссылок знак слеша.