Одна из самых интересных фишек нового WordPress 3.0, который запланирован на апрель этого года, это индивидуальные типы записей, вы можете добавлять не только Записи и Страницы, но и например Фильмы, Актеров и т.п. через отдельный раздел в панели администрирования, который вы можете создать при помощи при помощи небольшого изменения functions.php вашей темы, взгляните на скриншот и всё станет ясно.
Простой вариант:
function post_type_movies() {
register_post_type( 'movies',
array( 'label' => __('Movies'), 'public' => true, 'show_ui' => true ) );
register_taxonomy_for_object_type('post_tag', 'movies');
}
add_action('init', 'post_type_movies');
Более детальный вариант
Конечно это не всё, существует еще несколько параметров настройки нового раздела. Добавляем:
function post_type_movies() {
register_post_type(
'movies',
array('label' => __('Movies'),
'public' => true,
'show_ui' => true,
'supports' => array(
'post-thumbnails',
'excerpts',
'trackbacks',
'custom-fields',
'comments',
'revisions')
)
);
register_taxonomy_for_object_type('post_tag', 'movies');
}
add_action('init', 'post_type_movies');
Получаем:
Мы активировали возможность включать и отключать комментарии, custom fields и другие полезные вещи.
Полный список параметров постов (на английском):
- label – A descriptive name for the post type marked for translation. Defaults to $post_type
- public – Whether posts of this type should be shown in the admin UI. Defaults to false
- exclude_from_search – Whether to exclude posts with this post type from search results. Defaults to true if the type is not public, false if the type is public
- publicly_queryable – Whether post_type queries can be performed from the front page. Defaults to whatever public is set as
- show_ui – Whether to generate a default UI for managing this post type. Defaults to true if the type is public, false if the type is not public
- inherit_type – The post type from which to inherit the edit link and capability type. Defaults to none
- capability_type – The post type to use for checking read, edit, and delete capabilities. Defaults to «post»
- edit_cap – The capability that controls editing a particular object of this post type. Defaults to «edit_$capability_type» (edit_post)
- edit_type_cap – The capability that controls editing objects of this post type as a class. Defaults to «edit_ . $capability_type . s» (edit_posts)
- edit_others_cap – The capability that controls editing objects of this post type that are owned by other users. Defaults to «edit_others_ . $capability_type . s» (edit_others_posts)
- edit_others_cap – The capability that controls publishing objects of this post type. Defaults to «publish_ . $capability_type . s» (publish_posts)
- read_cap – The capability that controls reading a particular object of this post type. Defaults to «read_$capability_type» (read_post)
- delete_cap – The capability that controls deleting a particular object of this post type. Defaults to «delete_$capability_type» (delete_post)
- hierarchical – Whether the post type is hierarchical. Defaults to false
- supports – An alias for calling add_post_type_support() directly. See add_post_type_support() for Documentation. Defaults to none
- register_meta_box_cb – Provide a callback function that will be called when setting up the meta boxes for the edit form. Do remove_meta_box() and add_meta_box() calls in the callback
- taxonomies – An array of taxonomy identifiers that will be registered for the post type. Default is no taxonomies. Taxonomies can be registered later with register_taxonomy() or register_taxonomy_for_object_type()
Включаем настраиваемую таксономию.
В этом примере мы включим для нашего типа постов таксономию с двумя фишками. Собственные теги и категории для постов типа Movies (фильмы).
function post_type_movies() {
register_post_type(
'movies',
array(
'label' => __('Movies'),
'public' => true,
'show_ui' => true,
'supports' => array(
'post-thumbnails',
'excerpts',
'trackbacks',
'custom-fields',
'comments',
'revisions')
)
);
register_taxonomy( 'actor', 'movies', array( 'hierarchical' => true, 'label' => __('Actor') ) );
register_taxonomy( 'production', 'movies',
array(
'hierarchical' => false,
'label' => __('Production'),
'query_var' => 'production',
'rewrite' => array('slug' => 'production' )
)
);
}
add_action('init', 'post_type_movies');
Получаем:
Теперь каждому фильму можно добавлять актеров (категории) и год выхода фильма (теги).
Несомненно очень интересное и полезное нововведение приближающее WordPress 3.0 к более сложным движкам типа Drupal, но делающим добавление сложной функциональности простым и понятным. Особенно это будет полезно писателям тем и плагинов, новые настраиваемые типы записей могут сделать превращение сайта из обычного блога в киносайт или в кулинарный сайт простой установкой плагина.
По материалам: wpengineer.com
Реклама: Ворота в Санкт-Петербурге нужно заказывать в СК Профит, лучшие ворота в Санкт-Петербурге.
Похожие посты:
22 Комментариев к статье Настраиваемые типы записей в WordPress 3.0
14th Февраль 2010 в 11:35
А я думал, что основной фичей третьей версии станет интеграция WP MU, она же все так же планируется?
14th Февраль 2010 в 11:37
WaRoX, да, конечно, но я если честно особых плюсов от этого не вижу.
14th Февраль 2010 в 11:43
настраиваемые записи это все-же хорошо. Но немного не понял, интеграция MU, т.е. в мультипользовательской версии, по самой системе интергация? или как?
14th Февраль 2010 в 14:07
Спасибо за новость, очень пригодится данная опция. Если это ещё всё будет user-friendly, то вообще шикарно.
15th Февраль 2010 в 11:22
Хорошая статья, будем ждать релиза 3-шки, хочется уже попробовать все новые фишки в том числе и мультиблог.
15th Февраль 2010 в 13:28
Да. Тема. Это очень удобно в определенных ситуациях.
16th Февраль 2010 в 01:17
Эта функциональность безусловно полезна, но она привязывает владельца блога к конкретной настроенной теме. Или обязывает его копаться в непонятном ему коде или поиске профессионала и денег на кастомицацию при смене дизайна. Думаю было-бы лучше привязать это не к теме, а к конкретному сайту/блогу.
16th Февраль 2010 в 01:18
Кстати, добавь наконец возможность подписаться на комментарии!
6th Июнь 2010 в 08:52
To: Vanilla Man
Есть куча плагинов подписки на комментарии. Но это требует хорошего хостинга для среднестатистического блога.
27th Июнь 2010 в 13:38
Ну что, кто-нибудь уже сделал сайт с этими настраиваемыми типами? А то у меня записи добавляются, но не отображаются на главной, хотя public и publicly_queryable установлены в true. Так же при включенном ЧПУ для настраиваемых типов генерируются неправильные URL’ы.
10th Август 2010 в 14:03
У меня не выводиться текстовой редактор во вновь создаваемые записи! В чем проблема?
10th Август 2010 в 20:58
А как вывести на страницу главную эту новую «рубрику» по аналогии wp_list_categories
14th Октябрь 2010 в 19:35
[...] случаи, когда архитектура сайта на WordPress усложнена персонализированными типами постов и [...]
15th Октябрь 2010 в 15:35
Не плагин, но полезная кнопка ссылка другу для увеличение посещаемости сайтов и блогов
1st Ноябрь 2010 в 10:40
Скажите пожалуйста, а куда именно вставлять этот код?
В запись single.php нужно добавить или отдельный шаблон страницы нужно заводить? =)
заранее спасиба=)
17th Ноябрь 2010 в 02:04
[...] написал об одной интересной функции, которая будет в версии 3.0, а точнее про настраиваемые [...]
30th Ноябрь 2010 в 03:41
Благодарю за хорошую статью, самое подробное что нашел, в русскоязычном интернете. Однако, присоединяюсь к предыдущему посту. Везде пишут «как добавить новый тип записи», но никто не пишет, как в последствии выводить этот тип в темплейте =)
Хотелось бы попросить Вас, исправить это недоразумение)) Интересуют разные варианты.
20th Декабрь 2010 в 17:48
Не знаю случайны ли ошибки в примерах кода, но он не совсем корректен.
Так, например, в ’supports’ => по кодексу нет параметра post-thumbnails а есть thumbnails
А для того чтобы у нашего типа записей было содержимое и возможность его редактирования как на скринах нужно добавлять ‘editor’.
А что касается вывода в шаблоне можно вопользоваться
wp_query(«post_type=movies&post_status=publish»)
p.s. Но автору все равно спасибо)
21st Декабрь 2010 в 17:17
Виктор, спасибо за дополнения!
14th Февраль 2011 в 06:32
У меня тоже не выводиться текстовый редактор, что делать
21st Февраль 2011 в 18:03
Пользуюсь Вашей статьей уже около года. Великолепный материал в плане того что все на русский переведено и легко фокусироваться на задаче, спасибо.
Кирилл, вы по всей видимости используете расширенные варианты из примера. Для того что бы появился редактор в параметр supports – нужно добавить его поддержку, т.к. в примерах ее нет ‘editor’ – отвечает за вывод редактора.
3rd Октябрь 2011 в 17:08
Хорошо бы еще написали как корректно все это выводить