В случае успеха функция возвращает объект зарегистрированного типа поста, в случае неудачи — объект WP_Error. Функция должна использоваться только внутри хука init
.
Читайте подробнее о том, что такое типы записей (типы постов).
register_post_type( $post_type, $args = array() ) |
- $post_type
- (строка) то, как вы хотите назвать свой тип поста, это название в дальнейшем будет использоваться в параметрах многих функций, учтите это. Кроме того, нельзя использовать в качестве названий следующие зарезервированные вордпрессом слова:
post
page
attachment
revision
nav_menu_item
custom_css
customize_changeset
action
order
theme
author
- $args
- (массив) включает в себя следующие параметры:
- labels
- (массив) позволяет подписать элементы интерфейса данного типа записи. Подробнее в примере в конце поста.
- description
- (строка) описание регистрируемого типа записей. Насколько мне известно, этот параметр не используется где-либо в движке WordPress или в стандартных плагинах и темах. Но вполне может использоваться в сторонних плагинах или темах.
- public
- (логическое) обобщает следующие несколько параметров, устанавливая для них соответствующие значения по умолчанию
- publicly_queryable
- (логическое) нужно ли элементы данного типа записей сделать доступными на сайте. Подробнее про задачу этого параметра тут.
По умолчанию: значение аргументаpublic
. - exclude_from_search
- (логическое)
-
true
— исключить записи данного типа из результатов поиска на сайте, -
false
— не исключать.
По умолчанию: противоположные значения параметра
public
. -
- show_in_nav_menus
- (логическое) нужно ли элементы данного типа записей сделать доступными для добавления в меню сайта.
По умолчанию: значение аргументаpublic
. - show_ui
- (логическое) нужно ли добавлять стандартный интерфейс в админке для редактирования и добавления записей данного типа.
По умолчанию: значение аргументаpublic
. - show_in_menu
- (логическое|строка) нужно ли добавлять пункты в меню админки.
-
true
— пункты в меню будут добавлены (это видно на предыдущем скриншоте), -
false
— хоть интерфейс для типов постов и будет доступен по прямой ссылке в админке, в меню он не появится, - ссылку на страницу управления нашим типом поста мы можем добавить как вложенную для другого элемента меню верхнего уровня — для этого нужно будет указать его ID (являющийся атрибут href нужной нам ссылки), например
tools.php
илиedit.php?post_type=page
;
По умолчанию: значение аргумента
show_ui
. -
- show_in_admin_bar
- (логическое) нужно ли добавлять ссылку на создание новой записи данного типа в админ панель.
По умолчанию: значение аргумента
show_in_menu
. - menu_position
- (целое число) порядок расположения в меню в админке.
Значения параметров Расположение 1 в самом верху меню 2-3 под «Консоль» 4-9 под «Записи» 10-14 под «Медиафайлы» 15-19 под «Ссылки» 20-24 под «Страницы» 25-59 под «Комментарии» (по умолчанию, null
)60-64 под «Внешний вид» 65-69 под «Плагины» 70-74 под «Пользователи» 75-79 под «Инструменты» 80-99 под «Параметры» больше 100 под разделителем после «Параметры» - menu_icon
- (строка) абсолютный URL иконки для меню. Оптимальное разрешение изображения 16×16 пикселей.
Кроме того, в WordPress 3.8 появился встроенный пакет иконок Dashicons — вы можете использовать любую из этих иконок, просто указав её название в качестве значения параметра, напримерdashicons-cart
.По умолчанию используется иконка обычных записей.
- delete_with_user
- (логическое) при удалении пользователя на блоге, нужно ли автоматически удалять все записи данного типа, которые он опубликовал.
По умолчанию:false
. - hierarchical
- (логическое) должен ли данный тип постов иметь иерархию.
По умолчанию:false
. - has_archive
- (логическое|строка) должен ли данный тип постов иметь собственную страницу архивов. В качестве значения параметра можно указать ярлык страницы архивов.
По умолчанию:false
. - rewrite
- (массив|логическое) устанавливает правила для постоянных ссылок в URL. Если в качестве значения данного параметра указать
false
, то правила для постоянных ссылок создаваться не будут.- slug
- (строка) ярлык, используемый для записей данного типа (по умолчанию — название типа поста)
- with_front
- (логическое) нужно ли добавлять в постоянные ссылки значение
$wp_rewite->front
(по умолчанию —true
) - feeds
- (логическое) нужно ли создавать RSS ленту для данного типа поста (по умолчанию — значение параметра
has_archive
) - pages
- (логическое) нужно ли разрешить постраничную навигацию в постах регистрируемого типа, используя тег
<!--nextpage-->
(по умолчанию —true
)
- supports
- (массив) какие метабоксы нужно добавить на страницы редактирования записей данного типа.
-
title
— поле для ввода заголовка поста -
editor
— текстовый редактор -
excerpt
— метабокс «Цитата» -
author
— метабокс «Автор» -
thumbnail
— метабокс «Миниатюра записи» (кроме того, ваша тема должна их поддерживать) -
comments
— метабокс «Комментарии» (если указано, то разрешены комментарии к постам регистрируемого типа) -
trackbacks
— метабокс «Отправить обратные ссылки» -
custom-fields
— метабокс «Произвольные поля» (произвольные поля будут поддерживаться в любом случае) -
revisions
— метабокс «Редакции» (если указано, то в базе данных будут создаваться редакции постов данного типа) -
page-attributes
— метабокс «Атрибуты страницы» с возможностью выбора родительского эоемента и установления порядкаmenu_order
-
post-formats
— метабокс «Формат», про форматы постов читайте подробнее здесь.
-
- taxonomies
- (массив) массив зарегистрированных таксономий, например
category
илиpost_tag
, которые будут использоваться для данного типа записей. Присвоить таксономии можно также при помощи функции register_taxonomy_for_object_type().
Пример регистрации типа поста
Если не знаете, куда вставлять код — вставляйте в
functions.php
вашей текущей темы.add_action( 'init', 'true_register_products' ); // Использовать функцию только внутри хука init function true_register_products() { $labels = array( 'name' => 'Товары', 'singular_name' => 'Товар', // админ панель Добавить->Функцию 'add_new' => 'Добавить товар', 'add_new_item' => 'Добавить новый товар', // заголовок тега <title> 'edit_item' => 'Редактировать товар', 'new_item' => 'Новый товар', 'all_items' => 'Все товары', 'view_item' => 'Просмотр товаров на сайте', 'search_items' => 'Искать товары', 'not_found' => 'Товаров не найдено.', 'not_found_in_trash' => 'В корзине нет товаров.', 'menu_name' => 'Товары' // ссылка в меню в админке ); $args = array( 'labels' => $labels, 'public' => true, // благодаря этому некоторые параметры можно пропустить 'menu_icon' => 'dashicons-cart', // иконка корзины 'menu_position' => 5, 'has_archive' => true, 'supports' => array( 'title', 'editor', 'excerpt', 'thumbnail', 'comments'), 'taxonomies' => array('post_tag') ); register_post_type('product',$args); }
Источник: misha.blog