Настраиваемые типы записей в WordPress 3.0

Одна из самых интересных фишек нового WordPress 3.0, который запланирован на апрель этого года, это индивидуальные типы записей, вы можете добавлять не только Записи и Страницы, но и например Фильмы, Актеров и т.п. через отдельный раздел в панели администрирования, который вы можете создать при помощи при помощи небольшого изменения functions.php вашей темы, взгляните на скриншот и всё станет ясно.

image

Простой вариант:

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');

Получаем:

image

Мы активировали возможность включать и отключать комментарии, 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');

Получаем:

image

Теперь каждому фильму можно добавлять актеров (категории) и год выхода фильма (теги).

Несомненно очень интересное и полезное нововведение приближающее WordPress 3.0 к более сложным движкам типа Drupal, но делающим добавление сложной функциональности простым и понятным. Особенно это будет полезно писателям тем и плагинов, новые настраиваемые типы записей могут сделать превращение сайта из обычного блога в киносайт или в кулинарный сайт простой установкой плагина.

По материалам: wpengineer.com

Реклама: Ворота в Санкт-Петербурге нужно заказывать в СК Профит, лучшие ворота в Санкт-Петербурге.

22 комментария к статье Настраиваемые типы записей в WordPress 3.0

Avatar

WaRoX

14th Февраль 2010 в 11:35

А я думал, что основной фичей третьей версии станет интеграция WP MU, она же все так же планируется?

Avatar

Wordpresser

14th Февраль 2010 в 11:37

WaRoX, да, конечно, но я если честно особых плюсов от этого не вижу.

Avatar

RunetPP

14th Февраль 2010 в 11:43

настраиваемые записи это все-же хорошо. Но немного не понял, интеграция MU, т.е. в мультипользовательской версии, по самой системе интергация? или как?

Avatar

CyberAP

14th Февраль 2010 в 14:07

Спасибо за новость, очень пригодится данная опция. Если это ещё всё будет user-friendly, то вообще шикарно.

Avatar

Evgeny

15th Февраль 2010 в 11:22

Хорошая статья, будем ждать релиза 3-шки, хочется уже попробовать все новые фишки в том числе и мультиблог.

Avatar

Евгений

15th Февраль 2010 в 13:28

Да. Тема. Это очень удобно в определенных ситуациях.

Avatar

Vanilla Man

16th Февраль 2010 в 01:17

Эта функциональность безусловно полезна, но она привязывает владельца блога к конкретной настроенной теме. Или обязывает его копаться в непонятном ему коде или поиске профессионала и денег на кастомицацию при смене дизайна. Думаю было-бы лучше привязать это не к теме, а к конкретному сайту/блогу.

Avatar

Vanilla Man

16th Февраль 2010 в 01:18

Кстати, добавь наконец возможность подписаться на комментарии! 🙂

Avatar

surger

6th Июнь 2010 в 08:52

To: Vanilla Man

Есть куча плагинов подписки на комментарии. Но это требует хорошего хостинга для среднестатистического блога.

Avatar

Holy Diver

27th Июнь 2010 в 13:38

Ну что, кто-нибудь уже сделал сайт с этими настраиваемыми типами? А то у меня записи добавляются, но не отображаются на главной, хотя public и publicly_queryable установлены в true. Так же при включенном ЧПУ для настраиваемых типов генерируются неправильные URL’ы.

Avatar

Zyama

10th Август 2010 в 14:03

У меня не выводиться текстовой редактор во вновь создаваемые записи! В чем проблема?

Avatar

Zyama

10th Август 2010 в 20:58

А как вывести на страницу главную эту новую «рубрику» по аналогии wp_list_categories

Avatar

Как сделать цепочку навигации (breadcrump) в WordPress | slaff @ reworked

14th Октябрь 2010 в 19:35

[…] случаи, когда архитектура сайта на WordPress усложнена персонализированными типами постов и […]

Avatar

Erik

1st Ноябрь 2010 в 10:40

Скажите пожалуйста, а куда именно вставлять этот код?
В запись single.php нужно добавить или отдельный шаблон страницы нужно заводить? =)
заранее спасиба=)

Avatar

Про Wordpress — статьи, обзоры, плагины | Блог Константина Советского, beta version 2.0

17th Ноябрь 2010 в 02:04

[…] написал об одной интересной функции, которая будет в версии 3.0, а точнее про настраиваемые […]

Avatar

clayton

30th Ноябрь 2010 в 03:41

Благодарю за хорошую статью, самое подробное что нашел, в русскоязычном интернете. Однако, присоединяюсь к предыдущему посту. Везде пишут «как добавить новый тип записи», но никто не пишет, как в последствии выводить этот тип в темплейте =)
Хотелось бы попросить Вас, исправить это недоразумение)) Интересуют разные варианты.

Avatar

Виктор

20th Декабрь 2010 в 17:48

Не знаю случайны ли ошибки в примерах кода, но он не совсем корректен.
Так, например, в ‘supports’ => по кодексу нет параметра post-thumbnails а есть thumbnails
А для того чтобы у нашего типа записей было содержимое и возможность его редактирования как на скринах нужно добавлять ‘editor’.

А что касается вывода в шаблоне можно вопользоваться
wp_query(«post_type=movies&post_status=publish»)

p.s. Но автору все равно спасибо)

Avatar

Wordpresser

21st Декабрь 2010 в 17:17

Виктор, спасибо за дополнения!

Avatar

Kirill

14th Февраль 2011 в 06:32

У меня тоже не выводиться текстовый редактор, что делать

Avatar

clayton

21st Февраль 2011 в 18:03

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

Кирилл, вы по всей видимости используете расширенные варианты из примера. Для того что бы появился редактор в параметр supports — нужно добавить его поддержку, т.к. в примерах ее нет ‘editor’ — отвечает за вывод редактора.

Avatar

Тимур

3rd Октябрь 2011 в 17:08

Хорошо бы еще написали как корректно все это выводить

Avatar

foolman

20th Ноябрь 2012 в 17:21

Использовал! вроде всё получилось — создал несколько типов записей с новыми рубриками! у меня получилось так, что все записи нового типа выводятся по шаблону:
archive.php. — рубрика записей или перечень всех записей,
page.php — запись!

вопрос следующий — как присвоить шаблон к новой 1й рубрике? как назвать шаблон или где ещё чтото дописать?

Оставить комментарий к "Настраиваемые типы записей в WordPress 3.0"

Наверх