В случае успеха функция возвращает объект зарегистрированного типа поста, в случае неудачи — объект WP_Error. Функция должна использоваться только внутри хука init
.
Читайте подробнее о том, что такое типы записей (типы постов).
register_post_type( $post_type, $args = array() )
post
page
attachment
revision
nav_menu_item
custom_css
customize_changeset
action
order
theme
author
public
.true
— исключить записи данного типа из результатов поиска на сайте,false
— не исключать.По умолчанию: противоположные значения параметра public
.
public
.public
.
true
— пункты в меню будут добавлены (это видно на предыдущем скриншоте),false
— хоть интерфейс для типов постов и будет доступен по прямой ссылке в админке, в меню он не появится,tools.php
или edit.php?post_type=page
;
По умолчанию: значение аргумента show_ui
.
По умолчанию: значение аргумента show_in_menu
.
Значения параметров | Расположение |
---|---|
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 | под разделителем после «Параметры» |
Кроме того, в WordPress 3.8 появился встроенный пакет иконок Dashicons — вы можете использовать любую из этих иконок, просто указав её название в качестве значения параметра, например dashicons-cart
.
По умолчанию используется иконка обычных записей.
false
.false
.false
.false
, то правила для постоянных ссылок создаваться не будут.
$wp_rewite->front
(по умолчанию — true
)has_archive
)<!--nextpage-->
(по умолчанию — true
)title
— поле для ввода заголовка постаeditor
— текстовый редакторexcerpt
— метабокс «Цитата»author
— метабокс «Автор»thumbnail
— метабокс «Миниатюра записи» (кроме того, ваша тема должна их поддерживать)comments
— метабокс «Комментарии» (если указано, то разрешены комментарии к постам регистрируемого типа)trackbacks
— метабокс «Отправить обратные ссылки»custom-fields
— метабокс «Произвольные поля» (произвольные поля будут поддерживаться в любом случае)revisions
— метабокс «Редакции» (если указано, то в базе данных будут создаваться редакции постов данного типа)page-attributes
— метабокс «Атрибуты страницы» с возможностью выбора родительского эоемента и установления порядка menu_order
post-formats
— метабокс «Формат», про форматы постов читайте подробнее здесь.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); }
добрый день.
страница с этим постом будет доступна по url .../product/bla-bla-bla
а как унаследовать от стандартного поста принцип формирования адреса, в частности привести к виду .../cat1/cat2/bla-bla-bla
заранее благодарен за ответ
Добрый день!
При регистрации типа поста укажите:
Затем применим фильтр к URL этого типа постов:
И прошу прощения за столь долгий ответ.
Для ссылок типа site.abc/product/cat-1/cat-1-1/product-slug/ немного переписала код. Ссылка формируется правильно, но при открытии страниц site.abc/product/cat-1/, site.abc/product/cat-1/cat-1-1/ и site.abc/product/cat-1/cat-1-1/product-slug/ WP выдаёт «Страница не найдена». В чём причина?
Сделал, все работает, а вот на странице добавления материала нету выбора категории!!! помогите плиз.
А как сделать категории только для этого модуля?
То есть убрать категории из записей?
Добавляю материал а на странице категории ничего не отображается полная новость есть а на категориях написано Archive by category "Продукты здоровья"
Заранее спасибо
Возможно в категориях с цикле установлен тип поста
post
. Как изменить.Странно что в столбец guid с новостями пишется вот такая хрень http://***ua/?post_type=health&p=82
а не http://***.ua/uncategorized/47-revision-v1/ как в норм новостях
мой код
С кодом на первый взгляд всё в порядке.
и в пост_нейм вот что пишет %d0%b0%d0%bf%d1%80-%d0%b0%d0%bf%d1%80-%d0%b0%d0%bf%d0%b2%d1%80%d0%b0%d0%bf%d1%80%d0%bf%d0%b0%d0%bf%d1%80
Здравствуйте! Если несложно (и сталкивались), подскажите, пожалуйста, ответ. На всем сайте статьи с URL-ами типа %postname%.html. Можно ли этот злосчастный ".html" дописать и к ссылкам на записи произвольного типа?
Здравствуйте!
Да, можно, сам когда-то делал. Код к сожалению не помню. Ещё плагин был, который эт реализовывал.
Да, плагин я видела (Custom Post Type Permalinks), но хотелось попробовать сделать вручную. Провозилась день - не получилось, буду делать через плагин. Извините за беспокойство 🙂
Вроде какой-то другой плагин был, по английски так и назывался что-то типа html-for-pages. Помню, что я тупо из содержимого плагина код скопирнул в functions.php и всё заработало 🙂
О, нашёл https://downloads.wordpress.org/plugin/html-on-pages.zip.
Спасибо, вечером попробую. А то предыдущий плагин мне все-таки не подошел (поменялись урлы у всего форума на bbPress и через плагин даже нельзя было вернуть прежний вид).
Пожалуйста, дайте знать, если всё получится.
Здравствуйте, мне нужно что бы после регистрации нового типа поста url вел себя так же как у обычных постов, site.ru/postname
Здравствуйте!
В эту пятницу я опубликую пост про WP_Rewrite, думаю там вы сможете найти ответ.
Спасибо, ждём
Михаил, добрый день.
Подскажите, можно к своему типу поста указать родителя типа "page"?
Т.е. я бы как обычно указывал родительскую страницу из СТРАНИЦ.
Заранее спасибо за ответ.
Добрый день!
Думаю есть пара решений:
Спасибо за ответ.
Способ 2 я в первую очередь попробовал, работает только для своих типов. Т.е. скажем у меня тип "product", и родителя могу выбрать только продукт, но не "page".
А про способ 1 можно подробнее? Или ссылки где почитать. Я пока учусь, не всё понятно.
2й способ как раз таки должен работать в любом случае — просто через WP_Query делаем выпадающий список из нужных типов.
Михаил, не получилось, переделал всё под свой тип поста.
Спасибо.
Михаил, ещё вопрос: Как сделать url не "site.ru/тип_поста/имя_поста" а как обычно "site.ru/имя_поста" ?
Заранее спасибо.
В пятницу выйдет новый пост, там об этом подробно напишу.
А можешь прояснить одним момент. Мне не понятно. Вот мы регистрируем пост во время хука init
да и сам вп рекомендует это делать. Но в тоже время есть хук registered_post_type который срабатывает на 8 хуков раньше, чем init. И есть другая рекомендация (с точки зрения производительсности юзать "целевые хуки вместо общих". Вот и не понятно. Если все регают посты через хук init, то нафига вообще нужен хук registered_post_type?
PS тоже самое с таксономиями. Нафига хук registered_taxonomy если вешаем мы все на init?
Буду благодарен за развернутый ответ.
Этот хук срабатывает сразу ПОСЛЕ регистрации типа записи, так что это не то. Это получается, что ты хочешь повесить регистрацию нового типа записи несколько раз внутри регистрации предыдущих. Как-то так.
С таксономиями аналогично.
Здравствуйте Михаил.
Я создал произвольный тип записи vacancy. Указал 'has_archive' => true. Далее сделал шаблон archive-vacancy.php и добавил пункт меню. При заходе на страницу архива, пункт меню выделен как текущий и у него есть класс "current-menu-item active". А вот при переходе на страницу записи, класс у пункта меню удаляется, и соответственно меню выглядит как обычный пункт.
Подскажите, можно ли как то сделать, чтобы страница записи соотносилась со страницей архива, и определялась как текущая для соответствующего пункта меню?
Добрый день Виталий,
В таких случаях бывает два решения:
1) Проверить, если у элемента класс
current-menu-parent
и если да, то стилизовать под него2) Стилизовать ваш конкретный элемент меню, используя body classes, например:
Михаил здравствуйте.
Спасибо за быстрый ответ.
Класс "current-menu-parent" как раз и не появляется, так и не понял, почему.
Использование body classes - отличная идея, как я сам забыл про это.
Еще раз спасибо за ответ и за очень полезный сайт