База данных WordPress

WordPress за десять лет стал популярной CMS, для сайтов и блогов его выбирают как новички так и эксперты. Установка и работа с WordPress не требует особых знаний, но, бывают ситуации где некоторые знания базы данных требуется.

Оглавление:
  1. База данных WordPress
  2. wp_options
  3. wp_users, wp_usermeta
  4. wp_posts, wp_postmeta
  5. wp_terms, wp_term_relationships, wp_term_taxonomy
  6. wp_comments, wp_commentmeta
  7. wp_links
  8. SQL выручает
  9. Предостережение
  10. Изменить имена пользователя по умолчанию
  11. Изменить Ваш пароль WordPress
  12. Изменение автора записей
  13. Борьба со спамом в комментариях
  14. Удалить ревизии всех записей WordPress
  15. Обновление ссылок в записях
  16. Заключение

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

База данных WordPress

Таблицы в базе данных WordPress вид MySQL
Структура базы данных WordPress по умолчанию

Для входа в MySQL WordPress, в вашем терминале выполните команду:

mysql-u [username] -p-D [database_name]

После входа в MySQL WordPress, можно выполнить поиск в таблицах с помощью следующего действия:

show tables;

Что бы проверить структуру любой таблицы, выполните:

desc [название_таблицы];

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

Также, учитываю что префикс в вашей таблице “wp“. В случае, если Вы использовали другой префикс таблиц, замените “wp“ на ваш префикс в запросах с названием таблиц.

Я объясню предназначение таблиц WordPress в логическом порядке, а не в алфавитном, как это написано в большинстве учебников.

к меню ↑

wp_options

Таблица wp_options хранит все настройки сайта WordPress, название, описание и часовой пояс. Все ваши установки в админке хранятся в этой таблице.

к меню ↑

wp_users, wp_usermeta

Из названия можно догадаться что таблица wp_users хранит список всех зарегистрированных пользователей на вашем сайте WordPress. Она содержит базовую информацию пользователя; логин, пароль (зашифрованный), e-mail, время регистрации, отображаемое имя, роль и ключ активации (если требуется).

wp_usermeta хранит метаданные пользователей. Например, фамилия пользователя сохраняется в таблице wp_usermeta, а не в wp_users.

В таблице wp_usermeta есть два поля о которых нужно знать — meta_key и meta_value. Плагины могут хранить пользовательские мета-значения о пользователях в мета-таблице с использованием новых значений meta_key.

к меню ↑

wp_posts, wp_postmeta

Таблица wp_posts хранит все данные записей сайта. Все записи (страницы), и их исправления доступны в таблице wp_posts. Даже пункты меню хранятся в этой таблице.

Типы записей (страниц, пунктов меню или редакции) их отличия можно найти в таблице post_type. Дальше Вы увидите, как мы можем использовать запросы SQL в этой таблице с пользой.

wp_postmeta хранит метаданные о записи.

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

к меню ↑

wp_terms, wp_term_relationships, wp_term_taxonomy

Категории и теги для записей, страниц или ссылки хранятся в таблице wp_terms. Это та самая таблица которая содержит slug. Помогает SEO Google Bot идентифицировать URL-адреса.

wp_term_relationship эти ссылки как объекты (посты, страницы или ссылки), таблица связывает эти объекты.

wp_term_taxonomy таблица связывает между собой категории, ссылки и теги воедино, а также устанавливает очередность и вложенность категорий.

к меню ↑

wp_comments, wp_commentmeta

wp_comments хранит комментарии на записи и страницы. Эта таблица содержит также не одобренные комментарии и информацию об авторе комментария и вложенности комментариев.

wp_comments также содержит метаданные о комментарии.

Важно отметить, что если вы используете системы комментирования сторонних разработчиков, таких как Disqus ваши комментарии не будут сохранены в вашей базе данных WordPress.

к меню ↑

Таблица wp_links содержит информацию о пользовательских добавленных ссылках на ваш сайт. Она устарела, но ее можно включить снова с помощью плагина Links Manager.

Вот графическое представление данных, таблицы связанные друг с другом.

Таблицы WordPress Графическое представление
Графическое представление связанных таблиц WordPress

Источник: WordPress.org

к меню ↑

SQL выручает

SQL (Structured Query Language) — это язык программирования, который используется для управления данными в реляционных системах управления базами данных, таких как MySQL. Вы можете извлекать и манипулировать данными в таблицах баз данных с помощью SQL. Мы будем использовать некоторые запросы, которые помогут нам выполнить какие-то задачи, которые по другому очень сложно или невозможно сделать с WordPress dashboard.

к меню ↑

Предостережение

Полезных запросов SQL в интернете много, по 10 штук на каждом сайте, а то и больше. Я выполнил один из таких SQL запросов; удалить Trackbacks/Pinkbacks, они то удалились, но их количество отображалось. Это не хорошо!

перед изменениями в базе данных нужно всегда делать резервную копию базы данных WordPress!

Если вы планируете выполнить запросы SQL, которые я собираюсь обсудить, Вы должны знать, что изменения которые выполняют запросы, необратимы. Поэтому лучше использовать BEGIN, COMMIT и ROLLBACK.

Вы всегда можете вернуться к состоянию до команды с помощью ROLLBACK.

BEGIN;
// Ваш запрос SQL
ROLLBACK;

Если нужно, чтобы изменения остались, напишите COMMIT.

BEGIN;
// Ваш запрос SQL
COMMIT;

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

к меню ↑

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

WordPress не позволяет Вам изменить имя пользователя. Это можно сделать это через запрос SQL, выполнив простую команду.

UPDATE wp_users SET user_login = '[новое_имя_пользователя]' WHERE user_login = '[старое_имя_пользователя]';

По умолчанию имя администратора в WordPress “admin“, хакеры часто пытаются пользоваться этим именем. В целях безопасности рекомендуется изменить его на другое.

к меню ↑

Изменить Ваш пароль WordPress

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

UPDATE wp_users SET user_pass = MD5( '[новый_пароль]' ) WHERE user_login = '[имя пользователя]';

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

к меню ↑

Изменение автора записей

Если нужно изменить автора записей простым запросом SQL, сначала нужно проверить ID автора в таблице wp_users.

UPDATE wp_posts SET post_author = [new_author_id] WHERE post_author = [old_author_id];

Если нет времени проверять ID автора, Вы можете попробовать этот сложный запрос.

UPDATE
    wp_posts
SET
    post_author = (SELECT ID FROM wp_users WHERE user_login = '[new_author_login]')
WHERE
    post_author = (SELECT ID FROM wp_users WHERE user_login = '[old_author_login]');
к меню ↑

Борьба со спамом в комментариях

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

Удалить все комментарии со спамом одним запросом:

DELETE FROM wp_comments WHERE comment_approved = 'spam';

Если нужно узнать, где спам в комментариях и откуда, попробуйте этот запрос:

SELECT   comment_author_IP as ip_address, COUNT(*) AS count 
FROM     wp_comments
WHERE    comment_approved = 'spam'
GROUP BY ip_address 
ORDER BY count DESC

В результате появится список IP-адресов, тех кто оставил спам в комментариях.

к меню ↑

Удалить ревизии всех записей WordPress

Как я уже объяснял ранее, wp_posts сохраняет текущую версию записи при нажатии на кнопку Сохранить. Поэтому, если вы нажали кнопку Сохранить сто раз при написании записи, там будет сто итераций записей в вашей базе данных. Все ревизий в post_type как “revision“.

Если вам любопытно, сколько редакций сохранилось, выполните следующую команду.

SELECT COUNT(*) FROM wp_posts WHERE post_type = 'revision';

Если нужно удалить все изменения опубликованных записей, выполните следующую команду:

DELETE p, t, m FROM wp_posts p
LEFT JOIN wp_term_relationships t ON (p.ID = t.object_id)
LEFT JOIN wp_postmeta m ON (p.ID = m.post_id)
WHERE p.post_type = 'revision'

Строка LEFT JOIN удалит связь метаданных с тегами категории.

к меню ↑

Обновление ссылок в записях

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

Простая команда SQL избавит Вас от лишнего занятия:

UPDATE wp_posts SET post_content = REPLACE (post_content, '[старый_домен]', '[новый_домен]');

Этот запрос SQL ищет в колонке таблицы post_content старый домен, и заменяет их на Ваш новый домен. Так же, этот запрос можно использовать при переноса WordPress с localhost на web-server.

к меню ↑

Заключение

На странице Оформление WordPress много трюков для этой CMS. Если Вы знаете, любой другой трюк SQL для WordPress? Дайте мне знать в комментариях ниже!