Создание пользовательских типов записей в WordPress

Создание пользовательских типов записей в WordPress | n-wp.ru

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

Некоторые спросят, зачем же создавать отдельный вид записей, если можно просто создать отдельную категорию? Конечно, это дело вкуса – как обозначать запись разного рода на сайте, но обычно пользовательские типы записей создают для создания нескольких потоков записей.

Для создания пользовательского типа записей нужно добавить в файл functions.php:

add_action( 'init', 'create_post_type' );
function create_post_type() {
register_post_type( 'portfolio',
         array(
                'labels' => array( // добавляем новые элементы в административную частьку
                'name' => __( 'Портфолио' ),
                'singular_name' => __( 'Работа' ),
                'has_archive' => true,
                'add_new' => 'Добавить новую работу',
                'not_found' => 'Ничего не найдено',
                'not_found_in_trash' => 'В корзине работ не найдено'
                ),
                'public' => true,
                'has_archive' => true,
                'supports' => array( //добавляем элементы в редактор
                    'title',
                    'editor',
                    'author',
                    'trackbacks',
                    'thumbnail',
                    'page-attributes',
                    'post-formats',
                    'custom-fields'
                ),
               'taxonomies' => array('category', 'post_tag') //добавляем к записям необходимый набор таксономий
           ));
}

В данном примере код регистрирует пользовательский тип записей Портфолио.

Создание пользовательских типов записей в WordPress

Для вывода записей типа Портфолио вместе с другими записями блога на главной странице нужно добавить в файл functions.php:

add_filter( 'pre_get_posts', 'my_get_posts' );
function my_get_posts( $query ) {
     if ( ( is_home() && false == $query->query_vars['suppress_filters'] ) || is_feed() )
     $query->set( 'post_type', array( 'post', 'portfolio' ) );
     return $query;
}

Для того, чтобы записи пользовательского типа попадали в общую ленту RSS, в файл functions.php нужно еще добавить:

function rss_mod($args) {
  if (isset($args['feed']) && !isset($args['post_type']))
    $args['post_type'] = array('post', 'portfolio');
  return $args;
}
add_filter('request', 'rss_mod');

Чтобы создать отдельный поток записей пользовательского типа, нужно добавить в файл functions.php:

add_filter('pre_get_posts', 'query_post_type');
function query_post_type($query) {
     if(is_category() || is_tag()) {
     $post_type = get_query_var('post_type');
     if($post_type)
     $post_type = $post_type;
else
     $post_type = array('post','portfolio');  
     $query->set('post_type',$post_type);
     return $query;
}}

Этот код создает архив записей Портфолио, у которого есть своя ссылка: вашсайт.name/portfolio/

У записи пользовательского типа должен быть свой шаблон – файл, отвечающий за то, как выглядит такая запись. Этот файл легко создать копированием файла single.php. В приведенных выше примерах создается пользовательский тип записей Портфолио (ярлык – portfolio), давайте создадим для него шаблон. Для этого нужно скопировать файл single.php и переименовать его в single-portfolio.php.

Правило создания шаблона для пользовательского типа записей таково: single-ЯРЛЫК_ШАБЛОНА.php. Если этот файл не существует, то WordPress будет использовать для отображения записей пользовательского типа шаблон single.php. Подробнее о шаблонах в WordPress и их иерархии.

Автор tiaurus 2182 Articles
Являюсь создателем n-wp.ru — блога о WordPress для новичков. Мне интересно многое, поэтому еще я сделал 123-box.ru — блог о программах для Windows, и tiaurus.info — блог о красоте.

5 Комментарии

  1. Подскажите, вот строка ‘taxonomies’ => array(‘category’, ‘post_tag’) она не показывает разделы в колонке, если у нас таксономия тоже не стандартная, что делать? пробовал вписать ‘taxonomies’ => array(‘gallery_tax’), но тоже не работает (

  2. Приветствую! Есть шаблон для вывода пользовательских типов записей у меня archive-products.php а для категорий этого типа записей как сделать шаблон? Сейчас используется archive.php Спасибо!

Оставить комментарий

Ваш электронный адрес не будет опубликован.


*