Все материалы WordPress хранит в одной таблице. Там он сохраняет записи, страницы, описания медиафайлов, черновики и ревизии. Они отличаются друг от друга лишь типом записи.
К этим «коробочным» типам можно добавить собственные, с уникальной конфигурацией полей, собственными словарями таксономии и другими особенностями.
Это может понадобится как для оформления, так и для правильного проектирования объектов сайта. В частности wordpress распознаёт именные файлы шаблонов для разных типов публикаций:
1 |
single-{postType}.php |
А если нам понадобиться, чтобы типы публикаций отличались редактором, без регистрации собственных типов не обойтись.
Регистрация типов обычно включается в этап инициализации сайта, а php код помещается в файл темы function.php.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
//подключаем в инициализацию add_action( 'init', 'create_post_type' ); function create_post_type() { //мы регистрируем тип публикации - products //это будут описания товаров на сайте //обычные записи блога для этого не очень подходят, так ведь? register_post_type( //имя типа публикации 'products', //параметры array( 'public' => true, 'has_archive' => true, 'menu_icon' => 'dashicons-cart', 'menu_position' => 2, 'labels' => array( 'name' => 'Продукция', 'singular_name' => 'Продукция', 'menu_name' => 'Продукция', 'all_items' => 'Вся продукция', 'add_new' => 'Добавить', 'add_new_item' => 'Добавить', 'edit_item' => 'Редактировать', 'not_found' => 'Ничего не найдено', 'not_found_in_trash' => 'Корзина пуста' ), 'supports' => array('title', 'editor', 'excerpt', 'thumbnail', 'custom-fields'), 'taxonomies' => array('type') )); } |
Описание и существующие параметры изучайте в кодексе. В данном примере использованы далеко не все.
Благодаря нашему примеру, в админ панели появится специальный раздел — Продукция. Значок (menu_icon), можно выбрать из большой коллекции, смотрите тут:
Коллекция стандартных значков велика, их более сотни. Для продукции я выбрал значок тележки из супермаркета (dashicons-cart).
Настройка полей в редакторе нового типа публикации.
При создании, в свойстве supports мы указали, что наши товары имеют:
- title — заголовок
- editor — редактируемый текст описания
- excerpt — цитата, необязательное краткое содержание вашего текста, которое можно использовать в вашем шаблоне
- thumbnail — картинка, прикрепляемая к публикации (в нашем случае фото товара)
- custom-fields — произвольные поля (они хранятся как мета данные публикации)
Ещё существуют такие поля как:
- comments — публикация будет обладать комментариями,
- page-attributes — это может быть порядок вывода в меню, иерархия
- author — информация об авторе
- revisions — будут сохранятся ревизии данного типа публикаций
- post-formats — в редактор добавляется выбор формата публикации. Это мета информация, которая может быть использована при темизации.
- trackbacks — отслеживание обратных ссылок.
Кроме того, сюда можно включить имена словарей таксономии. Как объявлять словари ( привычные нам рубрики), читайте далее.
Более правильно их подключать к публикации, объявив свойство taxonomies (как следано в примере).
Объявление собственных словарей (рубрикаторов) публикации.
Как их регистрировать, привязывать к типу публикации мы уже увидели. Словарь нужно объявить специальным образом, он может быть связан с несколькими типами публикаций, потому логично, что он регистрируется отдельно, а не как часть описания типа публикации.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
//регистрируем в секции инициализации сайта add_action( 'init', 'build_taxonomies', 0 ); function build_taxonomies() { register_taxonomy( //системное имя словаря 'type', //массив или строка имен ассоциированных типов публикаций 'products', //необязательные параметры array( 'hierarchical' => true, 'label' => 'Типы', 'query_var' => true, 'rewrite' => true ) ); } |
Параметров много, они подробно описаны в кодексе WP.
Есть модули, которые позволяют перенести всю работу по настройке типов публикаций в админ панель. Это удобно, т.к. не все могут править PHP код без последствий для здоровья сайта :).
Но я бы не советовал ставить такие сторонние модули. Добавление типа публикации требуется довольно редко, а изменение его настроек ещё реже. Лучше, если данный инструмент не будет постоянно болтаться в админке у вас под рукой.
Не забывайте также, что чем меньше сторонних модулей, тем лучше в плане безопасности. WP из коробки и её фирменные темы — надежны и безопасны, чего нельзя гарантировать для многочисленных сторонних модулей.