Рассмотрены таблицы базы данных WordPress, их назначение и взаимодействие.
Содержание
- База данных WordPress
- Таблицы базы данных
- Взаимные связи таблиц базы данных
База данных WordPress
Современное более или менее серьезное программное обеспечение невозможно представить без систем хранения данных. WordPress не исключение, поэтому сегодня рассмотрим этот важный ее компонент. Сейчас хватает различных функций, плагинов и примеров SQL запросов, тем не менее хорошие знания базы данных — это залог грамотного использования CMS WordPress.
На момент выхода этого поста при установке WordPress создается 12 таблиц MySQL. По умолчанию они имеют префикс wp_. Назначение одних достаточно прозрачно, с другими новичку надо разбираться. Но прежде чем мы этим займемся, есть смысл прояснить один термин, который используется в этой БД. На мой взгляд нередко его трактуют довольно поверхностно.
Таксономия
Определение термина таксономии в Википедии, на мой взгляд, дает лишь общее определение термина и не раскрывает сути, поэтому попробую его разъяснить, как я понимаю. Вот, например, краткое, но емкое определение: «Таксономия — это учение о классификации сложных иерархических систем.» Например, у нас имеется некий сложный объект со множеством свойств. Так вот, все эти свойства не сваливают в одну кучу, а разделяют на несколько кучек. Т.е, следуют чудесному принципу декомпозиции. Тем более, когда это информация, — зачем вываливать пользователю все данные, если ему нужна только их часть. А когда информация классифицируется по некоторым признакам, ее уже можно предоставлять/обрабатывать частями. Хорошим примером таксономии может служить Проводник Windows. Там информация делится на папки, подпапки, на файлы, имеющие различные форматы, за разными форматами файлов закреплены разные обрабатывающие их программы и т.д. Другими словами, информация разделяется по определенным свойствам. Так вот, на мой взгляд, таксономия — это набор элементов, их свойства и взаимосвязи какой-то сложной структуры. Вот этот принцип и заложен в структуре базы данных. Элементами таксономии в WordPress являются, например, страницы, записи, рубрики, элементы меню, метки, т.е., свойства, по которым хранящиеся данные можно отличить друг от друга. А все они в целом являются элементами CMS WordPress. Как-то так, кто не согласен, аргументированно возражайте. А пока пойдем дальше.
Как уже говорилось, при установке в базе данных создается 12 таблиц. Пока приведем их список, порядок перечисления — от простого к сложному по критерию их связей:
- wp_options — хранятся настройки WordPress;
- wp_users — собраны данные о пользователях;
- wp_usermeta — хранятся дополнительные данные о пользователях, записанных в таблице wp_users;
- wp_links — здесь хранились все ссылки. Достаточно давно не используется, но возможность ее задействовать существует;
- wp_posts — самая важная таблица, хранящая основную информацию о контенте: страницы, любые типы записей, медиафайлы, пункты меню и т.п. Все они называются post, а различаются по значению поля post_type. В нашем перечислении должна быть последней, но приведена здесь, т.к. с ней связано множество других таблиц;
- wp_postmeta — дополнительные данные к записям, лежащим в таблице wp_posts, так называемые метаданные;
- wp_comments — информация о комментариях к посту;
- wp_commentmeta — дополнительные данные к записям таблицы wp_comments;
- wp_terms — хранит термины элементов таксономии базы данных;
- wp_termmeta — дополнительная информация о записях таблицы wp_terms;
- wp_term_taxonomy — хранится основная информация таксономии;
- wp_term_relationships — таблица связи записей таблицы wp_posts c элементами таксономии из таблицы wp_term_taxonomy.
Более подробное описание ниже, а пока приведу поля таблиц и их связи.
А теперь пройдемся подробней по устройству таблиц.
wp_options весьма важна, т.к. в ней находятся все настройки сайта. Устроена очень просто: идентификатор записи таблицы, ключ настройки, значение настройки и поле autoload типа string, указывающая загружается ли эта опция автоматически функцией wp_load_alloptions(). Связей с другими таблицами нет.
wp_users — название говорит само за себя, здесь находится информация о зарегистрированных пользователях сайта — логин, хэш пароля, email пользователя, его статус и т.п. Здесь тоже все достаточно прозрачно. На нее ссылаются таблицы wp_usermeta, wp_posts и wp_comments.
В таблице wp_usermeta хранится дополнительная информация о пользователе. Организация также несложная, кроме полей идентификатора записи и внешнего ключа на таблицу wp-users, присутствует ключ и значение дополнительной информации о пользователе.
Таблица wp_links устарела и в современных версиях движка не используется, в частности, после установки WordPress записи в ней отсутствуют.
Таблица wp_posts весьма важная и большая, как по составу полей, так и по количеству записей. На любой контент: страницы, примечания, медиафайлы, комментарии и т.д. есть запись в этой таблице. Каждая запись имеет ссылку на автора таблицы wp_users. На записи этой таблицы ссылаются wp_postmeta, wp_comments, wp_term_relationships.
В таблице wp_postmeta содержится дополнительная информация о записях. Устроена аналогично упомянутой таблице wp_usersmeta.
wp_comments — содержит информацию о комментариях к контенту сайта. Достаточно много полей, но особых вопросов не должна вызывать.
wp_commentmeta — хранится дополнительная информация, связанная с комментарием. Устроена аналогично таблице wp_usersmeta.
wp_terms — здесь хранится основная информация об элементах таксономии, например, рубрики, метки, меню. Поля: первичный ключ записи таблицы, идентификатор элемента таксономии и его значение, slug или название, используемое в URL, по полю term_group можно группировать элементы таксономии. К базовым элементам WordPress относятся:
- category — рубрики записей;
- post_tag — метки записей;
- post_format — форматы записей;
- nav_menu — элементы меню.
wp_termmeta — дополнительная информация об элементах таксономии. Устроена просто: первичный ключ, ссылка на запись таблицы wp_terms, строковый идентификатор дополнительной информации и его значение.
wp_term_taxonomy — основная таблица таксономии, здесь хранится информация о ее элементаз, например, элементу определяется его термин из таблицы wp_terms. К примеру базовый элемент таксономии category определяет рубрику записей и используется неоднократно. Здесь же хранятся данные о каждом использовании элемента category в WordPress, это его описание, ссылка на родительский элемент, общее количество ссылок на применяемый элемент;
wp_term_relationships связывает контент WordPress, хранящийся в таблице wp_posts с элементами таксономии. Все достаточно просто, поле таблицы object_id ссылается на ID записи таблицы wp_posts, а поле term_taxonomy_id на ID записи таблицы wp_term_taxonomy, таким образом элемент контента таблицы wp_posts связывается с элементом таксономии(классификации). Таким образом элементы контента WordPress связываются с элементами таксономии.
Естественно, база данных WordPress не обойдена вниманием ее API. Существует множество методов взаимодействия с БД. Основным его элементом является объект $wpdb. Познокомиться с ним вы можете по этой ссылке.