Хотя Wordpress может быть идеальным решением для любого малого бизнеса или блога прямо с самого начала, после процесса установки, у вас все еще остается возможность в значительной степени улучшить систему за счет создания собственных типов записей.

Что же такое собственный тип записи?
WordPress изначально предлагается с двумя типами записей: Post и Page. По умолчанию, записи типа post являются чувствительными ко времени, и время их жизни «на полке» ограничено. Записи типа page считаются долгожителями, и тип этот разработан специально для того, чтобы отмечать им статичный контент типа страницы «О нас» или страницы с контактами.
Но в ваш веб-сайт, основанный на Wordpress, можно добавить собственные типы записей (сколько угодно типов). Например, недавно один наш знакомый закончил работу над сайтом для локального закрытого клуба хоккейной команды. На этом сайте были разработаны страницы-профайлы для каждого игрока. Все эти страницы были отмечены собственным типом записи. Этот тип, наподобие страниц-профайла пользователей, собирает информацию о спортсменах (включая информацию об образовании, атлетические характеристики, а также личную информацию) и предлагает её на странице.
Собственные типы записей могут быть простенькими или сложными, по вашему желанию. Это и делает данную функцию самой важной в системе Wordpress. Посредством нескольких строк кода в файле functions.php вы можете создать новый типа записи в шаблонах Wordpress.
Погодите. Мне нужно писать код? Разве для этого нет плагинов?
Вы можете попробовать поискать подобные плагины, НО! То, что вы сейчас читаете эту статью на нашем сайте, говорит о том, что вы имеете достаточный навык, чтобы собственноручно писать код. Это позволит вам сохранить полноценный контроль над собственными типами записей (где они будут использоваться, что они будут отображать и т.д.). К тому же, если вы продолжите добавлять плагин за плагином, вы рискуете сильно навредить производительности системы. Не стоит использовать слот плагина для такого простого дела.
Каким образом вам поможет это руководство?
Мы впервые задеваем эту тему на нашем сайте, поэтому здесь мы, возможно, охватим суть немного иначе, чем это было в остальных статьях. Мы всё так же постараемся объяснять вам всё, что мы делаем, и почему мы это делаем, а затем мы представим вам весь необходимый код. Нам кажется, что мозг человека работает гораздо производительнее, если он понимает то, на что он смотрит, и что он пытается создать.
Давайте же приступим к созданию собственных типов записей.
Начало
Для начала, вы, вероятно, захотите поставить свежую версию CMS Wordpress на локальный сервер (здесь вы можете прочесть о том, каким образом вы можете поставить систему с MAMP или WAMP), а также вам понадобится редактор текста. Это поможет вам даже если вы гуру Wordpress, и даже если вы знаете о предназначении файла functions.php.
Некоторые разработчики советуют сохранять «мобильность» вашего кода, и из этого мы делаем вывод, что неплохо было бы разместить код нового типа записи в отдельном PHP-файле, а затем включить его в файле functions.php. Это позволит вам не захламлять файл functions.php, и позволит вам использовать новые типы записей сразу на нескольких сайтах.
Так что, вперед, открывайте свой редактор кода, открывайте файл functions.php, и создавайте новый php-файл.
Регистрация нового собственного типа записи
Первое, что нам нужно сделать, это зарегистрировать наш новый тип записи в нашем php-файле, а затем включить его в functions.php. Для более подробной информации о регистрации собственного типа записи, обратитесь к руководству WordPress Codex на предмет register_post_type();. Сначала мы вызываем функцию add_action() с инициализацией и привязкой имени нашей функции.
Как только мы инициализировали тип записи, нужно создать два массива под названиями $labels и $args. Это создаст ярлыки, которые вы будете видеть в админ-панели, а также строку для прямой ссылки (если вы, конечно, используете настройку прямых ссылок).
Наконец, после объявления $lables и $args, мы регистрируем тип записей посредством register_post_type();. Наш код должен быть следующим.
add_action('init', 'athlete_register');
function athlete_register() {
$labels = array(
'name' => _x('Athlete Profiles', 'post type general name'),
'singular_name' => _x('Athlete Profile', 'post type singular name'),
'add_new' => _x('Add New', 'athlete profile'),
'add_new_item' => __('Add New Athlete Profile'),
'edit_item' => __('Edit Athlete Profile'),
'new_item' => __('New Athlete Profile'),
'view_item' => __('View Athlete Profile'),
'search_items' => __('Search Athlete Profiles'),
'not_found' => __('Nothing found'),
'not_found_in_trash' => __('Nothing found in Trash'),
'parent_item_colon' => ''
);
$args = array(
'labels' => $labels,
'public' => true,
'publicly_queryable' => true,
'show_ui' => true,
'query_var' => true,
'menu_icon' => null,
'rewrite' => true,
'capability_type' => 'post',
'hierarchical' => false,
'menu_position' => null,
'supports' => array('title','editor','thumbnail')
);
register_post_type( 'athlete' , $args );
}
Как мы уже упоминали ранее, ознакомьтесь с WordPress Codex для того, чтобы получить более подробное разъяснение по поводу различных аргументов, которые вы можете проводить через $lables и $arg.
Теперь давайте перекинемся на наш файл functions.php и включим в него наш php-файл с новым типом записи. Здесь и происходит волшебство, после которого новый ярлык появляется в админ-панели.
// Add the Custom Post Type
require_once('_/inc/athleteprofile.php');
Как видно по ссылке, использованной в приведенном коде, собственный тип записи в примере называется athleteprofile.php, и расположен он в папке includes. Вернитесь обратно в админ-панель Wordpress, обновите страницу, а затем пригнитесь и насторожитесь! Шутка! Но новый тип записи уже появился!
Готово! Правда ведь, не так уж и сложно?
Во второй части руководства по созданию собственных типов записей мы расскажем вам о создании таксономий для сортировки новых постов по категориям. А также о создании новых пользовательских полей и мета-блоков, сохранении данных вашего нового типа записи в базе WP и использовании полей в шаблоне.
Оставайтесь на связи!