Давайте сегодня рассмотрим работу WordPress изнутри, глазами программиста. И пусть вас не пугает то, что многие из вас не знают азов программирования – я предлагаю всего-навсего изучить работу базы данных CMS WordPress. Наверное, вы слышали или знаете, что база данных для wordpress работает по определенным запросам. Какие это запросы, мы изучим ниже. Не все, конечно, но самые основные пригодятся всем – хотя бы для того, чтобы более правильно организовать оптимальную работу сайта и не засорять вашу БД лишними запросами.

Изучаем строение базы данных для WordPress

Для начала – немного информации к размышлению: чистая база данных wordpress состоит всего из 11 таблиц. Это я к тому, что MODx Evolution содержит около 40 таблиц БД, Drupal 7 — от 80 таблиц. Проще CMS WordPress я не видел движка. База данных состоит из таблиц, которые отражают сами запросы, их содержимое, размер и состояние таблицы:

Изучаем строение базы данных для WordPress

Содержимое базы данных «чистого» движка WordPress меньше, чем показано на скриншоте – это потому, что еще нет записей, страниц, комментариев, не установлены те плагины, которые тоже работают на основе запросов к БД. Вот самые распространенные wordpress настройки базы данных и запросы, на которых, собственно, и работает ваш сайт, построенный на Вордпресс:

  1. SELECT – выбрать строки из таблиц.
  2. INSERT – добавить строки в таблицу. В какую именно – указывается в запросе.
  3. UPDATE – изменить строки в заданной таблице.
  4. DELETE – удалить строки в заданной таблице.

Это запросы SQL (Structured Query Language — специальный язык для манипуляций с данными). А основные запросы, которыми оперирует база данных вордпресс, перечислены ниже:

Структура БД WordPress и префиксы таблиц

  1. wp_posts — основная таблица. В ней сохраняется основной контент сайта – страницы, записи, заголовки записей, информация об авторе, дата, статус записи (опубликовано, черновик и т.д.), разрешены ли комментарии и др.
  2. wp_postmeta — вспомогательная информация о записях. Например, произвольные поля или прикрепленные файлы, данные, которые появляются при установке и активации плагинов.
  3. wp_users — информация о всех пользователях: логины, пароли, e-mail.
  4. wp_usermeta — информация о профиле пользователя.
  5. wp_comments — информация о комментариях в записях.
  6. wp_commentmeta — дополнительные данные к комментариям, например.
  7. wp_terms — таксономия сайта: рубрики и метки, к которым относится запись.
  8. wp_term_taxonomy —иерархическая таблица таксономий.
  9. wp_term_relationships —вхождение записи в какую-либо рубрику.
  10. wp_links —ссылки (блогоролл).
  11. wp_options —настройки CMS WordPress.

Выполняя какой-либо запрос к базе данных, вы меняете ее структуру, а это значит, что при возможной ошибке в запросе ваш сайт может запросто сломаться. Поэтому делайте, пожалуйста, резервную копию своей базы данных перед началом любой работы с ней. Хотя сейчас многие хостеры предоставляют услуги автоматического бэкапа с возможностью восстановления любой копии базы данных за последний месяц. Это удобно и безопасно.

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

 UPDATE wp_users SET user_pass = '$PBLIwZyiB0J2XvUyEMox0A0', user_activation_key= '' WHERE user_login = 'administrator' 

Или же просто зайти в базу данных, открыть wordpress таблицы базы данных wp_users и проделать там необходимые изменения в полях таблицы user_login и user_pass:

Изучаем строение базы данных для WordPress

А вверху вы видите запрос, который отсылается к БД при изменении данных в этой таблице. Таким образом, вы можете вносить изменения в любые таблицы, полностью или частично в wordpress очистить базу данных, удалять или копировать БД и таблицы для того, чтобы перенести на другой сайт.

Изучаем строение базы данных для WordPress

На скриншоте – способ очистки всех таблиц WordPress. Если нужно почистить конкретную таблицу – просто поставьте напротив нее галочку и выберите «С отмеченными Очистить».

Еще один полезный пример работы с базой данных – закрытие комментариев. Но не всех или не для одной записи (это можно легко сделать и в админпанели сайта), а закрыть комментарии для определенной рубрики. Вот это уже интереснее в плане практическом. Итак, вот зарос:

 UPDATE wp_posts p

LEFT JOIN wp_term_relationships rel ON ( p.ID = rel.object_id )

LEFT JOIN wp_term_taxonomy tax ON ( tax.term_taxonomy_id = rel.term_taxonomy_id )

LEFT JOIN wp_terms tm ON ( tm.term_id = tax.term_id )

SET p.comment_status = 'closed'

WHERE tm.slug = 'Uncategorized' 

В нашем случае слаг ‘Uncategorized’ – это и есть та рубрика, в которой будут отключены комментарии. Соответственно, если вместо ‘closed’ прописать ‘open’, то для этой рубрики комментарии будут открытыми.

Или еще – если вам нужна база e-mail всех ваших зарегистрированных и откомментировавшихся пользователей, то при помощи запроса это очень легко сделать:

 SELECT DISTINCT comment_author_email FROM wp_comments 

После этого здесь же, в PhpMyAdmin, вы увидите все уникальные e-mail адреса. Кнопкой «Экспорт» сохраните их на компьютер и пользуйтесь, например, для рассылки новостей.

А вот пример еще более полезный – можно удалить ревизии (редакции) всех записей. Как известно, после любой редакции записи, пусть даже это простановка еще одной запятой, WordPress сохраняет в БД ревизионную запись, которую можно восстановить до исходной. Но чаще всего эти ревизии просто захламляют вашу базу данных, и устанавливать плагин, чтобы прошла полная очистка базы 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'

Вот и все – теперь ваша БД чиста, как слеза младенца. И таких примеров можно привести сотни, но я н стану этого делать – поищите их сами в интернете. Заодно узнаете еще много нового о том, как работать с базой данных сайта на WordPress движке.