База данных WordPress

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

Когда дело доходит до работы с базами данных в 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

Таблица 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? Дайте мне знать в комментариях ниже!

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML -теги и атрибуты: <a href= http://www.pixelcom.crimea.ua/"" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>