WordPress have posts custom post types

Содержание
  1. Произвольный тип записей в WordPress — register_post_types, register_taxonomy
  2. О записях в WordPress: где хранятся в базе данных, и как их получить
  3. Предустановленные типы записей в WordPress: post, page, attachment, revision, nav_menu_item
  4. Записи или посты (post)
  5. Страницы (page)
  6. Создаём специальный шаблон страницы (page)
  7. Прикрепления, вложения или аттачменты (attachment)
  8. Редакции, черновики или ревизии (revision)
  9. Элементы навигационного меню (nav_menu_item)
  10. Пользовательский Произвольный тип записи (Custom Post Type, CPT WordPress)
  11. Как правильно подобрать название нового типа записи
  12. Как сделать произвольную таксономию
  13. Шаблоны для произвольных типов постов
  14. Шаблон страницы записи
  15. Шаблон архива записей
  16. Шаблон произвольной таксономии
  17. Как получить данные произвольного типа записей (Custom Post Type WordPress) и отобразить на сайте
  18. Готовый класс для создания произвольного типа записей с произвольной таксономией
  19. Создание произвольного типа записей с помощью плагина Custom Post Type UI
  20. Иерархия шаблонов темы в WordPress
  21. В заключение
  22. Post Types
  23. Topics
  24. Default Post Types
  25. Posts
  26. Pages
  27. Attachments
  28. Revisions
  29. Menus
  30. Custom CSS
  31. Changesets
  32. Custom Post Types
  33. Template Files
  34. Post Type Queries
  35. The Posts Query

Произвольный тип записей в WordPress — register_post_types, register_taxonomy

О произвольных типах записей в Вордпрессе (CPT, Custom Post Types in WordPress), как создать и настроить, добавить категории и теги, как сделать вложенные URL /тип записи/рубрика/запись или https://example.com/post_type/category/post/ .
Тут также описывается, как расширить стандартный функционал WordPress, создав новые типы записей, которые можно использовать в различных целях: добавить собственное порфтолио, картотеку фильмов и музыки, каталог продукции, календарь событий, даже сделать свой небольшой интернет-магазин (потому что для большого лучше пользоваться готовыми решениями навроде WooCommerce) или социальную сеть, и много чего ещё в этом духе.
Вначале общая информация, дальше — частности.

О записях в WordPress: где хранятся в базе данных, и как их получить

Абсолютно все записи в WordPress, про которые чуть ниже, хранятся в одной таблице: wp_posts . Метаданные постов, например, данные из метабоксов Yoast SEO, хранятся в таблице wp_postmeta .

Приведу пример, как получить 10 записей типа post (стандартные Записи в панели администратора).
В общих чертах, данные особо запрашивать не надо. В шаблонах они уже предустановлены, например, в single.php данные по записи уже доступны для обработки в цикле

Если данные нужно получить где-то вне цикла или шаблона, используется запрос WP_Query

Данные можно получить посредством SQL запроса:

Все три способа выше дадут одинаковый результат на выходе.

Предустановленные типы записей в WordPress: post, page, attachment, revision, nav_menu_item

Как вы, наверное, знаете, Worpdress имеет предустановленные типы контента: записи ( post ) и страницы ( page ). Есть ещё несколько предустановленных типов ( attachment — аттачменты: изображения, аудио, видео; revision — ревизии записей, по сути, черновики; nav_menu_item — элементы меню), но они больше служебные и вспомогательные. Далее речь о них.

Записи или посты (post)

Самая используемая единица из всех типов, что есть в WordPress — Записи (они же посты, post ). Используется в роли постов блога и тому подобного. Имеет 2 предустановленных таксономии: рубрики, они же категории ( category ) и метки, они же теги ( post_tag ).
Таксономии служат для сортировки и упорядочивания записей.
Рубрики отличаются от меток тем, что имеют древовидную структуру (могут быть вложенными друг в друга).
Метки являются независимыми друг от друга единицами и этим чем-то похожи на Записи .
Также, по умолчанию, из записей формируется RSS лента сайта на Вордпрессе.

Для Записей используются следующие файлы шаблонов (в порядке приоритета):

Файлы шаблонов ищутся сверху вниз по списку в порядке приоритета. Если файл шаблона найден в теме, используется он, а поиск прекращается.

Страницы (page)

Страницы используются, в основном, в роли служебных страниц, посадочных страниц — лендингов, сборника энциклопедии и тому подобного. Имеют древовидную иерархию, то есть могут быть вложенными друг в друга, что отразится в адресе конечной страницы (ярлыки родительских будут присутствовать в цепочке URL), и в этой роли имеется возможность выставить им приоритет в сортировке.
Чтобы сделать лендинг, вы можете пойти двумя путями:

Читайте также:  Astra linux как войти под доменным пользователем

Создаём специальный шаблон страницы (page)

Где-нибудь внутри темы в корне или её поддиректории создать файл с произвольным названием и расширением php , например, landing.php . Внутри вы можете разместить совершенно любой шаблон, который может быть абсолютно не похож на другие страницы сайта. Но главное, это поместить вот такой код в начало файла:

Template Name — это специальная метка, которая говорит WordPress о том, что этот файл — специальный шаблон.
Теперь при создании и редактировании любой страницы (page) посмотрите в блоке справа с названием Атрибуты страницы , в нём в разделе Шаблон вы можете выбрать наш уникальный лендинг.

Как настроить шаблон страницы

Для Страниц ( Page ) используется следующая иерархия шаблонов. Как и с Записями , указываю в порядке приоритета:

Прикрепления, вложения или аттачменты (attachment)

Служебный тип, предназначенный для хранения информации о файлах (изображениях, аудио, видео и тому подобных), которые загружались через загрузчик в стандартном редакторе WordPress при редактировании Записи, Страницы или подобного: размер, вес, описание, к какому посту или странице прикреплены, и тому подобное.

Получить вложения для последующей манипуляции над ними можно с помощью следующего кода:

Иерархия шаблонов для аттачментов:

Редакции, черновики или ревизии (revision)

Редакции , они же Ревизии — это версии черновиков записей, которые создаются автоматически, пока вы пишете статью в административной панели Вордпресса или сохраняете статью без фактической её публикации.
В процессе написания, для каждой статьи по умолчанию сохраняется каждая версия черновика. Можно сравнить две разные версии, и к нужной можно откатиться назад.
Хранить помногу версий одной и той же статьи — довольно накладно и часто бессмысленно (хотя, наверное, правильнее было бы оставлять всё по умолчанию, регулярно подчищая старые редакции с помощью плагина, например WP Optimize), поэтому число сохраняемых версий Ревизий можно изменить с помощью 2 вариантов:

  • true или -1 : сохраняет каждую версию черновика. Вариант по умолчанию
  • false или 0 : отключает сохранение черновиков, кроме 1 автосохранения
  • Целое число больше нуля: сохраняется указанное число версий черновиков + 1 автосохранение. Старые версии, не укладывающиеся в указанное число, автоматически удаляются

Элементы навигационного меню (nav_menu_item)

Навигационное меню ( nav_menu_item ) — это тип записей, который хранит информацию об единице навигации в WordPress. Первый, и пока единственный тип записи, который используется не как остальные типы записей, данные для работы и отображения на сайте получают свои отдельные функции.
Также, навигационные меню по умолчанию не включены. Чтобы их включить, нужно объявить об их поддержке в functions.php:

  1. Прописать
  2. Или зарегистрировать место под меню с помощью register_nav_menu(), тогда поддержка меню включится автоматически

Для получения данных пользуйтесь wp_nav_menu(), потому что WP_Query не будет работать, и это отличительная особенность типа постов nav_menu_item

Пользовательский Произвольный тип записи (Custom Post Type, CPT WordPress)

Вот мы и подошли к главному — тому инструменту, который позволяет расширить стандартный блоговый функционал WordPress до бесконечных возможностей: пользовательский произвольный тип записи.
Самый простой пример, как можно зарегистрировать наш новый тип записи sheensay_product

Здесь sheensay_product — это название нового типа записей. Оно не должно конфликтовать с другими в системе, об этом подробнее ниже.
Также, в этом варианте оно служит ярлыком этого типа записей, то есть присутствует в URL. Если же хотите указать другой ярлык, например продукция, делайте как на примере ниже

Как правильно подобрать название нового типа записи

В WordPress зарезервированы следующие названия, которые нельзя использовать в качестве имени нового типа записи:

Также, стоит воздержаться от использования префикса wp_ в начале названия, так как, возможно, это вызовет конфликты с будущими версиями ядра WordPress.
Лучше всего, если вы будете предварять названия произвольными префиксами, связанными с названием вашего сайта, продукта или бренда, например sheensay_product , тогда гарантированно избежите потенциальных конфликтов

Как сделать произвольную таксономию

Произвольные типы записей могут использовать таксономии из записей, например, рубрики (категории) или метки (теги), но можно, чтобы таксономии были свои.

Читайте также:  Когда ошибка при регистрации симки

Шаблоны для произвольных типов постов

Всё зависит от того, какого рода информация отображается. Вариантов может быть 3: шаблон конкретной записи, шаблон архивов записей и шаблон таксономий

Шаблон страницы записи

Перечисляются в порядке приоритета

<тип_поста>в нашем случае, здесь и далее — это sheensay_product

Шаблон архива записей

  1. archive-<тип_поста>.php
  2. archive.php
  3. index.php

Шаблон произвольной таксономии

  1. taxonomy-<имя_таксономии>—<имя_термина>.php
  2. taxonomy-<имя_таксономии>.php
  3. taxonomy.php
  4. archive.php
  5. index.php

Здесь имя_таксономии — это sheensay_product_type , а имя_термина — это ярлык той таксономии, что вы создадите в админке.

Как получить данные произвольного типа записей (Custom Post Type WordPress) и отобразить на сайте

Получить данные произвольного типа записей (Custom Post Type) в WordPress для отображения на сайте можно теми же способами, что и обычные Записи и Страницы

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

Готовый класс для создания произвольного типа записей с произвольной таксономией

Ниже представлен класс, с помощью которого вы сможете зарегистрировать любой произвольный тип записей с собственной таксономией, а URL будет иметь вид
http://example.com/продукция/тип/продукт

Чтобы URL формировался, вы должны перейти в настройки постоянных ссылок /wp-admin/options-permalink.php и установить любой отличный от простого вид общих настроек

Как настроить структуру постоянных ссылок

Ниже сам код класса. Вы можете не вносить в него никаких изменений, а поменять ярлык типа записи можно в самом конце в строке new Sheensay_Product( ‘продукция’ );
Сам код пишется в MU Plugin или в functions.php. Первый вариант предпочтительнее, так как в этом случае, вы не потеряете доступа к контенту нового типа записей при смене активной темы.

Теперь в админке вы можете зарегистрировать новую продукцию и их типы

Custom Post Type в админке

Создание произвольного типа записей с помощью плагина Custom Post Type UI

Чтобы не писать код вручную, вы можете воспользоваться готовым плагином. Он довольно популярен, и на момент написания статьи имеет 500 тысяч скачиваний из официального репозитория WordPress.org

Скачать плагин Custom Post Type UI из официального репозитория WordPress.org

Иерархия шаблонов темы в WordPress

Ниже иллюстрация иерархии шаблонов, то есть как ищутся и подбираются подходящие шаблоны (template) внутри темы (кликабельно):

Иерархия шаблонов тем в WordPress

В заключение

Я постарался сжато пройтись по всем пунктам этой важной темы. Если что-то осталось непонятным, задавайте вопросы, статья будет дополняться новыми примерами.

Источник

Post Types

Topics

WordPress houses lots of different types of content and they are divided into something called Post Types. A single item is called a post however this is also the name of a standard post type called posts. By default WordPress comes with a few different post types which are all stored in the database under the wp_posts table.

Default Post Types

The default post types that are always included within a WordPress installation unless otherwise removed are:

  • Posts
  • Pages
  • Attachments
  • Revisions
  • Navigation Menus
  • Custom CSS
  • Changesets

Posts

A post in WordPress is a post type that is typical for, and most used by blogs. Posts are normally displayed in a blog in reverse sequential order by time (newest posts first). Posts are also used for creating RSS feeds.

Pages

A page is similar to posts however they have some very important differences. Pages aren’t displayed in a reversed time-based order. They can also be placed into a hierarchical order where a page can be the parent or child of another page creating a page structure. Traditionally, pages also do not make use of categories and tags like posts do.

Attachments

Attachments are another post type that is special as these hold information about any media that is uploaded to your WordPress website. Not only is the main post information stored where other posts are, attachments also make use of the wp_postmeta table for storing extra information like metadata for images and videos that you’ve added.

Revisions

Revisions are a particularly special post type as they are used to create a history of other post types in case you make a mistake and want to rollback to a previous version. Whilst you technically can’t edit revisions directly unless you restore a revision, they are editable just like posts and are stored in the wp_posts table like any other post type.

Menus in WordPress are lists of links that can be used to navigate your website. This allows you to create custom lists of links to various locations on your website that is used by your visitors and are edited in the theme section of the dashboard away from traditional post types like posts or pages.

Custom CSS

Custom CSS is a theme specific post type used to store CSS saved from The Customizers Additional CSS screen. Each theme can have its own custom CSS post but only the active themes `custom_css` post is actually used.

Changesets

Changesets are similar to revisions but specifically for the Customizer. This is to keep the Customizer in a persistent state. WordPress will attempt to keep content changes made through the Customizer during the user session in a `customize_changeset` post and attempt to restore them should you exit your current session.

Custom Post Types

Whilst there are already lots of standard post types within WordPress, you may want to extend the amount of post types you have if you want to break things down into smaller categories. For example, if you want to have a section on Books, it would be better suited to creating a custom post type for them. This can be done using the register_post_type function.

It’s highly recommended that you define custom post types within a plugin or must-use plugin to ensure that if you switch themes, the post type isn’t lost. That way you can ensure your content is always accessible.

Template Files

By default WordPress makes use of the index.php, single.php and archive.php files in a theme to display posts of any type of the front-end of a website. However, if you’ve made a custom post type, you may find that you want to show this information in a different way to other types. You can do this by using post type specific custom templates within your theme.

If you create a post type called Books like in the example above, you can create a template file called single-books.php which will show the individual book posts that you publish. Again, to show all your books in a custom archive page (where they are all listed), you can create an archive-books.php template file and this will show all the book posts that you’ve published.

Post Type Queries

In the event that you want to get a list of your custom posts called Books, you can create a new WP_Query instance and fetch them all. This is handy if you want to create a custom loop somewhere on your website and show them in a different way to other posts.

The Posts Query

You might find that in some cases you want to include custom posts into your main query of blog posts. You can do this by using the pre_get_posts filter hook which lets you customize the query that gets your posts before it’s shown on the front-end of the website.

Источник

Поделиться с друзьями
КомпСовет
Adblock
detector