Когда программисты говорят о сущностях, они обычно имеют в виду концепцию или что-то, что существует в системе. Иногда это класс, иногда это библиотека или зависимость, или это может быть что-то вроде типов записей WordPress.
Если WordPress следует рассматривать как основу приложения (а не как фреймворк), важно думать об определенных функциях таким образом, чтобы их можно было рассматривать как сущности. В приведенном выше примере тип записи — это именно то, что нужно.
Когда были введены пользовательские типы сообщений, это дало нам возможность добавить в приложение что-то помимо страниц и сообщений. Теперь мы можем реализовать любое понятие — например, событие — и рассматривать его как отдельный объект в системе.
Но когда все сказано и сделано, все сохраняется в таблице сообщений. И это нормально, потому что разработка программного обеспечения связана с абстракцией. Поскольку мы реализуем типы сообщений WordPress, мы реализуем абстракцию поверх идеи сообщений.
Типы записей WordPress
В последнем посте я рассмотрел процесс создания пользователя, который в конечном итоге будет связан с некоторой сущностью в приложении WordPress.
- Возможно, он/она является автором поста,
- Возможно, он/она является продавцом продукта,
- Возможно, он/она является рассказчиком истории,
- Или все, что вы можете себе представить.
Возможности безграничны. Но прежде чем мы поговорим о том, как создать связь между двумя сущностями, то есть пользователем и типом записи WordPress, нам нужно поговорить о том, как программно реализовать сущность или настраиваемый тип записи.
По этому поводу есть много документации и доступно множество учебных пособий, так что я не буду останавливаться на этом. Вместо этого я постараюсь сделать это как можно более простым. Помните, что цель всей этой серии статей — в конечном итоге добраться до точки, в которой мы связываем объекты с помощью метаданных.
Но перед этим нам нужно создать сущности. Итак, у нас есть пользователь, так что давайте сделаем это.
Для нашего примера предположим, что пользователь, которого мы создали в предыдущем посте, Меган, является автором книги. И в установке WordPress, управляемой кем-то другим, есть настраиваемый тип записи для книг, каждая из которых имеет несколько атрибутов:
- заглавие,
- описание,
- Дата публикации,
- ISBN,
- количество проданных первоначальных копий,
- где его можно приобрести,
- и так далее.
Вы можете добавить больше или меньше к своей реализации. На самом деле, возможно, вы занимаетесь продажей электронных книг, и URL-адрес книги для покупки является одним из атрибутов. Как бы то ни было, вы поняли идею.
С учетом сказанного мы можем программно реализовать простой настраиваемый тип записи для «книг».
Реализация типа записи
И это выглядит так :
<?php
add_action( 'init', 'acme_create_book_post_type' );
/**
* Creates a new custom post type called 'Book' using the smallest number of arguments
* to prepare the post type.
*/
function acme_create_book_post_type() {
$args = array(
'labels' => array(
'name' => 'Books',
'singular_name' => 'Book',
),
'public' => true,
);
register_post_type( 'acme_book', $args );
}
Если вы читали документацию по созданию пользовательских типов записей, то в этом нет ничего ненормального. Он должен выглядеть именно так, как вы ожидаете.
Что касается того, где вы создаете это, зависит от характера вашего проекта. Есть много людей, которые будут настаивать на том, чтобы это было в плагине или в теме. Это не место для обсуждения этого. Достаточно сказать, что для моих целей я предполагаю, что все это часть одного и того же плагина из предыдущего урока.
Кроме того, я не буду отвлекаться на пользовательские таксономии, комментарии или любые другие пользовательские типы данных, которые можно связать с пользовательским типом сообщений.
Затем мы посмотрим, как это выглядит в области администрирования WordPress, а также как это выглядит в базе данных.
Загляни за кулисы
Во-первых, вот как это выглядит (или должно выглядеть) в области администрирования WordPress:
И если вы посмотрите на базу данных после создания записи, вы увидите что-то вроде этого:
Очевидно, я ограничил количество записей, возвращаемых во внешнем интерфейсе базы данных, отфильтровав результаты, чтобы упростить просмотр снимка экрана.
О книгах
И это все, действительно. Я имею в виду, что на самом фундаментальном уровне это то, как вы создаете собственный тип записи в WordPress. Я знаю, что в этом нет ничего нового, но если бы я мог привести более веские аргументы в пользу подобного поста, он бы включал следующие два пункта.
1 Речь идет об абстракциях
Если вы хотите заняться созданием веб-приложений с помощью WordPress, важно перестать думать о вещах в традиционных терминах, таких как сообщения, страницы, комментарии и категории, и начать думать о них как о более общих абстракциях.
Сущности, как упоминалось ранее в статье. Как только вы это сделаете, у вас произойдет сдвиг в ментальной модели, которая стимулирует вашу способность продумывать и реализовывать решение.
2 Это об отношениях
Хотя мы часто думаем о вещах в их отдельных частях, таких как сообщения и страницы, мы по своей сути знаем, что сообщения могут иметь комментарии, комментарии могут иметь ответы, страницы могут иметь шаблоны и так далее.
Существуют отношения между всеми этими отдельными вещами, которые являются частью системы. И когда вы начинаете думать об отношениях как о чем-то, что позволяет нам делать больше, вы начинаете видеть, насколько мощным может быть что-то. Это целое «целое больше, чем сумма его частей».
Итак, когда у вас есть отдельные сущности и вы начинаете видеть, как они могут быть связаны друг с другом, вы делаете шаг вперед в создании чего-то, что решает несколько более сложную проблему из, казалось бы, простых частей.
И вот куда мы отправимся дальше.
Что насчет метаданных?
Вся цель этой серии статей — показать, как создать ассоциацию между сущностями, верно? В частности, мы хотим создать ассоциацию между пользователем и публикацией или, точнее, автором и книгой.
WordPress обеспечивает основу для этого, и именно здесь могут вступить в игру возможности дополнительных таблиц и хуков. В следующем посте я расскажу о том, как создать эту ассоциацию, в каком направлении могут идти ассоциации и как работать с этими данными, если, скажем, пользователь удален из приложения.
Сообщения серии
- Ассоциация метаданных WordPress: как это сделать
- Программное создание пользователей WordPress
- Типы записей WordPress: абстракция для сущностей
- Ассоциация метаданных WordPress: связанные объекты

