Вывод произвольных типов записей в wordpress

Добавление и вывод произвольных типов записей в wordpress

Создавать пользовательские типы контента в WordPress мы уже научились. Они появились в админ части сайта. Но теперь необходимо вывести их на сайте. О том как вывести на сайте наши кастомные разделы, мы узнаем в этом уроке.

Этот урок является частью цикла уроков, посвященных произвольным типам записей в WordPress. Обязательно посмотрите все уроки из данного цикла. Ссылки на них представлены ниже. Порядок имеет значение. Лучше начинать с первого урока этого цикла, чтобы все было понятно.

Произвольные типы записей и поля:

  1. Добавление произвольных типов записей в WordPress
  2. Вывод произвольных типов записей в WordPress
  3. Добавление произвольных полей к записям в WordPress
  4. Вывод произвольных полей в записях WordPress

 

Вывод (отображение) произвольных типов записей в WordPress

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

1. Создаем страницу отвечающую за вывод постов из кастомного раздела

Берем файл category.php, копируем его и переименовываем в template-films.php. Открываем template-films.php для редактирования и вверху файла пишем следующие строки, чтобы получилось вот так:

<?php
/*
Template Name: Шаблон фильмов
*/

Этим мы задаем имя данному шаблону.

Теперь идем в админку сайта, в раздел Страницы и создаем новую страницу. Даем ей заголовок — Все фильмы, что нибудь напишем в содержании, это неважно. И в правой колонке в блоке «Аттрибуты страницы» выбираем Шаблон «Шаблон фильмов». Публикуем страницу.

Вывод произвольных типов записей в wordpress на сайте

Вывод произвольных типов записей в wordpress на сайте

Проверяем чтобы наша страница отображалась в меню на сайте. Переходим на нее. Сейчас это просто страница и она не выводит записи из раздела Фильмы. Чтобы она выводила произвольные типы записей, необходимо изменить ее шаблон.

Вносим изменения в страницу template-films.php

Находим блок:

<?php if ( have_posts() ) : ?>

И дополняем его, чтобы он стал выглядеть вот так:

<?php 
            $args = array(
                   'post_type' => 'films',
                   'publish' => true,
                   'paged' => get_query_var('paged'),
               );
            
            query_posts($args);

            if ( have_posts() ) : 
?>

Что мы сделали. Мы добавили функцию query_posts(); которая будет обрабатывать посты заданные в переменной $args. А в переменную $args — мы передали массив, которые указывает на то что необходимо выбрать посты из типа постов «films» (псевдоним нашего произвольного типа контента) и чтобы параметр publish у них был true, то есть опубликованные. Также мы указали параметр paged — очень важно указать его именно так, чтобы в будущем когда постов станет больше чем на одну страницу, правильно работала пагинация.

Готово. Если вы все сделали правильно, то задача минимум достигнута. Мы вывели произвольные типы записей — из раздела «Фильмы» на сайте. Дальше можно заняться улучшением и детальной кастомизацией.

2. Вывод произвольных типов записей в отдельном шаблоне

Сейчас записи «Фильмы» выводятся по шаблону content.php. Допустим мы хотим чтобы у фильмов на сайте выводился другой размер миниатюры. Как задать свои размеры для изображений миниатюр в WordPress мы уже знаем. Или нам необходимо просто изменить оформление вывода каталога фильмов, изменив html шаблон вывода каждого фильма.

Для этого в коде ищем строку

get_template_part( 'content', get_post_format() );

и меняем ее на

get_template_part( 'content-films', get_post_format() );

Как видим, мы указали WordPress что теперь для вывода записей нужно брать шаблон content-films.

Теперь необходимо создать этот шаблон content-films.php. Копируем шаблон content.php и переименовываем его в content-films.php. Готово! Теперь наши «Фильмы» выводятся по шаблону content-films.php. Если необходимо изменить размер миниатюры, или изменить сам шаблон то правим файл content-films.php.

3. Шаблон для вывода отдельного материала из произвольного типа записи

Если мы откроем одну из наших записей про фильмы на сайте, то обнаружим, что сейчас она выводится по шаблону single.php, который в свою очередь задействует шаблон content.php. Чтобы изменить шаблон вывода одиночной записи для постов типа films сделаем следующее.

Скопируем файл single.php и переименуем в singel-films.php. Такое название типа single-$posttype.php WordPress автоматически будет использовать для кастомных типов постов. Так как у нас псевдоним раздела Фильмы — films, то соответственно название шаблона должно быть single-films.php.

Откроем созданный singel-films.php и посмотрим его код. Мы можем увидеть такую строку:

<?php get_template_part( 'content', get_post_format() ); ?>

Она говорит о том что все данные поста будут оформляться по шаблону content.php. Но нам этого не нужно. Для этого заменим эту строчку на следующую:

<?php get_template_part( 'content-single-films', get_post_format() ); ?>

Здесь мы переопределили шаблон, заменив его на content-single-films.php

Теперь скопируем content.php и переименуем его в content-single-films.php. Готово. Теперь одиночные посты из раздела «Фильмы» будут выводится по своему собственному шаблону content-single-films.php

 Готово!

Если вы все сделали правильно, то теперь вы имеете на своем сайте собственный раздел для контента, который выводится по своим индивидуальным шаблонам.

 

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

Произвольные типы записей и поля:

  1. Добавление произвольных типов записей в WordPress
  2. Вывод произвольных типов записей в WordPress
  3. Добавление произвольных полей к записям в WordPress
  4. Вывод произвольных полей в записях WordPress